GIF89a;
Direktori : /usr/share/mysql-test/extra/rpl_tests/ |
Current File : //usr/share/mysql-test/extra/rpl_tests/rpl_log.test |
# Requires statement logging # Clean up old slave's binlogs. # The slave is started with --log-slave-updates # and this test does SHOW BINLOG EVENTS on the slave's # binlog. But previous tests can influence the current test's # binlog (e.g. a temporary table in the previous test has not # been explicitly deleted, and at the beginning of the current # test the slave immediately writes DROP TEMPORARY TABLE this_old_table). # We wait for the slave to have written all he wants to the binlog # (otherwise RESET MASTER may come too early). --source include/sync_slave_sql_with_master.inc source include/stop_slave.inc; --source include/wait_for_slave_to_stop.inc reset master; reset slave; start slave; --source include/wait_for_slave_to_start.inc let $VERSION=`select version()`; connection master; eval create table t1(n int not null auto_increment primary key)ENGINE=$engine_type; insert into t1 values (NULL); drop table t1; let $LOAD_FILE= ../../std_data/words.dat; if (!`SELECT length(load_file('$LOAD_FILE'))`){ let $LOAD_FILE= ../$LOAD_FILE; } eval create table t1 (word char(20) not null)ENGINE=$engine_type; --replace_result $LOAD_FILE LOAD_FILE eval load data infile '$LOAD_FILE' into table t1 ignore 1 lines; select count(*) from t1; source include/show_binlog_events.inc; let $binlog_limit= 1; if (!`SELECT COUNT(*) = 0 OR VARIABLE_VALUE != 'ON' FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'GTID_MODE'`) { # if GTID_MODE=ON, there is the extra event entry the binary log: Gtid_log_event --let $binlog_limit= 2,1 } source include/show_binlog_events.inc; --let $from_event= 1 --let $number_of_events= 4 if (!`SELECT COUNT(*) = 0 OR VARIABLE_VALUE != 'ON' FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'GTID_MODE'`) { # if GTID_MODE=ON, there is the extra event entry the binary log: Gtid_log_event --let $from_event= `SELECT $from_event * 2 + 1` --let $number_of_events= `SELECT $number_of_events * 2 - 2` } let $binlog_limit= $from_event,$number_of_events; source include/show_binlog_events.inc; let $binlog_limit=; flush logs; # We need an extra update before doing save_master_pos. # Otherwise, an unlikely scenario may occur: # * When the master's binlog_dump thread reads the end of master-bin.001, # it send the rotate event which is at this end, plus a fake rotate event # because it's starting to read a new binlog. # save_master_pos will record the position of the first of the two rotate # (because the fake one is not in the master's binlog anyway). # * Later the slave waits for the position of the first rotate event, # and it may quickly stop (in 'slave stop') without having received the fake # one. # So, depending on a few milliseconds, we end up with 2 rotate events in the # relay log or one, which influences the output of SHOW SLAVE STATUS, making # it not predictable and causing random test failures. # To make it predictable, we do a useless update now, but which has the # interest of making the slave catch both rotate events. eval create table t3 (a int)ENGINE=$engine_type; # Sync slave and force it to start on another binary log #show rows of t1 on master connection master; select * from t1 order by 1 asc; --source include/sync_slave_sql_with_master.inc #check t1 on slave to ensure whether it's identical with on master select * from t1 order by 1 asc; flush logs; source include/stop_slave.inc; source include/start_slave.inc; connection master; # Create some entries for second log eval create table t2 (n int)ENGINE=$engine_type; insert into t2 values (1); source include/show_binlog_events.inc; let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1); source include/show_binlog_events.inc; --replace_column 2 # show binary logs; --source include/sync_slave_sql_with_master.inc --replace_column 2 # show binary logs; let $binlog_file=; source include/show_binlog_events.inc; let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1); source include/show_binlog_events.inc; let $binlog_file=; source include/check_slave_is_running.inc; # Need to recode the following #show new master for slave with master_log_file='master-bin.000001' and master_log_pos=4 and master_server_id=1; #show new master for slave with master_log_file='master-bin.000001' and master_log_pos=79 and master_server_id=1; #show new master for slave with master_log_file='master-bin.000001' and master_log_pos=311 and master_server_id=1; #show new master for slave with master_log_file='master-bin.000002' and master_log_pos=4 and master_server_id=1; #show new master for slave with master_log_file='master-bin.000002' and master_log_pos=122 and master_server_id=1; --error 1220 show binlog events in 'slave-bin.000005' from 4; connection master; # The table drops caused Cluster Replication wrapper to fail as event ID would never be the same.# Moving drops here. DROP TABLE t1; DROP TABLE t2; DROP TABLE t3; # # Bug #6880: LAST_INSERT_ID() within a statement # # Reset binlog so that show binlog events will not show the tests # above. source include/rpl_reset.inc; connection master; create table t1(a int auto_increment primary key, b int); insert into t1 values (NULL, 1); set insert_id=5; insert into t1 values (NULL, last_insert_id()), (NULL, last_insert_id()); source include/show_binlog_events.inc; select * from t1; drop table t1; # End of 4.1 tests --source include/sync_slave_sql_with_master.inc