mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
416aed25ed
The problem was the Gtid_list event which is logged to the binlog in 10.0 and is not understood by the 5.5 server. This event is supposed to be replaced with a dummy event for 5.5 servers. But the very first event logged in the very first binlog has an empty list of GTID, which makes the event too short to be replacable with an empty event. The fix is to pad the empty Gtid_list event to be big enough to be replacable by a dummy event.
147 lines
4.2 KiB
Text
147 lines
4.2 KiB
Text
CHANGE MASTER 'slave1' TO master_port=MYPORT_1, master_host='127.0.0.1', master_user='root';
|
|
CHANGE MASTER 'slave2' TO master_port=MYPORT_2, master_host='127.0.0.1', master_user='root';
|
|
set default_master_connection = 'slave1';
|
|
START SLAVE;
|
|
include/wait_for_slave_to_start.inc
|
|
set default_master_connection = 'slave2';
|
|
START SLAVE;
|
|
include/wait_for_slave_to_start.inc
|
|
set default_master_connection = '';
|
|
CHANGE MASTER TO master_port=MYPORT_3, master_host='127.0.0.1', master_user='root';
|
|
start all slaves;
|
|
Warnings:
|
|
Note 1937 SLAVE '' started
|
|
include/wait_for_slave_to_start.inc
|
|
SET GLOBAL gtid_domain_id= 1;
|
|
SET SESSION gtid_domain_id= 1;
|
|
CREATE TABLE t3 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
|
|
INSERT INTO t1 VALUES (1, "initial");
|
|
INSERT INTO t3 VALUES (101, "initial 1");
|
|
SET GLOBAL gtid_domain_id= 2;
|
|
SET SESSION gtid_domain_id= 2;
|
|
CREATE TABLE t2 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
|
|
INSERT INTO t2 VALUES (1, "initial");
|
|
SET SQL_LOG_BIN=0;
|
|
CREATE TABLE t3 (a INT PRIMARY KEY, b VARCHAR(10));
|
|
SET SQL_LOG_BIN=1;
|
|
INSERT INTO t3 VALUES (201, "initial 2");
|
|
SHOW ALL SLAVES STATUS;
|
|
Connection_name
|
|
Slave_SQL_State Slave has read all relay log; waiting for the slave I/O thread to update it
|
|
Slave_IO_State Waiting for master to send event
|
|
Master_Host 127.0.0.1
|
|
Master_User root
|
|
Master_Port MYPORT_3
|
|
Connect_Retry 60
|
|
Master_Log_File server3-bin.000001
|
|
Read_Master_Log_Pos 1501
|
|
Relay_Log_File mysqld-relay-bin.000002
|
|
Relay_Log_Pos 1790
|
|
Relay_Master_Log_File server3-bin.000001
|
|
Slave_IO_Running Yes
|
|
Slave_SQL_Running Yes
|
|
Replicate_Do_DB
|
|
Replicate_Ignore_DB
|
|
Replicate_Do_Table
|
|
Replicate_Ignore_Table
|
|
Replicate_Wild_Do_Table
|
|
Replicate_Wild_Ignore_Table
|
|
Last_Errno 0
|
|
Last_Error
|
|
Skip_Counter 0
|
|
Exec_Master_Log_Pos 1501
|
|
Relay_Log_Space 2088
|
|
Until_Condition None
|
|
Until_Log_File
|
|
Until_Log_Pos 0
|
|
Master_SSL_Allowed No
|
|
Master_SSL_CA_File
|
|
Master_SSL_CA_Path
|
|
Master_SSL_Cert
|
|
Master_SSL_Cipher
|
|
Master_SSL_Key
|
|
Seconds_Behind_Master 0
|
|
Master_SSL_Verify_Server_Cert No
|
|
Last_IO_Errno 0
|
|
Last_IO_Error
|
|
Last_SQL_Errno 0
|
|
Last_SQL_Error
|
|
Replicate_Ignore_Server_Ids
|
|
Master_Server_Id 3
|
|
Using_Gtid No
|
|
Retried_transactions 0
|
|
Max_relay_log_size 1073741824
|
|
Executed_log_entries 25
|
|
Slave_received_heartbeats 0
|
|
Slave_heartbeat_period 60.000
|
|
Gtid_Slave_Pos 1-1-4,2-2-3
|
|
*** Now move slave2 to replicate from both master1 and master2 instead of just slave1 ***
|
|
STOP ALL SLAVES;
|
|
Warnings:
|
|
Note 1938 SLAVE '' stopped
|
|
INSERT INTO t1 VALUES (2, "switch1");
|
|
INSERT INTO t3 VALUES (102, "switch1 a");
|
|
INSERT INTO t2 VALUES (2, "switch1");
|
|
INSERT INTO t3 VALUES (202, "switch1 b");
|
|
CHANGE MASTER 'slave1' TO master_port=MYPORT_1, master_host='127.0.0.1', master_user='root', master_use_gtid=current_pos;
|
|
CHANGE MASTER 'slave2' TO master_port=MYPORT_2, master_host='127.0.0.1', master_user='root', master_use_gtid=current_pos;
|
|
SET default_master_connection = 'slave1';
|
|
START SLAVE;
|
|
include/wait_for_slave_to_start.inc
|
|
SET default_master_connection = 'slave2';
|
|
START SLAVE;
|
|
include/wait_for_slave_to_start.inc
|
|
set default_master_connection = '';
|
|
*** Move slave1 to replicate from slave2 instead of from master1 and master2 ***
|
|
STOP SLAVE 'slave1';
|
|
INSERT INTO t1 VALUES (3, "switch 2");
|
|
INSERT INTO t3 VALUES (103, "switch 2 a");
|
|
INSERT INTO t2 VALUES (3, "switch 2");
|
|
INSERT INTO t3 VALUES (203, "switch 2 b");
|
|
STOP SLAVE 'slave2';
|
|
INSERT INTO t2 VALUES (4, "switch 3");
|
|
INSERT INTO t3 VALUES (204, "switch 3 b");
|
|
CHANGE MASTER TO master_port=MYPORT_4, master_host='127.0.0.1', master_user='root', master_use_gtid=current_pos;
|
|
START SLAVE;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
a b
|
|
1 initial
|
|
2 switch1
|
|
3 switch 2
|
|
SELECT * FROM t2 ORDER BY a;
|
|
a b
|
|
1 initial
|
|
2 switch1
|
|
3 switch 2
|
|
4 switch 3
|
|
SELECT * FROM t3 ORDER BY a;
|
|
a b
|
|
101 initial 1
|
|
102 switch1 a
|
|
103 switch 2 a
|
|
201 initial 2
|
|
202 switch1 b
|
|
203 switch 2 b
|
|
204 switch 3 b
|
|
DROP TABLE t1;
|
|
SET SQL_LOG_BIN=0;
|
|
DROP TABLE t3;
|
|
SET SQL_LOG_BIN=1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
SET GLOBAL gtid_domain_id=0;
|
|
STOP ALL SLAVES;
|
|
Warnings:
|
|
Note 1938 SLAVE '' stopped
|
|
include/reset_master_slave.inc
|
|
SET GLOBAL gtid_domain_id=0;
|
|
STOP ALL SLAVES;
|
|
Warnings:
|
|
Note 1938 SLAVE 'slave2' stopped
|
|
Note 1938 SLAVE 'slave1' stopped
|
|
include/reset_master_slave.inc
|
|
SET GLOBAL gtid_domain_id=0;
|
|
include/reset_master_slave.inc
|
|
SET GLOBAL gtid_domain_id=0;
|
|
include/reset_master_slave.inc
|