1call mtr.add_suppression('Attempting backtrace'); 2call mtr.add_suppression('MYSQL_BIN_LOG::purge_logs failed to process registered files that would be purged.'); 3call mtr.add_suppression('MYSQL_BIN_LOG::open failed to sync the index file'); 4call mtr.add_suppression('Turning logging off for the whole duration of the MySQL server process.'); 5call mtr.add_suppression('Could not open .*'); 6call mtr.add_suppression('MYSQL_BIN_LOG::purge_logs failed to clean registers before purging logs.'); 7RESET MASTER; 8flush logs; 9flush logs; 10flush logs; 11show binary logs; 12Log_name File_size 13master-bin.000001 # 14master-bin.000002 # 15master-bin.000003 # 16master-bin.000004 # 17purge binary logs TO 'master-bin.000004'; 18Warnings: 19Warning 1612 Being purged log master-bin.000001 was not found 20*** must show a list starting from the 'TO' argument of PURGE *** 21show binary logs; 22Log_name File_size 23master-bin.000004 # 24reset master; 25flush logs; 26flush logs; 27flush logs; 28*** must be a warning master-bin.000001 was not found *** 29Warnings: 30Warning 1868 file master-bin.000004 was not purged because it is the active log file. 31Warning 1612 Being purged log master-bin.000001 was not found 32*** must show one record, of the active binlog, left in the index file after PURGE *** 33show binary logs; 34Log_name File_size 35master-bin.000004 # 36reset master; 37flush logs; 38flush logs; 39flush logs; 40purge binary logs TO 'master-bin.000002'; 41ERROR HY000: Fatal error during log purge 42show warnings; 43Level Code Message 44Warning 1377 a problem with deleting master-bin.000001; consider examining correspondence of your binlog index file to the actual binlog files 45Error 1377 Fatal error during log purge 46reset master; 47# crash_purge_before_update_index 48flush logs; 49SET SESSION debug="+d,crash_purge_before_update_index"; 50purge binary logs TO 'master-bin.000002'; 51ERROR HY000: Lost connection to MySQL server during query 52SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 53SELECT @index; 54@index 55master-bin.000001 56master-bin.000002 57master-bin.000003 58 59# crash_purge_non_critical_after_update_index 60flush logs; 61SET SESSION debug="+d,crash_purge_non_critical_after_update_index"; 62purge binary logs TO 'master-bin.000004'; 63ERROR HY000: Lost connection to MySQL server during query 64SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 65SELECT @index; 66@index 67master-bin.000004 68master-bin.000005 69 70# crash_purge_critical_after_update_index 71flush logs; 72SET SESSION debug="+d,crash_purge_critical_after_update_index"; 73purge binary logs TO 'master-bin.000006'; 74ERROR HY000: Lost connection to MySQL server during query 75SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 76SELECT @index; 77@index 78master-bin.000006 79master-bin.000007 80 81# crash_create_non_critical_before_update_index 82SET SESSION debug="+d,crash_create_non_critical_before_update_index"; 83flush logs; 84ERROR HY000: Lost connection to MySQL server during query 85SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 86SELECT @index; 87@index 88master-bin.000006 89master-bin.000007 90master-bin.000008 91 92# crash_create_critical_before_update_index 93SET SESSION debug="+d,crash_create_critical_before_update_index"; 94flush logs; 95ERROR HY000: Lost connection to MySQL server during query 96SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 97SELECT @index; 98@index 99master-bin.000006 100master-bin.000007 101master-bin.000008 102master-bin.000009 103 104# crash_create_after_update_index 105SET SESSION debug="+d,crash_create_after_update_index"; 106flush logs; 107ERROR HY000: Lost connection to MySQL server during query 108SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 109SELECT @index; 110@index 111master-bin.000006 112master-bin.000007 113master-bin.000008 114master-bin.000009 115master-bin.000010 116master-bin.000011 117 118# 119# This should put the server in unsafe state and stop 120# accepting any command. If we inject a fault at this 121# point and continue the execution the server crashes. 122# 123SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 124SELECT @index; 125@index 126master-bin.000006 127master-bin.000007 128master-bin.000008 129master-bin.000009 130master-bin.000010 131master-bin.000011 132 133# fault_injection_registering_index 134SET SESSION debug="+d,fault_injection_registering_index"; 135flush logs; 136ERROR HY000: Can't open file: 'master-bin.000012' (errno: 1 - Operation not permitted) 137SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 138SELECT @index; 139@index 140master-bin.000006 141master-bin.000007 142master-bin.000008 143master-bin.000009 144master-bin.000010 145master-bin.000011 146 147SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 148SELECT @index; 149@index 150master-bin.000006 151master-bin.000007 152master-bin.000008 153master-bin.000009 154master-bin.000010 155master-bin.000011 156master-bin.000012 157 158# fault_injection_updating_index 159SET SESSION debug="+d,fault_injection_updating_index"; 160flush logs; 161ERROR HY000: Can't open file: 'master-bin.000013' (errno: 1 - Operation not permitted) 162SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 163SELECT @index; 164@index 165master-bin.000006 166master-bin.000007 167master-bin.000008 168master-bin.000009 169master-bin.000010 170master-bin.000011 171master-bin.000012 172 173SET @index=LOAD_FILE('MYSQLTEST_VARDIR/mysqld.1/data//master-bin.index'); 174SELECT @index; 175@index 176master-bin.000006 177master-bin.000007 178master-bin.000008 179master-bin.000009 180master-bin.000010 181master-bin.000011 182master-bin.000012 183master-bin.000013 184 185# Test case6: Set DEBUG POINT before rename index file when 186# appending a binlog file name to index file. 187show binary logs; 188Log_name File_size 189master-bin.000006 # 190master-bin.000007 # 191master-bin.000008 # 192master-bin.000009 # 193master-bin.000010 # 194master-bin.000011 # 195master-bin.000012 # 196master-bin.000013 # 197SET SESSION debug="+d,crash_create_before_rename_index_file"; 198flush logs; 199ERROR HY000: Lost connection to MySQL server during query 200# Restart the master server 201# Test if the index file has the correct data, 202# i.e. binlog file name is added. 203show binary logs; 204Log_name File_size 205master-bin.000006 # 206master-bin.000007 # 207master-bin.000008 # 208master-bin.000009 # 209master-bin.000010 # 210master-bin.000011 # 211master-bin.000012 # 212master-bin.000013 # 213master-bin.000014 # 214master-bin.000015 # 215# Test case7: Set DEBUG POINT after rename index file when 216# appending a binlog file name to index file. 217SET SESSION debug="+d,crash_create_after_rename_index_file"; 218flush logs; 219ERROR HY000: Lost connection to MySQL server during query 220# Restart the master server 221# Test if the index file has the correct data, 222# i.e. binlog file name is added. 223show binary logs; 224Log_name File_size 225master-bin.000006 # 226master-bin.000007 # 227master-bin.000008 # 228master-bin.000009 # 229master-bin.000010 # 230master-bin.000011 # 231master-bin.000012 # 232master-bin.000013 # 233master-bin.000014 # 234master-bin.000015 # 235master-bin.000016 # 236master-bin.000017 # 237# Test case8: Set DEBUG POINT after rename index file when 238# purging the index file. 239show binary logs; 240Log_name File_size 241master-bin.000006 # 242master-bin.000007 # 243master-bin.000008 # 244master-bin.000009 # 245master-bin.000010 # 246master-bin.000011 # 247master-bin.000012 # 248master-bin.000013 # 249master-bin.000014 # 250master-bin.000015 # 251master-bin.000016 # 252master-bin.000017 # 253SET SESSION debug="+d,crash_create_after_rename_index_file"; 254purge binary logs TO 'master-bin.000010'; 255ERROR HY000: Lost connection to MySQL server during query 256# Restart the master server 257# Test if the index file has the correct data, 258# i.e. requested binlog file names are removed. 259show binary logs; 260Log_name File_size 261master-bin.000010 # 262master-bin.000011 # 263master-bin.000012 # 264master-bin.000013 # 265master-bin.000014 # 266master-bin.000015 # 267master-bin.000016 # 268master-bin.000017 # 269master-bin.000018 # 270# Test case9: Set DEBUG POINT befor rename index file when 271# purging the index file. 272show binary logs; 273Log_name File_size 274master-bin.000010 # 275master-bin.000011 # 276master-bin.000012 # 277master-bin.000013 # 278master-bin.000014 # 279master-bin.000015 # 280master-bin.000016 # 281master-bin.000017 # 282master-bin.000018 # 283SET SESSION debug="+d,crash_create_before_rename_index_file"; 284purge binary logs TO 'master-bin.000012'; 285ERROR HY000: Lost connection to MySQL server during query 286# Restart the master server 287# Test if the index file has the correct data, 288# i.e. requested binlog file names are removed. 289show binary logs; 290Log_name File_size 291master-bin.000012 # 292master-bin.000013 # 293master-bin.000014 # 294master-bin.000015 # 295master-bin.000016 # 296master-bin.000017 # 297master-bin.000018 # 298master-bin.000019 # 299# Test case10: Inject a fault to copy part content to the temp file 300# when purging the index file. 301show binary logs; 302Log_name File_size 303master-bin.000012 # 304master-bin.000013 # 305master-bin.000014 # 306master-bin.000015 # 307master-bin.000016 # 308master-bin.000017 # 309master-bin.000018 # 310master-bin.000019 # 311SET SESSION debug="+d,fault_injection_copy_part_file"; 312purge binary logs TO 'master-bin.000014'; 313ERROR HY000: Lost connection to MySQL server during query 314# Restart the master server 315# Test the index file is complete, although is not purged successfully. 316show binary logs; 317Log_name File_size 318master-bin.000012 # 319master-bin.000013 # 320master-bin.000014 # 321master-bin.000015 # 322master-bin.000016 # 323master-bin.000017 # 324master-bin.000018 # 325master-bin.000019 # 326master-bin.000020 # 327# Test case11: Bug #20381055SERVER CRASHES IF INDEX FILE IS OPENED BY 328SET SESSION debug="d,force_index_file_delete_failure"; 329call mtr.add_suppression("Failed to delete the existing index file"); 330call mtr.add_suppression("failed to move crash safe index file to index file"); 331call mtr.add_suppression("failed to update the index file"); 332PURGE BINARY LOGS TO 'master-bin.000014';; 333ERROR HY000: I/O error reading log index file 334# Test the index file is complete, although is not purged successfully. 335# Also this will indicate that binary logging is not disabled. 336show binary logs; 337Log_name File_size 338master-bin.000012 # 339master-bin.000013 # 340master-bin.000014 # 341master-bin.000015 # 342master-bin.000016 # 343master-bin.000017 # 344master-bin.000018 # 345master-bin.000019 # 346master-bin.000020 # 347SET GLOBAL binlog_error_action='IGNORE_ERROR'; 348FLUSH LOGS; 349ERROR HY000: Can't open file: 'master-bin.000021' (errno: 1 - Operation not permitted) 350SHOW BINARY LOGS; 351ERROR HY000: You are not using binary logging 352show binary logs; 353Log_name File_size 354master-bin.000012 # 355master-bin.000013 # 356master-bin.000014 # 357master-bin.000015 # 358master-bin.000016 # 359master-bin.000017 # 360master-bin.000018 # 361master-bin.000019 # 362master-bin.000020 # 363master-bin.000021 # 364CREATE TABLE t1(i INT); 365SET GLOBAL binlog_error_action='IGNORE_ERROR'; 366SET SESSION debug="+d,force_index_file_delete_failure"; 367SET SESSION debug="+d,force_rotate"; 368INSERT INTO t1 VALUES (12); 369ERROR HY000: Can't open file: 'master-bin.000022' (errno: 1 - Operation not permitted) 370SHOW BINARY LOGS; 371ERROR HY000: You are not using binary logging 372show binary logs; 373Log_name File_size 374master-bin.000012 # 375master-bin.000013 # 376master-bin.000014 # 377master-bin.000015 # 378master-bin.000016 # 379master-bin.000017 # 380master-bin.000018 # 381master-bin.000019 # 382master-bin.000020 # 383master-bin.000021 # 384master-bin.000022 # 385DROP TABLE t1; 386SET SESSION debug=""; 387# Test case11: Ends 388# Test case12: Bug#25839610 ABORT OCCUR DURING SLAVE BACKUP 389# WHEN RELAY LOG INDEX IS LOCK 390# This test verifies that serveral retries are performed 391# if there is a failure while deleting/renaming index files. 392SET SESSION debug="+d,simulate_index_file_delete_failure"; 393SET SESSION debug="+d,simulate_crash_safe_index_file_rename_failure"; 394FLUSH LOGS; 395include/assert_grep.inc [Retried for delete.] 396include/assert_grep.inc [Retried for rename.] 397SET SESSION debug=""; 398# Test case12: Ends 399End of tests 400