mirror of
https://github.com/MariaDB/server.git
synced 2025-09-11 05:52:26 +03:00
155 lines
4.0 KiB
Plaintext
155 lines
4.0 KiB
Plaintext
include/master-slave.inc
|
|
[connection master]
|
|
# Initialize
|
|
connection slave;
|
|
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
|
|
# Setup data
|
|
connection master;
|
|
CREATE TABLE t1 (a int PRIMARY KEY, b INT) ENGINE=InnoDB;
|
|
include/save_master_gtid.inc
|
|
connection slave;
|
|
include/sync_with_master_gtid.inc
|
|
# 1. run some replication load that adds records to gtid_slave_pos table
|
|
# 2. stop slave, remove loaded data (it will be replicated), delete from
|
|
# gtid_slave_pos as the table is going to be restored
|
|
# 3. take dump from slave (master has an empty gtid_slave_pos)
|
|
# with --gtid and for the default value of both
|
|
# --dump-slave and --master-data
|
|
# and in loop for the two options do:
|
|
# 4. reset the slave state to install some initial state
|
|
# 5. restart slave server, restore the dump
|
|
# 6. check the final state which must be equal to the dump's one
|
|
# 7. start replication to see no error => Q.E.D.
|
|
# unless the test runs on a buggy version in which case set to zero.
|
|
# 1.
|
|
include/stop_slave.inc
|
|
delete from mysql.gtid_slave_pos;
|
|
connection master;
|
|
insert into t1 set a = 5;
|
|
insert into t1 set a = 4;
|
|
insert into t1 set a = 3;
|
|
insert into t1 set a = 2;
|
|
insert into t1 set a = 1;
|
|
include/save_master_gtid.inc
|
|
connection slave;
|
|
SET @@global.gtid_cleanup_batch_size = $val;
|
|
CHANGE MASTER TO master_use_gtid= no;
|
|
include/start_slave.inc
|
|
include/sync_with_master_gtid.inc
|
|
select * from mysql.gtid_slave_pos;
|
|
domain_id sub_id server_id seq_no
|
|
0 2 1 1
|
|
0 3 1 2
|
|
0 4 1 3
|
|
0 5 1 4
|
|
0 6 1 5
|
|
0 7 1 6
|
|
select @@global.gtid_slave_pos as "after initial slave got in sync";
|
|
after initial slave got in sync
|
|
0-1-6
|
|
# 2.
|
|
include/stop_slave.inc
|
|
# 3. A
|
|
include/stop_slave.inc
|
|
include/stop_slave.inc
|
|
# 4.
|
|
set statement sql_log_bin=0 for delete from mysql.gtid_slave_pos;
|
|
insert into mysql.gtid_slave_pos values (99 + 2, 1, 1, 1);
|
|
# 5.
|
|
include/rpl_restart_server.inc [server_number=2]
|
|
SET @@global.gtid_cleanup_batch_size = $val;
|
|
select * from mysql.gtid_slave_pos;
|
|
domain_id sub_id server_id seq_no
|
|
101 1 1 1
|
|
select @@global.gtid_slave_pos as "before dump restore";
|
|
before dump restore
|
|
101-1-1
|
|
# 6.
|
|
select * from mysql.gtid_slave_pos;
|
|
domain_id sub_id server_id seq_no
|
|
0 2 1 6
|
|
select @@global.gtid_slave_pos as "after dump restore";
|
|
after dump restore
|
|
0-1-6
|
|
# 7.
|
|
reset slave;
|
|
select @@global.gtid_slave_pos;
|
|
@@global.gtid_slave_pos
|
|
0-1-6
|
|
change master to master_use_gtid=no;
|
|
connection master;
|
|
insert into t1 select 1+max(a),2 from t1;
|
|
include/save_master_gtid.inc
|
|
connection slave;
|
|
include/start_slave.inc
|
|
include/sync_with_master_gtid.inc
|
|
select * from mysql.gtid_slave_pos;
|
|
domain_id sub_id server_id seq_no
|
|
0 2 1 6
|
|
0 3 1 1
|
|
0 4 1 2
|
|
0 5 1 3
|
|
0 6 1 4
|
|
0 7 1 5
|
|
0 8 1 6
|
|
0 9 1 7
|
|
select @@global.gtid_slave_pos as "after slave got in sync";
|
|
after slave got in sync
|
|
0-1-7
|
|
include/stop_slave.inc
|
|
# 4.
|
|
set statement sql_log_bin=0 for delete from mysql.gtid_slave_pos;
|
|
insert into mysql.gtid_slave_pos values (99 + 1, 1, 1, 1);
|
|
# 5.
|
|
include/rpl_restart_server.inc [server_number=2]
|
|
SET @@global.gtid_cleanup_batch_size = $val;
|
|
select * from mysql.gtid_slave_pos;
|
|
domain_id sub_id server_id seq_no
|
|
100 1 1 1
|
|
select @@global.gtid_slave_pos as "before dump restore";
|
|
before dump restore
|
|
100-1-1
|
|
# 6.
|
|
select * from mysql.gtid_slave_pos;
|
|
domain_id sub_id server_id seq_no
|
|
0 2 1 6
|
|
select @@global.gtid_slave_pos as "after dump restore";
|
|
after dump restore
|
|
0-1-6
|
|
# 7.
|
|
reset slave;
|
|
select @@global.gtid_slave_pos;
|
|
@@global.gtid_slave_pos
|
|
0-1-6
|
|
change master to master_use_gtid=no;
|
|
connection master;
|
|
insert into t1 select 1+max(a),1 from t1;
|
|
include/save_master_gtid.inc
|
|
connection slave;
|
|
include/start_slave.inc
|
|
include/sync_with_master_gtid.inc
|
|
select * from mysql.gtid_slave_pos;
|
|
domain_id sub_id server_id seq_no
|
|
0 2 1 6
|
|
0 3 1 1
|
|
0 4 1 2
|
|
0 5 1 3
|
|
0 6 1 4
|
|
0 7 1 5
|
|
0 8 1 6
|
|
0 9 1 7
|
|
0 10 1 8
|
|
select @@global.gtid_slave_pos as "after slave got in sync";
|
|
after slave got in sync
|
|
0-1-8
|
|
#
|
|
# Cleanup
|
|
#
|
|
connection master;
|
|
DROP TABLE t1;
|
|
include/save_master_gtid.inc
|
|
connection slave;
|
|
SET @@global.gtid_cleanup_batch_size= $old_gtid_cleanup_batch_size;
|
|
include/sync_with_master_gtid.inc
|
|
include/rpl_end.inc
|