1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-26307 multi-source-replication support mysql syntax(for channel)

Author:   woqutech
Reviewer: monty@mariadb.org
This commit is contained in:
Monty
2021-08-24 00:45:39 +03:00
parent 4ebaa80f0b
commit 267a07e846
7 changed files with 848 additions and 18 deletions

View File

@ -0,0 +1,366 @@
RESET MASTER;
connect slave,127.0.0.1,root,,,$SERVER_MYPORT_3;
change master to relay_log_file='' for channel 'abc1';
ERROR HY000: Failed initializing relay log position: Could not find target log during relay log initialization
change master to master_host='' for channel 'abc2';
ERROR HY000: Incorrect arguments to MASTER_HOST
change master to
master_port=MYPORT_1,
master_host='127.0.0.1',
master_user='root'
for channel 'master1';
start slave for channel 'master1';
set default_master_connection = 'master1';
include/wait_for_slave_to_start.inc
connect master1,127.0.0.1,root,,,$SERVER_MYPORT_1;
connection slave;
#
# Checking SHOW SLAVE 'master1' STATUS
#
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin-master1.000002'
Slave_IO_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Last_Errno = '0'
Last_SQL_Errno = '0'
#
# Checking SHOW SLAVE STATUS
#
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin-master1.000002'
Slave_IO_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Last_Errno = '0'
Last_SQL_Errno = '0'
#
# Checking SHOW ALL SLAVES STATUS
#
Connection_name = 'master1'
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin-master1.000002'
Slave_IO_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Last_Errno = '0'
Last_SQL_Errno = '0'
Slave_heartbeat_period = '60.000'
#
connection master1;
drop database if exists db1;
create database db1;
use db1;
create table t1 (i int auto_increment, f1 varchar(16), primary key pk (i,f1)) engine=MyISAM;
Warnings:
Warning 1280 Name 'pk' ignored for PRIMARY key.
insert into t1 (f1) values ('one'),('two');
connection slave;
select * from db1.t1;
i f1
1 one
2 two
# List of relay log files in the datadir
mysqld-relay-bin-master1.000001
mysqld-relay-bin-master1.000002
mysqld-relay-bin-master1.index
include/show_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-relay-bin-master1.000001 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
mysqld-relay-bin-master1.000001 # Rotate # # mysqld-relay-bin-master1.000002;pos=4
include/show_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-relay-bin-master1.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
mysqld-relay-bin-master1.000002 # Rotate # # master-bin.000001;pos=POS
mysqld-relay-bin-master1.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
mysqld-relay-bin-master1.000002 # Gtid_list # # []
mysqld-relay-bin-master1.000002 # Binlog_checkpoint # # master-bin.000001
mysqld-relay-bin-master1.000002 # Gtid # # GTID #-#-#
mysqld-relay-bin-master1.000002 # Query # # drop database if exists db1
mysqld-relay-bin-master1.000002 # Gtid # # GTID #-#-#
mysqld-relay-bin-master1.000002 # Query # # create database db1
mysqld-relay-bin-master1.000002 # Gtid # # GTID #-#-#
mysqld-relay-bin-master1.000002 # Query # # use `db1`; create table t1 (i int auto_increment, f1 varchar(16), primary key pk (i,f1)) engine=MyISAM
mysqld-relay-bin-master1.000002 # Gtid # # BEGIN GTID #-#-#
mysqld-relay-bin-master1.000002 # Intvar # # INSERT_ID=1
mysqld-relay-bin-master1.000002 # Query # # use `db1`; insert into t1 (f1) values ('one'),('two')
mysqld-relay-bin-master1.000002 # Query # # COMMIT
change master to
master_port=MYPORT_2,
master_host='127.0.0.1',
master_user='root'
for channel 'master1';
ERROR HY000: This operation cannot be performed as you have a running slave 'master1'; run STOP SLAVE 'master1' first
change master to
master_port=MYPORT_2,
master_host='127.0.0.1',
master_user='root';
ERROR HY000: This operation cannot be performed as you have a running slave 'master1'; run STOP SLAVE 'master1' first
change master to
master_port=MYPORT_1,
master_host='127.0.0.1',
master_user='root' for channel 'master2';
ERROR HY000: Connection 'master2' conflicts with existing connection 'master1'
set default_master_connection = '';
change master to
master_port=MYPORT_2,
master_host='127.0.0.1',
master_user='root';
start slave;
include/wait_for_slave_to_start.inc
#
# Checking SHOW ALL SLAVES STATUS
#
Connection_name = ''
Connection_name = 'master1'
Master_Port = 'MYPORT_2'
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin.000002'
Relay_Log_File = 'mysqld-relay-bin-master1.000002'
Slave_IO_Running = 'Yes'
Slave_IO_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Last_Errno = '0'
Last_Errno = '0'
Last_SQL_Errno = '0'
Last_SQL_Errno = '0'
Slave_heartbeat_period = '60.000'
Slave_heartbeat_period = '60.000'
#
connection master1;
insert into t1 (f1) values ('three');
connect master2,127.0.0.1,root,,,$SERVER_MYPORT_2;
drop database if exists db2;
create database db2;
use db2;
create table t1 (pk int auto_increment primary key, f1 int) engine=InnoDB;
begin;
insert into t1 (f1) values (1),(2);
connection slave;
connection master2;
connection slave;
select * from db1.t1;
i f1
1 one
2 two
3 three
select * from db2.t1;
pk f1
connection master2;
commit;
connection slave;
select * from db2.t1;
pk f1
1 1
2 2
connection master1;
flush logs;
connection slave;
connection master1;
purge binary logs to 'master-bin.000002';
show binary logs;
Log_name File_size
master-bin.000002 filesize
insert into t1 (f1) values ('four');
create table db1.t3 (f1 int) engine=InnoDB;
connection slave;
#
# Checking SHOW ALL SLAVES STATUS
#
Connection_name = ''
Connection_name = 'master1'
Master_Port = 'MYPORT_2'
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin.000002'
Relay_Log_File = 'mysqld-relay-bin-master1.000004'
Slave_IO_Running = 'Yes'
Slave_IO_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Last_Errno = '0'
Last_Errno = '0'
Last_SQL_Errno = '0'
Last_SQL_Errno = '0'
Slave_heartbeat_period = '60.000'
Slave_heartbeat_period = '60.000'
#
#
# MDEV:16437: merge 5.7 P_S replication instrumentation and tables
#
SELECT * FROM performance_schema.replication_applier_status_by_coordinator;
CHANNEL_NAME master1
THREAD_ID #
SERVICE_STATE ON
LAST_ERROR_NUMBER 0
LAST_ERROR_MESSAGE
LAST_ERROR_TIMESTAMP 0000-00-00 00:00:00
LAST_SEEN_TRANSACTION 0-1-7
LAST_TRANS_RETRY_COUNT 0
CHANNEL_NAME
THREAD_ID #
SERVICE_STATE ON
LAST_ERROR_NUMBER 0
LAST_ERROR_MESSAGE
LAST_ERROR_TIMESTAMP 0000-00-00 00:00:00
LAST_SEEN_TRANSACTION 0-2-4
LAST_TRANS_RETRY_COUNT 0
select * from db1.t1;
i f1
1 one
2 two
3 three
4 four
include/show_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-relay-bin.000001 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
mysqld-relay-bin.000001 # Rotate # # mysqld-relay-bin.000002;pos=4
include/show_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-relay-bin.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
mysqld-relay-bin.000002 # Rotate # # master-bin.000001;pos=POS
mysqld-relay-bin.000002 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
mysqld-relay-bin.000002 # Gtid_list # # []
mysqld-relay-bin.000002 # Binlog_checkpoint # # master-bin.000001
mysqld-relay-bin.000002 # Gtid # # GTID #-#-#
mysqld-relay-bin.000002 # Query # # drop database if exists db2
mysqld-relay-bin.000002 # Gtid # # GTID #-#-#
mysqld-relay-bin.000002 # Query # # create database db2
mysqld-relay-bin.000002 # Gtid # # GTID #-#-#
mysqld-relay-bin.000002 # Query # # use `db2`; create table t1 (pk int auto_increment primary key, f1 int) engine=InnoDB
mysqld-relay-bin.000002 # Gtid # # BEGIN GTID #-#-#
mysqld-relay-bin.000002 # Intvar # # INSERT_ID=1
mysqld-relay-bin.000002 # Query # # use `db2`; insert into t1 (f1) values (1),(2)
mysqld-relay-bin.000002 # Xid # # COMMIT /* XID */
disconnect slave;
connect slave,127.0.0.1,root,,,$SERVER_MYPORT_3;
stop slave io_thread;
show status like 'Slave_running';
Variable_name Value
Slave_running OFF
set default_master_connection = 'master1';
show status like 'Slave_running';
Variable_name Value
Slave_running ON
#
# syntax compatible test
#
#
# show relaylog events
#
SHOW RELAYLOG EVENTS for channel 'master1';
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-relay-bin-master1.000003 4 Format_desc 3 256 Server ver: Version
mysqld-relay-bin-master1.000003 256 Rotate 1 1358 master-bin.000002;pos=4
mysqld-relay-bin-master1.000003 304 Rotate 3 366 mysqld-relay-bin-master1.000004;pos=4
show slave status for channel 'master1'
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin-master1.000004'
Slave_IO_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Last_Errno = '0'
Last_SQL_Errno = '0'
#
# stop slave
#
STOP SLAVE for channel 'master1';
show slave status for channel 'master1'
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin-master1.000004'
Slave_IO_Running = 'No'
Slave_SQL_Running = 'No'
Last_Errno = '0'
Last_SQL_Errno = '0'
#
# start slave
#
START SLAVE for channel 'master1';
include/wait_for_slave_to_start.inc
show slave status for channel 'master1'
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin-master1.000005'
Slave_IO_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Last_Errno = '0'
Last_SQL_Errno = '0'
#
# flush relay logs
#
FLUSH RELAY LOGS for channel 'master1';
show slave status for channel 'master1'
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin-master1.000006'
Slave_IO_Running = 'Yes'
Slave_SQL_Running = 'Yes'
Last_Errno = '0'
Last_SQL_Errno = '0'
#
# stop slave
#
STOP SLAVE for channel 'master1';
show slave status for channel 'master1'
Master_Port = 'MYPORT_1'
Relay_Log_File = 'mysqld-relay-bin-master1.000006'
Slave_IO_Running = 'No'
Slave_SQL_Running = 'No'
Last_Errno = '0'
Last_SQL_Errno = '0'
#
# reset slave
#
RESET SLAVE for channel 'master1';
show slave status for channel 'master1'
Master_Port = 'MYPORT_1'
Relay_Log_File = ''
Slave_IO_Running = 'No'
Slave_SQL_Running = 'No'
Last_Errno = '0'
Last_SQL_Errno = '0'
#
# show relaylog events after reset slave
#
SHOW RELAYLOG EVENTS for channel 'master1';
Log_name Pos Event_type Server_id End_log_pos Info
#
# check error syntax
#
RESET SLAVE 'master1' for channel 'mmaster2';
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
STOP SLAVE 'master1' for channel 'master2';
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
FLUSH RELAY LOGS 'master1' for channel 'master2';
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
START SLAVE 'master1' for channel 'master2';
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
SHOW RELAYLOG 'master1' EVENTS for channel 'master2';
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
SHOW SLAVE 'master1' STATUS for channel 'master2';
ERROR HY000: Incorrect arguments to CONNECTION_NAME AND FOR CHANNEL CAN NOT BE SPECIFIED AT THE SAME TIME)
drop database db1;
drop database db2;
include/reset_master_slave.inc
disconnect slave;
connection master1;
drop database db1;
include/reset_master_slave.inc
disconnect master1;
connection master2;
drop database db2;
include/reset_master_slave.inc
disconnect master2;
connection default;
CREATE TABLE channel (channel int);
DROP TABLE channel;

