mirror of
https://github.com/MariaDB/server.git
synced 2025-04-23 23:50:07 +02:00

Problem: ======== rpl.rpl_slave_alias_replica test fails sporadically on build bot as shown below. rpl.rpl_slave_alias_replica 'innodb,stmt' w4 [ fail ] +++ /usr/local/mariadb-10.5.4-linux-x86_64/mysql-test/suite/rpl/r/ rpl_slave_alias_replica.reject 2020-06-12 09:52:25.191267945 +0000 @@ -22,6 +22,7 @@ SHOW REPLICA HOSTS; Server_id Host Port Master_id 2 127.0.0.1 SLAVE_PORT 1 +2 127.0.0.1 SLAVE_PORT 1 Analysis: ======== The SHOW REPLICA HOSTS command reports an additional row for the same server occasionally. This happens because of zombie dump threads on the master. Error log from master also confirms that "A slave with the same server_uuid/server_id as this slave has connected to the master". Since SHOW REPLICA HOSTS goes through the list of dump threads and reports the corresponding hosts,the same host is reported twice. Fix: === Instead of capturing the SHOW REPLICA HOSTS command in result file use wait_show_condition.inc. This will ensure that SHOW REPLICA HOSTS command fetches slave host details.
102 lines
3.1 KiB
Text
102 lines
3.1 KiB
Text
# ==== Purpose ====
|
|
#
|
|
# Test verifies that SQL statements which use keyword 'REPLICA' a synonym for
|
|
# 'SLAVE' work as expected.
|
|
#
|
|
# ==== Implementation ====
|
|
#
|
|
# List of commands being verified are
|
|
# On Master: SHOW REPLICA HOSTS
|
|
# : Privilege "REPLICA"
|
|
#
|
|
# On Slave: START REPLICA
|
|
# START REPLICA UNTIL
|
|
# STOP REPLICA
|
|
# SHOW REPLICA STATUS
|
|
# RESET REPLICA ALL
|
|
# REPLICA_POS
|
|
#
|
|
# ==== References ====
|
|
#
|
|
# MDEV-20601: Make REPLICA a synonym for SLAVE in SQL statements
|
|
#
|
|
|
|
--source include/have_innodb.inc
|
|
--source include/master-slave.inc
|
|
|
|
--echo "Command: STOP SLAVE --> STOP REPLICA"
|
|
--connection slave
|
|
STOP REPLICA;
|
|
--source include/wait_for_slave_io_to_stop.inc
|
|
--source include/wait_for_slave_sql_to_stop.inc
|
|
|
|
--connection master
|
|
CREATE USER 'repl_user';
|
|
--echo "Privilege: SLAVE --> REPLICA"
|
|
GRANT REPLICATION REPLICA on *.* TO repl_user;
|
|
FLUSH PRIVILEGES;
|
|
|
|
--connection slave
|
|
--echo "SHOW SLAVE STATUS --> SHOW REPLICA STATUS"
|
|
--let $master_user= query_get_value(SHOW REPLICA STATUS, Master_User, 1)
|
|
CHANGE MASTER TO MASTER_USER= 'repl_user';
|
|
--echo "Command: START SLAVE --> START REPLICA"
|
|
START REPLICA;
|
|
--source include/wait_for_slave_io_to_start.inc
|
|
--source include/wait_for_slave_sql_to_start.inc
|
|
|
|
--connection master
|
|
--sync_slave_with_master
|
|
|
|
--connection master
|
|
--echo "Command: SHOW SLAVE HOSTS --> SHOW REPLICA HOSTS"
|
|
let $show_statement= SHOW REPLICA HOSTS;
|
|
let $field= Server_id;
|
|
# Slave's server_id 2
|
|
let $condition= ='2';
|
|
source include/wait_show_condition.inc;
|
|
DROP USER 'repl_user';
|
|
--sync_slave_with_master
|
|
|
|
--echo "Command: SHOW SLAVE IO/SQL THREAD --> SHOW REPLICA IO/SQL THREAD"
|
|
STOP REPLICA IO_THREAD;
|
|
STOP REPLICA SQL_THREAD;
|
|
--source include/wait_for_slave_io_to_stop.inc
|
|
--source include/wait_for_slave_sql_to_stop.inc
|
|
--echo "Command: RESET SLAVE ALL --> RESET REPLICA ALL"
|
|
RESET REPLICA ALL;
|
|
|
|
--connection master
|
|
RESET MASTER;
|
|
CREATE TABLE t(f INT) ENGINE=INNODB;
|
|
INSERT INTO t VALUES (10);
|
|
let $master_log_file= query_get_value(SHOW MASTER STATUS, File, 1);
|
|
let $master_pos= query_get_value(SHOW MASTER STATUS, Position, 1);
|
|
DROP TABLE t;
|
|
|
|
--connection slave
|
|
--replace_result $MASTER_MYPORT MASTER_PORT
|
|
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1',MASTER_PORT=$MASTER_MYPORT,MASTER_USER='$master_user';
|
|
--echo "Command: START SLAVE UNTIL --> START REPLICA UNTIL"
|
|
--replace_result $master_log_file MASTER_LOG_FILE $master_pos MASTER_POS
|
|
--eval START REPLICA UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=$master_pos
|
|
--source include/wait_for_slave_sql_to_stop.inc
|
|
--source include/stop_slave_io.inc
|
|
|
|
SELECT * FROM t;
|
|
--let $slave_param= Exec_Master_Log_Pos
|
|
--let $slave_param_value= $master_pos
|
|
--source include/check_slave_param.inc
|
|
|
|
--replace_result $MASTER_MYPORT MASTER_PORT
|
|
--echo "MASTER_USE_GTID=SLAVE_POS --> MASTER_USE_GTID=REPLICA_POS"
|
|
--replace_result $MASTER_MYPORT MASTER_PORT
|
|
--eval CHANGE MASTER TO master_host = '127.0.0.1', master_port = $MASTER_MYPORT, MASTER_USE_GTID=REPLICA_POS
|
|
--source include/start_slave.inc
|
|
|
|
--connection master
|
|
CREATE TABLE t2 (f INT PRIMARY KEY) ENGINE=INNODB;
|
|
INSERT INTO t2 VALUES (10);
|
|
DROP TABLE t2;
|
|
|
|
--source include/rpl_end.inc
|