mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			180 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			180 lines
		
	
	
	
		
			5.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| --source include/have_debug.inc
 | |
| --source include/have_debug_sync.inc
 | |
| --source include/have_binlog_format_row.inc
 | |
| --source include/have_innodb.inc
 | |
| --source include/master-slave.inc
 | |
| 
 | |
| connection master;
 | |
| set @old_master_binlog_checksum= @@global.binlog_checksum;
 | |
| 
 | |
| # MDEV-4475: Cannot replicate to old server when binlog contains
 | |
| # empty Gtid_list event
 | |
| #
 | |
| # Test this by binlog rotation before we log any GTIDs.
 | |
| sync_slave_with_master;
 | |
| 
 | |
| # Need to stop/start the master without GTID before setting debug_dbug
 | |
| --source include/stop_slave.inc
 | |
| CHANGE MASTER TO MASTER_USE_GTID=NO;
 | |
| --source include/start_slave.inc
 | |
| 
 | |
| --connection master
 | |
| --echo # Ensure only the new binlog dump thread is alive (wait for the old one
 | |
| --echo # to complete its kill)
 | |
| --let $wait_condition= select count(*)=1 from information_schema.processlist where command='Binlog Dump'
 | |
| --source include/wait_condition.inc
 | |
| 
 | |
| --echo # And that it has already sent its fake rotate
 | |
| --let $wait_condition= select count(*)=1 from information_schema.processlist where state LIKE '%Master has sent all binlog to slave%' and command='Binlog Dump'
 | |
| --source include/wait_condition.inc
 | |
| 
 | |
| 
 | |
| --connection slave
 | |
| --source include/stop_slave.inc
 | |
| --echo # Test slave with no capability gets dummy event, which is ignored.
 | |
| set @old_dbug= @@global.debug_dbug;
 | |
| SET @@global.debug_dbug='+d,simulate_slave_capability_none';
 | |
| --source include/start_slave.inc
 | |
| 
 | |
| connection master;
 | |
| FLUSH LOGS;
 | |
| --source include/wait_for_binlog_checkpoint.inc
 | |
| CREATE TABLE t1 (a INT PRIMARY KEY);
 | |
| INSERT INTO t1 VALUES (0);
 | |
| sync_slave_with_master;
 | |
| 
 | |
| connection master;
 | |
| # Add a dummy event just to have something to sync_slave_with_master on.
 | |
| # Otherwise we occasionally get different $relaylog_start, depending on
 | |
| # whether Format_description_log_event was written to relay log or not
 | |
| # at the time of SHOW SLAVE STATUS.
 | |
| ALTER TABLE t1 ORDER BY a;
 | |
| sync_slave_with_master;
 | |
| connection slave;
 | |
| let $relaylog_start= query_get_value(SHOW SLAVE STATUS, Relay_Log_Pos, 1);
 | |
| 
 | |
| connection master;
 | |
| SET SESSION binlog_annotate_row_events = ON;
 | |
| let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
 | |
| let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
 | |
| # A short event, to test when we need to use user_var_event for dummy event.
 | |
| DELETE FROM t1;
 | |
| INSERT INTO t1 /* A comment just to make the annotate event sufficiently long that the dummy event will need to get padded with spaces so that we can test that this works */ VALUES(1);
 | |
| let $binlog_limit= 0, 10;
 | |
| --source include/show_binlog_events.inc
 | |
| sync_slave_with_master;
 | |
| connection slave;
 | |
| 
 | |
| SELECT * FROM t1;
 | |
| let $binlog_file= query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1);
 | |
| let $binlog_start= $relaylog_start;
 | |
| let $binlog_limit=0,10;
 | |
| --source include/show_relaylog_events.inc
 | |
| set @@global.debug_dbug= @old_dbug;
 | |
| 
 | |
| --echo # Test dummy event is checksummed correctly.
 | |
| 
 | |
| connection master;
 | |
| set @@global.binlog_checksum = CRC32;
 | |
| --source include/wait_for_binlog_checkpoint.inc
 | |
| TRUNCATE t1;
 | |
| let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
 | |
| let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
 | |
| INSERT INTO t1 VALUES(2);
 | |
| let $binlog_limit= 0, 5;
 | |
| --source include/show_binlog_events.inc
 | |
