--source include/master-slave.inc --source include/not_embedded.inc --source include/have_debug.inc --echo # Connecting to master... connection master; CREATE DATABASE db1; CREATE DATABASE db2; 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'); USE db2; CREATE TABLE t21 (id INT); CREATE TABLE t22 (a CHAR (10)); INSERT INTO t21 VALUES (3), (4); INSERT INTO t22 VALUES ('c'), ('d'); --echo # Remove all entries in the backup logs. FLUSH BACKUP LOGS; PURGE BACKUP LOGS; --echo # connecting to slave... sync_slave_with_master; connection slave; --echo # Check the server option --binlog-do-db=db1 works SELECT * FROM db1.t11; SELECT * FROM db1.t12; --echo # The selects from db2 & db3 will not work as they are ignored --echo # for replication --error ER_NO_SUCH_TABLE SELECT * FROM db2.t21; --error ER_NO_SUCH_TABLE SELECT * FROM db2.t22; --echo # connecting to master again Connection master; --echo # Perform backup --replace_column 1 # BACKUP DATABASE db1 to 'db1.bak'; --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 Connection slave; --replace_result $MASTER_MYPORT MASTER_PORT --replace_column 1 # 6 # 7 # 8 # 9 # 22 # 23 # 33 # --query_vertical SHOW SLAVE STATUS; --echo # See for any error that has occured because of incident event --echo # (you will not see any) 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; --echo # Conencting to master again to check replication is ON connection master; USE db1; INSERT INTO db1.t11 VALUES(10,'pp'),(11,'kiy'); USE db2; INSERT INTO db2.t21 VALUES(4),(9); SELECT * FROM db1.t11; SELECT * FROM db2.t21; sync_slave_with_master; connection slave; SELECT * FROM db1.t11; --error ER_NO_SUCH_TABLE SELECT * FROM db2.t21; --echo # Cleanup --echo # Connecting to master... connection master; FLUSH BACKUP LOGS; PURGE BACKUP LOGS; DROP DATABASE db1; DROP DATABASE db2; --echo # Connecting to slave... connection slave; FLUSH BACKUP LOGS; PURGE BACKUP LOGS;