mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
f7adf1292c
This will make it easier to show changes.
201 lines
6.8 KiB
Text
201 lines
6.8 KiB
Text
--source include/master-slave.inc
|
|
|
|
--echo #
|
|
--echo # New --dump-slave, --apply-slave-statements functionality
|
|
--echo #
|
|
|
|
# There is a gap between when START SLAVE returns and when MASTER_LOG_FILE and
|
|
# MASTER_LOG_POS are set. Ensure that we don't call SHOW SLAVE STATUS during
|
|
# that gap.
|
|
--sync_slave_with_master
|
|
|
|
connection master;
|
|
use test;
|
|
|
|
connection slave;
|
|
|
|
# Execute mysqldump with --dump-slave
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave test
|
|
|
|
# Execute mysqldump with --dump-slave and --apply-slave-statements
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave --apply-slave-statements test
|
|
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
|
# Execute mysqldump with --dump-slave ,--apply-slave-statements and --include-master-host-port
|
|
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave --apply-slave-statements --include-master-host-port test
|
|
|
|
#
|
|
# MDEV-5624 mysqldump --dump-slave option does not restart the replication if the dump has failed
|
|
#
|
|
start slave;
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--error 2
|
|
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave no_such_db
|
|
start slave;
|
|
|
|
|
|
--echo *** Test mysqldump --dump-slave GTID/non-gtid functionality.
|
|
|
|
--connection master
|
|
SET gtid_seq_no = 1000;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY);
|
|
DROP TABLE t1;
|
|
--sync_slave_with_master
|
|
|
|
--connection slave
|
|
# Inject a local transaction on the slave to check that this is not considered
|
|
# for --dump-slave.
|
|
CREATE TABLE t2 (a INT PRIMARY KEY);
|
|
DROP TABLE t2;
|
|
|
|
--echo
|
|
--echo 1. --dump-slave=1 --gtid
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave=1 --gtid test
|
|
|
|
--echo
|
|
--echo 1a. --dump-slave=1
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave=1 test
|
|
|
|
--echo
|
|
--echo 2. --dump-slave=2 --gtid
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave=2 --gtid test
|
|
|
|
--echo
|
|
--echo 2. --dump-slave=2
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --dump-slave=2 test
|
|
|
|
|
|
--echo *** Test mysqldump --master-data GTID/non-gtid functionality.
|
|
--echo
|
|
--echo 1. --master-data=1 --gtid
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --master-data=1 --gtid test
|
|
|
|
--echo
|
|
--echo 1a. --master-data=1
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --master-data=1 test
|
|
|
|
--echo
|
|
--echo 2. --master-data=2 --gtid
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --master-data=2 --gtid test
|
|
|
|
--echo
|
|
--echo 2a. --master-data=2
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --master-data=2 test
|
|
|
|
--echo
|
|
--echo 3. --master-data --single-transaction --gtid
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --master-data --single-transaction --gtid test
|
|
|
|
--echo
|
|
--echo 3a. --master-data --single-transaction
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP_SLAVE --compact --master-data --single-transaction test
|
|
|
|
--echo
|
|
--echo 4. --master-data=2 --dump-slave=2 --single-transaction --gtid (MDEV-4827)
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/ /MariaDB dump.*/MariaDB dump/ /Dump completed.*/Dump completed/ /Server version.*/Server version/
|
|
--exec $MYSQL_DUMP_SLAVE --master-data=2 --dump-slave=2 --single-transaction --gtid test
|
|
--echo
|
|
|
|
--echo
|
|
--echo 4a. --master-data=2 --dump-slave=2 --single-transaction (MDEV-4827)
|
|
--echo
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/ /MariaDB dump.*/MariaDB dump/ /Dump completed.*/Dump completed/ /Server version.*/Server version/
|
|
--exec $MYSQL_DUMP_SLAVE --master-data=2 --dump-slave=2 --single-transaction test
|
|
--echo
|
|
#
|
|
# MDEV-32611 Added test for mysqldump --delete-master-logs option.
|
|
# This options is alias of
|
|
# get binlogs: show master status -> flush logs -> purge binary logs to <new_binlog>
|
|
# sequence and this test is derived using the same pattern.
|
|
#
|
|
|
|
connection master;
|
|
|
|
CREATE TABLE t (
|
|
id int
|
|
);
|
|
|
|
insert into t values (1);
|
|
insert into t values (2);
|
|
|
|
drop table t;
|
|
|
|
--sync_slave_with_master
|
|
|
|
# MDEV-32953: Because --delete-master-logs immediately purges logs after
|
|
# flushing, it is possible the binlog dump threads will still be using the old
|
|
# log when the purge executes, disallowing the file from being deleted.
|
|
# Therefore, we temporarily stop the slave so there is no chance the old binlog
|
|
# is still being referenced. master_use_gtid=Slave_pos is necessary to still
|
|
# appear up-to-date to the master on restart after the master has flushed the
|
|
# logs (while the slave is offline). Otherwise (i.e. if using binlog file/pos),
|
|
# the slave would point to a purged log file, and receive an error immediately
|
|
# upon connecting to the master.
|
|
--source include/stop_slave.inc
|
|
change master to master_use_gtid=slave_pos;
|
|
|
|
connection master;
|
|
|
|
--echo # Ensuring the binlog dump thread is killed on primary...
|
|
--disable_query_log
|
|
--let $binlog_dump_thd_tid= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND LIKE 'Binlog Dump'`
|
|
if ($binlog_dump_thd_tid)
|
|
{
|
|
--eval kill $binlog_dump_thd_tid
|
|
}
|
|
--let $wait_condition= SELECT COUNT(*)=0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND LIKE 'Binlog Dump'
|
|
--source include/wait_condition.inc
|
|
--enable_query_log
|
|
|
|
--let $predump_binlog_filename= query_get_value(SHOW MASTER STATUS, File, 1)
|
|
|
|
# Execute mysqldump with delete-master-logs option
|
|
--replace_regex /MASTER_LOG_POS=[0-9]+/MASTER_LOG_POS=BINLOG_START/
|
|
--exec $MYSQL_DUMP --compact --no-create-info --no-data --delete-master-logs test
|
|
|
|
--let $postdump_binlog_filename= query_get_value(SHOW MASTER STATUS, File, 1)
|
|
|
|
--let $postdump_first_binary_log_filename= query_get_value(SHOW BINARY LOGS, Log_name, 1)
|
|
|
|
if ($predump_binlog_filename == $postdump_binlog_filename)
|
|
{
|
|
--echo # predump_binlog_filename: $predump_binlog_filename
|
|
--echo # postdump_binlog_filename: $postdump_binlog_filename
|
|
--die Master state didn't change after mariadb-dump with --delete-master-logs.
|
|
}
|
|
|
|
if ($postdump_first_binary_log_filename != $postdump_binlog_filename)
|
|
{
|
|
--echo # postdump_first_binary_log_filename: $postdump_first_binary_log_filename
|
|
--echo # postdump_binlog_filename: $postdump_binlog_filename
|
|
--die Master binlog wasn't deleted after mariadb-dump with --delete-master-logs.
|
|
}
|
|
|
|
connection slave;
|
|
--source include/start_slave.inc
|
|
|
|
--source include/rpl_end.inc
|