rpl_reset_slave.test 3.4 KB
Newer Older
H
hustjieke 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
# TBF - difference in row level logging
# Temp tables are not replicated in rbr, but it is still good to hit rbr with everthing

# See SHOW SLAVE STATUS displays well after RESET SLAVE (it should display the
# --master-* options from mysqld, as this is what is going to be used next time
# slave threads will be started). In bug 985, it displayed old values (of before
# RESET SLAVE).
# See if slave crashes when doing a CREATE TEMPORARY TABLE twice, separated by
# RESET SLAVE.

-- source include/master-slave.inc
sync_slave_with_master;
--disable_query_log
call mtr.add_suppression('Slave I/O: Get master BINLOG_CHECKSUM failed with error');
--enable_query_log
let $status_items= Master_User, Master_Host;
source include/show_slave_status.inc;

source include/stop_slave.inc;
--replace_column 2 ####
change master to master_user='test';
source include/show_slave_status.inc;

reset slave;
source include/show_slave_status.inc;

--replace_column 2 ####
change master to master_user='root';
source include/start_slave.inc;
sync_with_master;
source include/show_slave_status.inc;

# test of crash with temp tables & RESET SLAVE
# (test to see if RESET SLAVE clears temp tables in memory and disk)
source include/stop_slave.inc;
reset slave;
source include/start_slave.inc;
connection master;
create temporary table t1 (a int);
sync_slave_with_master;
source include/stop_slave.inc;
reset slave;
reset master; # clear GTIDs metadata so that create temporary table is replayed
source include/start_slave.inc;
sync_with_master;
show status like 'slave_open_temp_tables';
connection master;
drop temporary table if exists t1;
sync_slave_with_master;

#
#Bug#34654  	RESET SLAVE does not clear LAST_IO_Err* 
#

# clearing the status
source include/stop_slave.inc;
reset slave;
source include/check_slave_no_error.inc;

#
# verifying start slave resets Last_IO_Error and Last_IO_Errno.
#

--replace_column 2 ####
change master to master_user='impossible_user_name';
start slave;
let $slave_io_errno= 1045;
--source include/wait_for_slave_io_error.inc
--source include/stop_slave_sql.inc

--replace_column 2 ####
change master to master_user='root';
source include/start_slave.inc;
source include/check_slave_no_error.inc;

#
# verifying reset slave resets Last_{IO,SQL}_Err{or,no}
#

stop slave;
--replace_column 2 ####
change master to master_user='impossible_user_name';
start slave;
let $slave_io_errno= 1045;
--source include/wait_for_slave_io_error.inc
--source include/stop_slave_sql.inc

reset slave;
source include/check_slave_no_error.inc;
--replace_column 2 ####
change master to master_user='root';


#
# BUG#11809016 - NO WAY TO DISCOVER AN INSTANCE IS NO LONGER A SLAVE FOLLOWING MYSQL BUG#28796
#

reset slave;
--source include/start_slave.inc

--source include/stop_slave.inc
--let $_slave_master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1)
--let $_slave_master_user= query_get_value(SHOW SLAVE STATUS, Master_User, 1)
--let $_slave_master_port= query_get_value(SHOW SLAVE STATUS, Master_Port, 1)

reset slave all;
--error ER_BAD_SLAVE
start slave;

--let $_show_master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1)
if ($_show_master_host != No such row)
{
  die;
}

--replace_result $_slave_master_host MASTER_HOST $_slave_master_user MASTER_USER $_slave_master_port MASTER_PORT
--replace_column 2 ####
--eval CHANGE MASTER TO MASTER_HOST= '$_slave_master_host', MASTER_USER= '$_slave_master_user', MASTER_PORT= $_slave_master_port
--source include/start_slave.inc

--source include/rpl_end.inc