1
2function backup() {
3  mkdir $topdir/binlog-dir1
4  mkdir $topdir/binlog-dir2
5
6  start_server $*
7
8  mysql -e "SHOW VARIABLES LIKE 'log%'";
9
10  mysql -e "CREATE TABLE t (a INT) engine=InnoDB" test
11  mysql -e "INSERT INTO t (a) VALUES (1), (2), (3)" test
12
13  xtrabackup --backup --target-dir=$topdir/backup
14  xtrabackup --prepare --apply-log-only --target-dir=$topdir/backup
15
16  mysql -e "INSERT INTO t (a) VALUES (1), (2), (3)" test
17
18  xtrabackup --backup --target-dir=$topdir/backup1 --incremental-basedir=$topdir/backup
19  xtrabackup --prepare --incremental-dir=$topdir/backup1 --target-dir=$topdir/backup
20
21  stop_server
22
23  rm -rf $mysql_datadir
24  rm -rf $topdir/binlog-dir1
25  rm -rf $topdir/binlog-dir2
26}
27
28function restore() {
29  xtrabackup --copy-back --target-dir=$topdir/backup $*
30
31  cd $mysql_datadir
32  for file in $FILES ; do
33    if ! [ -f $file ] ; then
34      die "File $file is not found!"
35    fi
36  done
37  cd -
38
39  start_server $*
40
41  mysql -e "SELECT * FROM t" test
42
43  stop_server
44
45  rm -rf $mysql_datadir
46  rm -rf $topdir/binlog-dir1
47  rm -rf $topdir/binlog-dir2
48  rm -rf $topdir/backup
49  rm -rf $topdir/backup1
50}
51
52function backup_restore() {
53    backup $*
54    restore $*
55}
56
57vlog "------- TEST 1 -------"
58FILES=""
59backup_restore --skip-log-bin
60
61vlog "------- TEST 2 -------"
62FILES="mysql-bin.index mysql-bin.000004"
63backup_restore --log-bin
64
65vlog "------- TEST 3 -------"
66FILES="binlog123.index binlog123.000003"
67backup_restore --log-bin=binlog123
68
69vlog "------- TEST 4 -------"
70FILES="binlog898.index binlog123.000003"
71backup_restore --log-bin=binlog123 --log-bin-index=binlog898
72
73vlog "------- TEST 5 -------"
74FILES="binlog898.index binlog123.000003"
75backup_restore --log-bin=binlog123 --log-bin-index=binlog898.index
76
77vlog "------- TEST 6 -------"
78FILES="log.index $topdir/binlog-dir1/bin.000003"
79backup_restore --log-bin=$topdir/binlog-dir1/bin --log-bin-index=log
80
81vlog "------- TEST 7 -------"
82FILES="$topdir/binlog-dir1/idx.index binlog-abcd.000003"
83backup_restore --log-bin=binlog-abcd --log-bin-index=$topdir/binlog-dir1/idx
84
85vlog "------- TEST 8 -------"
86FILES="$topdir/binlog-dir2/idx.index $topdir/binlog-dir1/bin.000003"
87backup_restore --log-bin=$topdir/binlog-dir1/bin --log-bin-index=$topdir/binlog-dir2/idx
88
89vlog "------- TEST 9 -------"
90FILES="$topdir/binlog-dir2/idx.index $topdir/binlog-dir1/bin.000003"
91backup_restore --log-bin=$topdir/binlog-dir1/bin --log-bin-index=$topdir/binlog-dir2/idx.index
92
93vlog "------- TEST 10 -------"
94FILES="$topdir/binlog-dir1/bin.index $topdir/binlog-dir1/bin.000003"
95backup_restore --log-bin=$topdir/binlog-dir1/bin
96
97
98# do the same, but with updating my.cnf
99
100vlog "------- TEST 101 -------"
101MYSQLD_EXTRA_MY_CNF_OPTS="
102skip-log-bin
103"
104FILES=""
105backup_restore
106
107vlog "------- TEST 102 -------"
108MYSQLD_EXTRA_MY_CNF_OPTS="
109log-bin
110"
111FILES="mysql-bin.index mysql-bin.000004"
112backup_restore
113
114vlog "------- TEST 103 -------"
115MYSQLD_EXTRA_MY_CNF_OPTS="
116log-bin=binlog123
117"
118FILES="binlog123.index binlog123.000004"
119backup_restore
120
121vlog "------- TEST 104 -------"
122MYSQLD_EXTRA_MY_CNF_OPTS="
123log-bin=binlog123
124log-bin-index=binlog898
125"
126FILES="binlog898.index binlog123.000004"
127backup_restore
128
129vlog "------- TEST 105 -------"
130MYSQLD_EXTRA_MY_CNF_OPTS="
131log-bin=binlog123
132log-bin-index=binlog898.index
133"
134FILES="binlog898.index binlog123.000004"
135backup_restore
136
137vlog "------- TEST 106 -------"
138MYSQLD_EXTRA_MY_CNF_OPTS="
139log-bin=$topdir/binlog-dir1/bin
140log-bin-index=log
141"
142FILES="log.index $topdir/binlog-dir1/bin.000004"
143backup_restore
144
145vlog "------- TEST 107 -------"
146MYSQLD_EXTRA_MY_CNF_OPTS="
147log-bin=binlog-abcd
148log-bin-index=$topdir/binlog-dir1/idx
149"
150FILES="$topdir/binlog-dir1/idx.index binlog-abcd.000004"
151backup_restore
152
153vlog "------- TEST 108 -------"
154MYSQLD_EXTRA_MY_CNF_OPTS="
155log-bin=$topdir/binlog-dir1/bin
156log-bin-index=$topdir/binlog-dir2/idx
157"
158FILES="$topdir/binlog-dir2/idx.index $topdir/binlog-dir1/bin.000004"
159backup_restore
160
161vlog "------- TEST 109 -------"
162MYSQLD_EXTRA_MY_CNF_OPTS="
163log-bin=$topdir/binlog-dir1/bin
164log-bin-index=$topdir/binlog-dir2/idx.index
165"
166FILES="$topdir/binlog-dir2/idx.index $topdir/binlog-dir1/bin.000004"
167backup_restore
168
169vlog "------- TEST 110 -------"
170MYSQLD_EXTRA_MY_CNF_OPTS="
171log-bin=$topdir/binlog-dir1/bin
172"
173FILES="$topdir/binlog-dir1/bin.index $topdir/binlog-dir1/bin.000004"
174backup_restore --log-bin=$topdir/binlog-dir1/bin
175
176
177# PXB-1810 - restore binlog to the different location
178
179vlog "------- TEST 201 -------"
180MYSQLD_EXTRA_MY_CNF_OPTS="
181log-bin=$topdir/binlog-dir1/bin
182log-bin-index=$topdir/binlog-dir1/idx
183"
184FILES="idx.index bin.000004"
185backup
186restore --log-bin=bin --log-bin-index=idx
187
188vlog "------- TEST 202 -------"
189MYSQLD_EXTRA_MY_CNF_OPTS="
190log-bin=bin
191log-bin-index=idx
192"
193FILES="logidx.index logbin.000004"
194backup
195restore --log-bin=logbin --log-bin-index=logidx
196
197vlog "------- TEST 203 -------"
198MYSQLD_EXTRA_MY_CNF_OPTS="
199log-bin=$topdir/binlog-dir1/bin
200log-bin-index=$topdir/binlog-dir1/bin
201"
202FILES="$topdir/binlog-dir2/bin.index $topdir/binlog-dir1/logbin.000004"
203backup
204restore --log-bin=$topdir/binlog-dir1/logbin --log-bin-index=$topdir/binlog-dir2/bin.index
205