summaryrefslogtreecommitdiff
path: root/mysql-test/suite/rpl/include/rpl_reset_slave.test
blob: d4c9d70169b695a5d15de5b9c0be286828598756 (plain)
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
# 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
set sql_log_bin=0;
call mtr.add_suppression('Slave I/O: Get master BINLOG_CHECKSUM failed with error');
set sql_log_bin=1;
--enable_query_log
let $status_items= Master_User, Master_Host;
source include/show_slave_status.inc;

source include/stop_slave.inc;
change master to master_user='test';
source include/show_slave_status.inc;

--source include/reset_slave.inc
source include/show_slave_status.inc;

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;
--source include/reset_slave.inc
source include/start_slave.inc;
connection master;
create temporary table t1 (a int);
sync_slave_with_master;
source include/stop_slave.inc;
--source include/reset_slave.inc
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;
--source include/reset_slave.inc
source include/check_slave_no_error.inc;

#
# verifying start slave resets Last_IO_Error and Last_IO_Errno.
#

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

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;
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

--source include/reset_slave.inc
source include/check_slave_no_error.inc;
change master to master_user='root';


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

--source include/reset_slave.inc
--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;
set @@global.gtid_slave_pos= "";
--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
--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