|
| 1 | +############################################################################### |
| 2 | +# Bug#24901077: RESET SLAVE ALL DOES NOT ALWAYS RESET SLAVE |
| 3 | +# |
| 4 | +# Problem: |
| 5 | +# ======= |
| 6 | +# If you have a relay log index file that has ended up with |
| 7 | +# some relay log files that do not exists, then RESET SLAVE |
| 8 | +# ALL is not enough to get back to a clean state. |
| 9 | +############################################################################### |
| 10 | +# Remove all slave-relay-bin.0* files (do not remove slave-relay-bin.index) |
| 11 | +# During server restart rli initialization will fail as there are no |
| 12 | +# relay logs. In case of bug RESET SLAVE will not do the required clean up |
| 13 | +# as rli is not inited and subsequent START SLAVE will fail. |
| 14 | +# Disable "Warning 1612 Being purged log ./slave-relay-bin.0* was not found" |
| 15 | +# because it is different on Unix and Windows systems. |
| 16 | + |
| 17 | +--source include/have_binlog_format_mixed.inc |
| 18 | +--source include/master-slave.inc |
| 19 | + |
| 20 | +--source include/rpl_connection_master.inc |
| 21 | +CREATE TABLE t1 (c1 INT); |
| 22 | +INSERT INTO t1 (c1) VALUES (1); |
| 23 | +--source include/sync_slave_sql_with_master.inc |
| 24 | + |
| 25 | +--source include/rpl_connection_slave.inc |
| 26 | +--source include/stop_slave_sql.inc |
| 27 | +--let $MYSQLD_SLAVE_DATADIR= `select @@datadir` |
| 28 | + |
| 29 | +--source include/rpl_connection_master.inc |
| 30 | +# Generate more relay logs on slave. |
| 31 | +FLUSH LOGS; |
| 32 | +FLUSH LOGS; |
| 33 | +INSERT INTO t1 (c1) VALUES (2); |
| 34 | + |
| 35 | +--source include/sync_slave_io_with_master.inc |
| 36 | +call mtr.add_suppression("File '.*slave-relay-bin."); |
| 37 | +call mtr.add_suppression("Could not open log file"); |
| 38 | +call mtr.add_suppression("Failed to open the relay log"); |
| 39 | +call mtr.add_suppression("Slave failed to initialize relay log info structure"); |
| 40 | +call mtr.add_suppression("Could not find target log file mentioned in relay log info in the index file"); |
| 41 | +call mtr.add_suppression("Failed to initialize the relay-log-info structure"); |
| 42 | +call mtr.add_suppression("Failed to initialize the master info structure"); |
| 43 | + |
| 44 | +# Stop slave |
| 45 | +--let $rpl_server_number= 2 |
| 46 | +--source include/rpl_stop_server.inc |
| 47 | + |
| 48 | +# Delete file(s) |
| 49 | +--echo # Removing $remove_pattern file(s) |
| 50 | +--let $remove_pattern= slave-relay-bin.0* |
| 51 | +--remove_files_wildcard $MYSQLD_SLAVE_DATADIR $remove_pattern |
| 52 | + |
| 53 | +# Start slave |
| 54 | +--let $rpl_server_number= 2 |
| 55 | +--source include/rpl_start_server.inc |
| 56 | + |
| 57 | +# Start slave must fail because of the removed file(s). |
| 58 | +--error ER_SLAVE_RLI_INIT_REPOSITORY |
| 59 | +START SLAVE; |
| 60 | + |
| 61 | +# Try a second time, it must fail again. |
| 62 | +--error ER_SLAVE_RLI_INIT_REPOSITORY |
| 63 | +START SLAVE; |
| 64 | + |
| 65 | +# Retrieve master executed position before reset slave. |
| 66 | +--let $master_exec_file= query_get_value("SHOW SLAVE STATUS", Relay_Master_Log_File, 1) |
| 67 | +--let $master_exec_pos= query_get_value("SHOW SLAVE STATUS", Exec_Master_Log_Pos, 1) |
| 68 | + |
| 69 | +# Reset slave. |
| 70 | +# Disable "Warning 1612 Being purged log ./slave-relay-bin.0* was not found" |
| 71 | +# because it is different on Unix and Windows systems. |
| 72 | +--disable_warnings |
| 73 | +RESET SLAVE; |
| 74 | +--enable_warnings |
| 75 | +RESET MASTER; |
| 76 | +DROP TABLE t1; |
| 77 | +# Start slave. |
| 78 | +--source include/start_slave.inc |
| 79 | + |
| 80 | +--source include/rpl_connection_master.inc |
| 81 | +--source include/sync_slave_sql_with_master.inc |
| 82 | +# Check consistency. |
| 83 | +--let $diff_tables= master:t1, slave:t1 |
| 84 | +--source include/diff_tables.inc |
| 85 | + |
| 86 | +# Cleanup |
| 87 | +--source include/rpl_connection_master.inc |
| 88 | +DROP TABLE t1; |
| 89 | +--source include/sync_slave_sql_with_master.inc |
| 90 | +--source include/rpl_end.inc |
0 commit comments