mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
a985ac3aff
MDEV-6344: mysqldump issues FLUSH TABLES, which gets written into binlog and replicated Add a --gtid option (for compatibility, the original behaviour is preserved when --gtid is not used). With --gtid, --master-data and --dump-slave output the GTID position (the old-style file/offset position is still output, but commented out). Also, a CHANGE MASTER TO master_use_gtid=slave_pos is output to ensure a provisioned slave is configured in GTID, as requested. Without --gtid, the GTID position is still output, if available, but commented out. Also fix MDEV-6344, to avoid FLUSH TABLES getting into the binlog. Otherwise a mysqldump on a slave server will silently inject a GTID which does not exist on the master, which is highly undesirable. Also fix an incorrect error handling around obtaining binlog position with --master-data (was probably unlikely to trigger in most cases).
62 lines
2 KiB
Text
62 lines
2 KiB
Text
include/master-slave.inc
|
|
[connection master]
|
|
#
|
|
# New --dump-slave, --apply-slave-statements functionality
|
|
#
|
|
use test;
|
|
-- SET GLOBAL gtid_slave_pos='';
|
|
CHANGE MASTER '' TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
STOP ALL SLAVES;
|
|
-- SET GLOBAL gtid_slave_pos='';
|
|
CHANGE MASTER '' TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
START ALL SLAVES;
|
|
STOP ALL SLAVES;
|
|
-- SET GLOBAL gtid_slave_pos='';
|
|
CHANGE MASTER '' TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_MYPORT, MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
START ALL SLAVES;
|
|
start slave;
|
|
Warnings:
|
|
Note 1254 Slave is already running
|
|
-- SET GLOBAL gtid_slave_pos='';
|
|
CHANGE MASTER '' TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
start slave;
|
|
Warnings:
|
|
Note 1254 Slave is already running
|
|
*** Test mysqldump --dump-slave GTID functionality.
|
|
SET gtid_seq_no = 1000;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY);
|
|
DROP TABLE t1;
|
|
CREATE TABLE t2 (a INT PRIMARY KEY);
|
|
DROP TABLE t2;
|
|
|
|
1. --dump-slave=1
|
|
|
|
SET GLOBAL gtid_slave_pos='0-1-1001';
|
|
CHANGE MASTER '' TO MASTER_USE_GTID=slave_pos;
|
|
-- CHANGE MASTER '' TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
|
|
2. --dump-slave=2
|
|
|
|
-- SET GLOBAL gtid_slave_pos='0-1-1001';
|
|
-- CHANGE MASTER '' TO MASTER_USE_GTID=slave_pos;
|
|
-- CHANGE MASTER '' TO MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
*** Test mysqldump --master-data GTID functionality.
|
|
|
|
1. --master-data=1
|
|
|
|
-- CHANGE MASTER TO MASTER_LOG_FILE='slave-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
CHANGE MASTER TO MASTER_USE_GTID=slave_pos;
|
|
SET GLOBAL gtid_slave_pos='0-2-1003';
|
|
|
|
2. --master-data=2
|
|
|
|
-- CHANGE MASTER TO MASTER_LOG_FILE='slave-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
-- CHANGE MASTER TO MASTER_USE_GTID=slave_pos;
|
|
-- SET GLOBAL gtid_slave_pos='0-2-1003';
|
|
|
|
3. --master-data --single-transaction
|
|
|
|
-- CHANGE MASTER TO MASTER_LOG_FILE='slave-bin.000001', MASTER_LOG_POS=BINLOG_START;
|
|
CHANGE MASTER TO MASTER_USE_GTID=slave_pos;
|
|
SET GLOBAL gtid_slave_pos='0-2-1003';
|
|
include/rpl_end.inc
|