--source include/master-slave.inc --source include/not_embedded.inc --source include/have_debug.inc connection master; --echo # Get master's datadir. let $MYSQLD_M_DATADIR= `select @@datadir`; CREATE DATABASE db1; USE db1; CREATE TABLE t11(id INT NOT NULL PRIMARY KEY, name VARCHAR(10)); CREATE TABLE t12(a CHAR(5)); INSERT INTO t11 VALUES(1,'jon'),(2,'jil'),(5,'jack'),(6,'ku'); INSERT INTO t12 VALUES('a'),('b'); --echo # Exercise all objects in master before performing backup USE db1; SELECT * FROM db1.t11 ORDER BY id; SELECT * FROM db1.t12; --echo # connecting to slave... sync_slave_with_master; connection slave; --echo # Get slave's datadir. let $MYSQLD_S_DATADIR= `select @@datadir`; --echo # Remove all entries in the backup logs. FLUSH BACKUP LOGS; PURGE BACKUP LOGS; --echo # ------------------- START TESTS ----------------------------- --echo --echo # EXECUTE BACKUP OF db1 --echo # Connecting to master .. Connection master; --echo # Perform backup --replace_column 1 # BACKUP DATABASE db1 to 'db1.bak'; --echo # Connecting to master and perform restore of database db1 Connection master; --echo # Get master's binlog position before restore. let $master_before_pos = query_get_value("SHOW MASTER STATUS", Position, 1); --replace_column 1 # RESTORE FROM 'db1.bak' OVERWRITE; --echo # Check the master status for incident event that is generated SHOW MASTER STATUS; --echo # Show the incident event issued as a result of restore. --replace_column 2 # 5 # --disable_query_log eval SHOW BINLOG EVENTS FROM $master_before_pos; --enable_query_log --echo # Connecting to slave and checking if it has stopped replication as a --echo # result of incident event generation Connection slave; source include/wait_for_slave_sql_to_stop.inc; --replace_result $MASTER_MYPORT MASTER_PORT --replace_column 1 # 6 # 7 # 8 # 9 # 10 # 22 # 23 # 33 # --query_vertical SHOW SLAVE STATUS; --echo # Show that slave stopped with an error as a result of incident event --echo # generated by RESTORE in master. LET $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); disable_query_log; eval SELECT "$last_error" AS Last_SQL_Error; enable_query_log; SET global sql_slave_skip_counter=1; STOP SLAVE; --source include/wait_for_slave_to_stop.inc START SLAVE; --source include/wait_for_slave_to_start.inc STOP SLAVE; --remove_file $MYSQLD_M_DATADIR/db1.bak connection master; DROP DATABASE db1; connection slave; DROP DATABASE db1;