mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
2f6a2494a5
When a new master is provisioned that does not have any old binlogs, the @@gtid_slave_pos is used to know where in the GTID history the provisioning happened. A slave is allowed to connect at the point of this value of @@gtid_slave_pos, even if that GTID is not in the binlogs on the new master. The code to handle this case when the binlog on the newly provisioned master is completely empty was just wrong (couple of typos). Clearly it had never been tested ... :-/
58 lines
1.5 KiB
Text
58 lines
1.5 KiB
Text
include/rpl_init.inc [topology=1->2]
|
|
SET @old_strict= @@GLOBAL.gtid_strict_mode;
|
|
SET GLOBAL gtid_strict_mode= 1;
|
|
select @@global.log_slave_updates;
|
|
@@global.log_slave_updates
|
|
0
|
|
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
|
|
INSERT INTO t1 VALUES (1, 1);
|
|
INSERT INTO t1 VALUES (2, 1);
|
|
SET @old_strict= @@GLOBAL.gtid_strict_mode;
|
|
SET GLOBAL gtid_strict_mode= 1;
|
|
select @@global.log_slave_updates;
|
|
@@global.log_slave_updates
|
|
0
|
|
SELECT * FROM t1 ORDER BY a;
|
|
a b
|
|
1 1
|
|
2 1
|
|
include/stop_slave.inc
|
|
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SLAVE_PORT,
|
|
master_user = 'root', master_use_gtid = current_pos;
|
|
START SLAVE;
|
|
include/wait_for_slave_to_start.inc
|
|
INSERT INTO t1 VALUES (3, 2);
|
|
INSERT INTO t1 VALUES (4, 2);
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (3, 2)
|
|
slave-bin.000001 # Query # # COMMIT
|
|
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
|
slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4, 2)
|
|
slave-bin.000001 # Query # # COMMIT
|
|
SELECT * FROM t1 ORDER BY a;
|
|
a b
|
|
1 1
|
|
2 1
|
|
3 2
|
|
4 2
|
|
include/stop_slave.inc
|
|
RESET SLAVE;
|
|
INSERT INTO t1 VALUES (5, 1);
|
|
INSERT INTO t1 VALUES (6, 1);
|
|
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
|
|
master_use_gtid = current_pos;
|
|
START SLAVE;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
a b
|
|
1 1
|
|
2 1
|
|
3 2
|
|
4 2
|
|
5 1
|
|
6 1
|
|
SET GLOBAL gtid_strict_mode= @old_strict;
|
|
SET GLOBAL gtid_strict_mode= @old_strict;
|
|
DROP TABLE t1;
|
|
include/rpl_end.inc
|