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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
|
# 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('Replica I/O: Get source 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 REPLICATION SOURCE to SOURCE_USER='test';
source include/show_slave_status.inc;
reset slave;
source include/show_slave_status.inc;
--replace_column 2 ####
CHANGE REPLICATION SOURCE to SOURCE_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 'replica_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 REPLICATION SOURCE to SOURCE_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 REPLICATION SOURCE to SOURCE_USER='root';
source include/start_slave.inc;
source include/check_slave_no_error.inc;
#
# verifying reset slave resets Last_{IO,SQL}_Err{or,no}
#
--echo
--echo Sync slave, else STOP SLAVE may complain about open temporary table.
--echo
--source include/rpl_connection_master.inc
--source include/sync_slave_sql_with_master.inc
--source include/stop_slave.inc
--replace_column 2 ####
CHANGE REPLICATION SOURCE to SOURCE_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 REPLICATION SOURCE to SOURCE_USER='root';
#
# BUG#11809016 - NO WAY TO DISCOVER AN INSTANCE IS NO LONGER A SLAVE FOLLOWING MYSQL BUG#28796
#
reset slave;
--echo
--echo Sync slave, else STOP SLAVE may complain about open temporary table.
--echo
--source include/start_slave.inc
--source include/rpl_connection_master.inc
--source include/sync_slave_sql_with_master.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_REPLICA
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 REPLICATION SOURCE TO SOURCE_HOST= '$_slave_master_host', SOURCE_USER= '$_slave_master_user', SOURCE_PORT= $_slave_master_port
--source include/start_slave.inc
#
# Bug#27357189 MASTER_USER BECOMES 'TEST' IF IT IS EMPTY WHEN READ FROM REPO
#
# Clean all the previous info
# Sync with the master so we delete the temporary table before stop.
--source include/rpl_connection_master.inc
--source include/sync_slave_sql_with_master.inc
--source include/stop_slave.inc
--let $rpl_reset_slave_all= 1
--source include/rpl_reset_slave.inc
--echo # Configure the slave with an empty user
--replace_result $MASTER_MYPORT MASTER_PORT
--eval CHANGE REPLICATION SOURCE TO SOURCE_USER='', SOURCE_PORT=$MASTER_MYPORT, SOURCE_HOST='localhost'
--echo # Issue a RESET SLAVE instruction and try to start the slave IO thread that will error out
--let $rpl_reset_slave_all= 0
--source include/rpl_reset_slave.inc
START SLAVE IO_THREAD;
--let $slave_io_errno= convert_error(ER_REPLICA_FATAL_ERROR)
--source include/wait_for_slave_io_error.inc
--echo # Check the user is still empty
--let $_user= `SELECT user_name FROM mysql.slave_master_info`
--let $assert_cond= "$_user" = ""
--let $assert_text= User_name in slave_master_info is empty
--source include/assert.inc
--echo # Cleanup
--let $rpl_reset_slave_all= 1
--source include/rpl_reset_slave.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--eval CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.0.0.1', SOURCE_PORT=$MASTER_MYPORT, SOURCE_USER='root'
--source include/start_slave.inc
call mtr.add_suppression("Replica I/O for channel '': Fatal error: Invalid .* username when attempting to connect to the source server*");
--source include/rpl_end.inc
|