mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			167 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| include/master-slave.inc
 | |
| [connection master]
 | |
| connection server_2;
 | |
| call mtr.add_suppression("Timeout waiting for reply of binlog");
 | |
| # Master server_1 and Slave server_2 initialization ...
 | |
| connection server_2;
 | |
| include/stop_slave.inc
 | |
| connection server_1;
 | |
| RESET MASTER;
 | |
| set @@session.gtid_domain_id=10;
 | |
| set @@global.rpl_semi_sync_master_enabled = 1;
 | |
| set @@global.rpl_semi_sync_master_wait_point=AFTER_SYNC;
 | |
| connection server_2;
 | |
| RESET MASTER;
 | |
| ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
 | |
| set @@session.gtid_domain_id=20;
 | |
| set @@global.rpl_semi_sync_slave_enabled = 1;
 | |
| # a 1948 warning is expected
 | |
| set @@global.gtid_slave_pos = "";
 | |
| Warnings:
 | |
| Warning	1948	Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-1. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
 | |
| CHANGE MASTER TO master_use_gtid= slave_pos;
 | |
| include/start_slave.inc
 | |
| # server_1 -> server_2 semisync link is set up.
 | |
| connection server_1;
 | |
| CREATE TABLE t1 (a INT PRIMARY KEY, b INT default 0) ENGINE=Innodb;
 | |
| INSERT INTO t1(a) VALUES (1);
 | |
| include/save_master_gtid.inc
 | |
| connection server_2;
 | |
| include/sync_with_master_gtid.inc
 | |
| # Circular configuration server_1 -> server_2 -> server_1 ...
 | |
| connection server_1;
 | |
| set @@global.gtid_strict_mode = true;
 | |
| set @@global.rpl_semi_sync_slave_enabled = 1;
 | |
| CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_2, master_user='root', master_ssl_verify_server_cert=0, master_use_gtid=SLAVE_POS;
 | |
| include/start_slave.inc
 | |
| ... is done.
 | |
| ## A. no out-of-order gtid error for own transaction made round trip
 | |
| connection server_2;
 | |
| set @@global.gtid_strict_mode = true;
 | |
| set @@global.rpl_semi_sync_master_enabled = 1;
 | |
| INSERT INTO t1(a) VALUES (2);
 | |
| include/save_master_gtid.inc
 | |
| connection server_1;
 | |
| include/stop_slave.inc
 | |
| include/start_slave.inc
 | |
| #
 | |
| # the successful sync is a required proof
 | |
| #
 | |
| include/sync_with_master_gtid.inc
 | |
| update t1 set b=b+1 where a=2;
 | |
| include/save_master_gtid.inc
 | |
| connection server_2;
 | |
| include/sync_with_master_gtid.inc
 | |
| # Post-execution state check on both servers synchronized with each other
 | |
| connection server_1;
 | |
| # ... the gtid states on server_1
 | |
| SHOW VARIABLES LIKE 'gtid_slave_pos';
 | |
| Variable_name	Value
 | |
| gtid_slave_pos	0-2-1,10-1-3,20-2-1
 | |
| SHOW VARIABLES LIKE 'gtid_binlog_pos';
 | |
| Variable_name	Value
 | |
| gtid_binlog_pos	0-2-1,10-1-3,20-2-1
 | |
| SELECT * from t1;
 | |
| a	b
 | |
| 1	0
 | |
| 2	1
 | |
| connection server_2;
 | |
| # The gtid states on server_2 must be equal to ...
 | |
| SHOW VARIABLES LIKE 'gtid_binlog_pos';
 | |
| Variable_name	Value
 | |
| gtid_binlog_pos	0-2-1,10-1-3,20-2-1
 | |
| SHOW VARIABLES LIKE 'gtid_slave_pos';
 | |
| Variable_name	Value
 | |
| gtid_slave_pos	0-2-1,10-1-3,20-2-1
 | |
| SELECT * from t1;
 | |
| a	b
 | |
| 1	0
 | |
| 2	1
 | |
| ## B. out-of-order gtid error for a "foreign" server-id transaction
 | |
| connection server_1;
 | |