| sync_slave_with_master;
 | |
| connection slave;
 | |
| 
 | |
| SELECT * FROM t1;
 | |
| let $binlog_file= query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1);
 | |
| let $binlog_start= 0;
 | |
| let $binlog_limit=7,5;
 | |
| --source include/show_relaylog_events.inc
 | |
| 
 | |
| 
 | |
| --echo *** MDEV-5754: MySQL 5.5 slaves cannot replicate from MariaDB 10.0 ***
 | |
| 
 | |
| # The problem was that for a group commit, we get commit id into the
 | |
| # GTID event, and there was a bug in the code that replaces GTID with
 | |
| # dummy that failed when commit id was present.
 | |
| #
 | |
| # So setup a group commit in InnoDB.
 | |
| 
 | |
| --connection master
 | |
| CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
 | |
| # MDEV-515 takes X-lock on the table for the first insert.
 | |
| # So concurrent insert won't happen on the table
 | |
| INSERT INTO t2 VALUES(100);
 | |
| let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
 | |
| let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
 | |
| 
 | |
| --connect (con1,127.0.0.1,root,,test,$SERVER_MYPORT_1,)
 | |
| SET debug_sync='commit_after_release_LOCK_prepare_ordered SIGNAL master_queued1 WAIT_FOR master_cont1';
 | |
| send INSERT INTO t2 VALUES (1);
 | |
| 
 | |
| --connection master
 | |
| SET debug_sync='now WAIT_FOR master_queued1';
 | |
| 
 | |
| --connect (con2,127.0.0.1,root,,test,$SERVER_MYPORT_1,)
 | |
| SET debug_sync='commit_after_release_LOCK_prepare_ordered SIGNAL master_queued2';
 | |
| send INSERT INTO t2 VALUES (2);
 | |
| 
 | |
| --connection master
 | |
| SET debug_sync='now WAIT_FOR master_queued2';
 | |
| SET debug_sync='now SIGNAL master_cont1';
 | |
| 
 | |
| --connection con1
 | |
| REAP;
 | |
| SET debug_sync='RESET';
 | |
| --connection con2
 | |
| REAP;
 | |
| SET debug_sync='RESET';
 | |
| --connection master
 | |
| SET debug_sync='RESET';
 | |
| let $binlog_limit= 0, 10;
 | |
| --source include/show_binlog_events.inc
 | |
| --save_master_pos
 | |
| 
 | |
| --connection slave
 | |
| --sync_with_master
 | |
| SELECT * FROM t2 ORDER BY a;
 | |
| 
 | |
| 
 | |
| --echo # Test that slave which cannot tolerate holes in binlog stream but
 | |
| --echo # knows the event does not get dummy event
 | |
| 
 | |
| --source include/stop_slave.inc
 | |
| SET @@global.debug_dbug='+d,simulate_slave_capability_old_53';
 | |
| --source include/start_slave.inc
 | |
| connection master;
 | |
| ALTER TABLE t1 ORDER BY a;
 | |
| sync_slave_with_master;
 | |
| connection slave;
 | |
| let $relaylog_start= query_get_value(SHOW SLAVE STATUS, Relay_Log_Pos, 1);
 | |
| 
 | |
| connection master;
 | |
| let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
 | |
| let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
 | |
| UPDATE t1 SET a = 3;
 | |
| let $binlog_limit= 0, 5;
 | |
| --source include/show_binlog_events.inc
 | |
| sync_slave_with_master;
 | |
| connection slave;
 | |
| 
 | |
| SELECT * FROM t1;
 | |
| let $binlog_file= query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1);
 | |
| let $binlog_start= $relaylog_start;
 | |
| let $binlog_limit=0,5;
 | |
| --source include/show_relaylog_events.inc
 | |
| 
 | |
| select @@global.log_slave_updates;
 | |
| select @@global.replicate_annotate_row_events;
 | |
| 
 | |
| --echo Clean up.
 | |
| connection master;
 | |
| set @@global.binlog_checksum = @old_master_binlog_checksum;
 | |
| DROP TABLE t1, t2;
 | |
| sync_slave_with_master;
 | |
| set @@global.debug_dbug= @old_dbug;
 | |
| --source include/rpl_end.inc
 | 