View File

@ -0,0 +1,429 @@
#
# This is the basic test of support mysql syntax "for channel" used for
# multi-source replication
#
# Test basic replication functionality in multi-source setup
#
--source include/not_embedded.inc
--source include/have_innodb.inc
--source include/have_perfschema.inc
--source include/binlog_start_pos.inc
--let $rpl_server_count= 0
RESET MASTER;
--connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3)
# MDEV-3984: crash/read of freed memory when changing master with named connection
# This fails after adding the new master 'abc1', check we do not free twice.
--error ER_RELAY_LOG_INIT
change master to relay_log_file='' for channel 'abc1';
# This fails before adding the new master, check that we do free it.
--error ER_WRONG_ARGUMENTS
change master to master_host='' for channel 'abc2';
# Start replication from the first master
--replace_result $SERVER_MYPORT_1 MYPORT_1
eval change master to
master_port=$SERVER_MYPORT_1,
master_host='127.0.0.1',
master_user='root'
for channel 'master1';
start slave for channel 'master1';
set default_master_connection = 'master1';
--source include/wait_for_slave_to_start.inc
--connect (master1,127.0.0.1,root,,,$SERVER_MYPORT_1)
--save_master_pos
--connection slave
--sync_with_master 0,'master1'
# Here and further: add an extra check on SQL thread status
# as the normal sync is not always enough
--source include/wait_for_sql_thread_read_all.inc
# each of the 3 commands should produce
# 'master1' status
let $wait_for_all= 1;
let $show_statement= SHOW ALL SLAVES STATUS;
let $field= Slave_IO_State;
let $condition= = 'Waiting for master to send event';
--source include/wait_show_condition.inc
--echo #
--echo # Checking SHOW SLAVE 'master1' STATUS
--echo #
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
--let $slave_name= 'master1'
--let for_channel= 1
--source include/show_slave_status.inc
--let $slave_name=
--let for_channel=
--echo #
--echo # Checking SHOW SLAVE STATUS
--echo #
--source include/show_slave_status.inc
--echo #
--echo # Checking SHOW ALL SLAVES STATUS
--echo #
--let $all_slaves_status= 1
--let $status_items= Connection_name, Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno, Slave_heartbeat_period
--source include/show_slave_status.inc
--let $all_slaves_status=
--echo #
# Check that replication actually works
--connection master1
--disable_warnings
drop database if exists db1;
--enable_warnings
create database db1;
use db1;
create table t1 (i int auto_increment, f1 varchar(16), primary key pk (i,f1)) engine=MyISAM;
insert into t1 (f1) values ('one'),('two');
--save_master_pos
--connection slave
--sync_with_master 0,'master1'
--sorted_result
select * from db1.t1;
--let $datadir = `SELECT @@datadir`
--echo # List of relay log files in the datadir
--list_files $datadir mysqld-relay-bin-master1.*
# Check that relay logs are recognizable
let binlog_start=4;
let binlog_file=;
source include/show_relaylog_events.inc;
let binlog_file= mysqld-relay-bin-master1.000002;
source include/show_relaylog_events.inc;
# Try to configure connection with the same name again,
# should get an error because the slave is running
--replace_result $SERVER_MYPORT_2 MYPORT_2
--error ER_SLAVE_MUST_STOP
eval change master to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
master_user='root'
for channel 'master1';
# Try to configure using the default connection name
# (which is 'master1' at the moment),
# again, should get an error
--replace_result $SERVER_MYPORT_2 MYPORT_2
--error ER_SLAVE_MUST_STOP
eval change master to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
master_user='root';
# Try to configure a connection with the same master
# using a different name, should get a conflict
--replace_result $SERVER_MYPORT_1 MYPORT_1
--error ER_CONNECTION_ALREADY_EXISTS
eval change master to
master_port=$SERVER_MYPORT_1,
master_host='127.0.0.1',
master_user='root' for channel 'master2';
# Set up a proper 'default' connection to master2
set default_master_connection = '';
--replace_result $SERVER_MYPORT_2 MYPORT_2
eval change master to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
master_user='root';
start slave;
--source include/wait_for_slave_to_start.inc
--source include/wait_for_sql_thread_read_all.inc
# See both connections in the same status output
let $wait_for_all= 1;
let $show_statement= SHOW ALL SLAVES STATUS;
let $field= Slave_IO_State;
let $condition= = 'Waiting for master to send event';
--source include/wait_show_condition.inc
--echo #
--echo # Checking SHOW ALL SLAVES STATUS
--echo #
--let $all_slaves_status= 1
--let $status_items= Connection_name, Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno, Slave_heartbeat_period
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/ /$SERVER_MYPORT_2/MYPORT_2/
--source include/show_slave_status.inc
--let $all_slaves_status=
--echo #
# Check that replication from two servers actually works
--connection master1
insert into t1 (f1) values ('three');
--save_master_pos
--connect (master2,127.0.0.1,root,,,$SERVER_MYPORT_2)
--disable_warnings
drop database if exists db2;
--enable_warnings
create database db2;
use db2;
create table t1 (pk int auto_increment primary key, f1 int) engine=InnoDB;
begin;
insert into t1 (f1) values (1),(2);
--connection slave
--sync_with_master 0,'master1'
--connection master2
--save_master_pos
--connection slave
--sync_with_master 0
--sorted_result
select * from db1.t1;
select * from db2.t1;
--connection master2
commit;
--save_master_pos
--connection slave
--sync_with_master 0
--sorted_result
select * from db2.t1;
# Flush and purge logs on one master,
# make sure slaves don't get confused
--connection master1
flush logs;
--source include/wait_for_binlog_checkpoint.inc
--save_master_pos
--connection slave
--sync_with_master 0, 'master1'
--connection master1
purge binary logs to 'master-bin.000002';
# Additional events: 43 (Gtid_list) + 2 x 44 (Binlog_checkpoint) = 131
let filesize=`select $binlog_start_pos+131`;
--replace_result $filesize filesize
show binary logs;
insert into t1 (f1) values ('four');
create table db1.t3 (f1 int) engine=InnoDB;
--save_master_pos
--connection slave
--sync_with_master 0,'master1'
--source include/wait_for_sql_thread_read_all.inc
let $wait_for_all= 1;
let $show_statement= SHOW ALL SLAVES STATUS;
let $field= Slave_IO_State;
let $condition= = 'Waiting for master to send event';
--source include/wait_show_condition.inc
--echo #
--echo # Checking SHOW ALL SLAVES STATUS
--echo #
--let $all_slaves_status= 1
--let $status_items= Connection_name, Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno, Slave_heartbeat_period
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/ /$SERVER_MYPORT_2/MYPORT_2/
--source include/show_slave_status.inc
--let $all_slaves_status=
--echo #
--echo #
--echo # MDEV:16437: merge 5.7 P_S replication instrumentation and tables
--echo #
--replace_column 2 #
query_vertical SELECT * FROM performance_schema.replication_applier_status_by_coordinator;
--sorted_result
select * from db1.t1;
# This should show relay log events for the default master
# (the one with the empty name)
let binlog_file=;
source include/show_relaylog_events.inc;
let binlog_file= mysqld-relay-bin.000002;
source include/show_relaylog_events.inc;
# Make sure we don't lose control over replication connections
# after reconnecting to the slave
--disconnect slave
--connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3)
stop slave io_thread;
show status like 'Slave_running';
set default_master_connection = 'master1';
show status like 'Slave_running';
--echo
--echo #
--echo # syntax compatible test
--echo #
--echo
--echo #
--echo # show relaylog events
--echo #
--replace_regex /Server ver:.*/Server ver: Version/
SHOW RELAYLOG EVENTS for channel 'master1';
--echo
--echo show slave status for channel 'master1'
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
--let $slave_name= 'master1'
--let $for_channel= 1
--source include/show_slave_status.inc
--echo
--echo #
--echo # stop slave
--echo #
STOP SLAVE for channel 'master1';
--echo
--echo show slave status for channel 'master1'
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
--let $slave_name= 'master1'
--let $for_channel= 1
--source include/show_slave_status.inc
--echo
--echo #
--echo # start slave
--echo #
START SLAVE for channel 'master1';
--source include/wait_for_slave_to_start.inc
--echo
--echo show slave status for channel 'master1'
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/ /Preparing/Yes/
--let $slave_name= 'master1'
--let $for_channel= 1
--source include/show_slave_status.inc
--echo
--echo #
--echo # flush relay logs
--echo #
FLUSH RELAY LOGS for channel 'master1';
--source include/wait_for_sql_thread_read_all.inc
--echo
--echo show slave status for channel 'master1'
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
--let $slave_name= 'master1'
--let $for_channel= 1
--source include/show_slave_status.inc
--echo
--echo #
--echo # stop slave
--echo #
STOP SLAVE for channel 'master1';
--echo
--echo show slave status for channel 'master1'
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
--let $slave_name= 'master1'
--let $for_channel= 1
--source include/show_slave_status.inc
--echo
--echo #
--echo # reset slave
--echo #
RESET SLAVE for channel 'master1';
--echo
--echo show slave status for channel 'master1'
--let $status_items= Master_Port, Relay_Log_File, Slave_IO_Running, Slave_SQL_Running, Last_Errno, Last_SQL_Errno
--let $slave_field_result_replace= /$SERVER_MYPORT_1/MYPORT_1/
--let $slave_name= 'master1'
--let $for_channel= 1
--source include/show_slave_status.inc
--echo
--echo #
--echo # show relaylog events after reset slave
--echo #
SHOW RELAYLOG EVENTS for channel 'master1';
--let $slave_name=
--let for_channel=
--echo
--echo #
--echo # check error syntax
--echo #
--error ER_WRONG_ARGUMENTS
RESET SLAVE 'master1' for channel 'mmaster2';
--error ER_WRONG_ARGUMENTS
STOP SLAVE 'master1' for channel 'master2';
--error ER_WRONG_ARGUMENTS
FLUSH RELAY LOGS 'master1' for channel 'master2';
--error ER_WRONG_ARGUMENTS
START SLAVE 'master1' for channel 'master2';
--error ER_WRONG_ARGUMENTS
SHOW RELAYLOG 'master1' EVENTS for channel 'master2';
--error ER_WRONG_ARGUMENTS
SHOW SLAVE 'master1' STATUS for channel 'master2';
--echo
# Cleanup
drop database db1;
drop database db2;
--source include/reset_master_slave.inc
--disconnect slave
--connection master1
drop database db1;
--source include/reset_master_slave.inc
--disconnect master1
--connection master2
drop database db2;
--source include/reset_master_slave.inc
--disconnect master2
#
# Check channel as a keyword
#
--connection default
CREATE TABLE channel (channel int);
DROP TABLE channel;