| set statement sql_log_bin=0 for call mtr.add_suppression("Slave: An attempt was made to binlog GTID 10-2-4");
 | |
| set @@session.server_id=2;
 | |
| INSERT INTO t1(a) VALUES (3);
 | |
| set @@session.server_id=default;
 | |
| include/save_master_gtid.inc
 | |
| connection server_2;
 | |
| include/sync_with_master_gtid.inc
 | |
| INSERT INTO t1(a) VALUES (4);
 | |
| include/save_master_gtid.inc
 | |
| connection server_1;
 | |
| include/wait_for_slave_sql_error.inc [errno=1950]
 | |
| set sql_slave_skip_counter=1;
 | |
| include/start_slave.inc
 | |
| include/sync_with_master_gtid.inc
 | |
| connection server_2;
 | |
| set statement sql_log_bin=0 for call mtr.add_suppression("Slave: An attempt was made to binlog GTID 20-1-3");
 | |
| set @@session.server_id=1;
 | |
| INSERT INTO t1(a) VALUES (5);
 | |
| set @@session.server_id=default;
 | |
| include/save_master_gtid.inc
 | |
| connection server_1;
 | |
| include/sync_with_master_gtid.inc
 | |
| INSERT INTO t1(a) VALUES (6);
 | |
| include/save_master_gtid.inc
 | |
| connection server_2;
 | |
| include/wait_for_slave_sql_error.inc [errno=1950]
 | |
| set sql_slave_skip_counter=1;
 | |
| include/start_slave.inc
 | |
| include/sync_with_master_gtid.inc
 | |
| # Post-execution state check on both servers synchronized with each other
 | |
| connection server_1;
 | |
| # ... the gtid states on server_1
 | |
| SHOW VARIABLES LIKE 'gtid_slave_pos';
 | |
| Variable_name	Value
 | |
| gtid_slave_pos	0-2-1,10-1-5,20-1-3
 | |
| SHOW VARIABLES LIKE 'gtid_binlog_pos';
 | |
| Variable_name	Value
 | |
| gtid_binlog_pos	0-2-1,10-1-5,20-1-3
 | |
| SELECT * from t1;
 | |
| a	b
 | |
| 1	0
 | |
| 2	1
 | |
| 3	0
 | |
| 4	0
 | |
| 5	0
 | |
| 6	0
 | |
| connection server_2;
 | |
| include/sync_with_master_gtid.inc
 | |
| # The gtid states on server_2 must be equal to ...
 | |
| SHOW VARIABLES LIKE 'gtid_binlog_pos';
 | |
| Variable_name	Value
 | |
| gtid_binlog_pos	0-2-1,10-1-5,20-1-3
 | |
| SHOW VARIABLES LIKE 'gtid_slave_pos';
 | |
| Variable_name	Value
 | |
| gtid_slave_pos	0-2-1,10-1-5,20-1-3
 | |
| SELECT * from t1;
 | |
| a	b
 | |
| 1	0
 | |
| 2	1
 | |
| 3	0
 | |
| 4	0
 | |
| 5	0
 | |
| 6	0
 | |
| #
 | |
| # Cleanup
 | |
| #
 | |
| connection server_1;
 | |
| DROP TABLE t1;
 | |
| include/save_master_gtid.inc
 | |
| connection server_2;
 | |
| include/sync_with_master_gtid.inc
 | |
| connection server_1;
 | |
| include/stop_slave.inc
 | |
| set @@global.rpl_semi_sync_master_enabled = default;
 | |
| set @@global.rpl_semi_sync_slave_enabled = default;
 | |
| set @@global.rpl_semi_sync_master_wait_point=default;
 | |
| set @@global.gtid_ignore_duplicates = default;
 | |
| set @@global.gtid_strict_mode = default;
 | |
| connection server_2;
 | |
| include/stop_slave.inc
 | |
| set @@global.gtid_ignore_duplicates = default;
 | |
| set @@global.rpl_semi_sync_master_enabled = default;
 | |
| set @@global.rpl_semi_sync_slave_enabled = default;
 | |
| set @@global.gtid_strict_mode = default;
 | |
| include/start_slave.inc
 | |
| include/rpl_end.inc
 | 
