# Test resizing the InnoDB redo log. # Avoid CrashReporter popup on Mac --source include/not_crashrep.inc # innodb-force-recovery-crash needs debug --source include/have_debug.inc if (`SELECT @@innodb_log_file_size = 1048576`) { --skip Test requires innodb_log_file_size>1M. } call mtr.add_suppression("The log sequence numbers [0-9]+ and [0-9]+ in ibdata files do not match the log sequence number [0-9]+ in the ib_logfiles"); CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB; BEGIN; INSERT INTO t1 VALUES (42); let $restart_parameters = restart: --innodb-log-file-size=6M; --source include/kill_and_restart_mysqld.inc SELECT * FROM t1; INSERT INTO t1 VALUES (42); BEGIN; DELETE FROM t1; let $restart_parameters = restart: --innodb-log-files-in-group=3 --innodb-log-file-size=5M; --source include/kill_and_restart_mysqld.inc SELECT * FROM t1; INSERT INTO t1 VALUES (123); let MYSQLD_DATADIR= `select @@datadir`; let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err; let $args=--loose-console --core-file --log-error-verbosity=3 > $SEARCH_FILE 2>&1; let crash=--loose-console > $SEARCH_FILE 2>&1 --innodb-force-recovery-crash; BEGIN; DELETE FROM t1; --source include/kill_mysqld.inc --error 1 --exec $MYSQLD_CMD $args --innodb-log-group-home-dir=foo\;bar let SEARCH_PATTERN= syntax error in innodb_log_group_home_dir; --source include/search_pattern.inc --remove_file $SEARCH_FILE # On Windows, DBUG_SUICIDE() does exit(3) instead of SIGKILL (128+9). --echo --innodb-force-recovery-crash=1 --error 137,3 --exec $MYSQLD_CMD $crash=1 --log-error-verbosity=3 let SEARCH_PATTERN= Apply batch completed; --source include/search_pattern.inc --remove_file $SEARCH_FILE --echo --innodb-force-recovery-crash=3 --error 137,3 --exec $MYSQLD_CMD $crash=3 --log-error-verbosity=3 let SEARCH_PATTERN= Apply batch completed; --source include/search_pattern.inc --remove_file $SEARCH_FILE --error 1,42 --exec $MYSQLD_CMD $args --innodb-read-only let SEARCH_PATTERN= Can.t initiate database recovery, running in read-only-mode; --source include/search_pattern.inc --remove_file $SEARCH_FILE --echo --innodb-force-recovery-crash=4 --error 137,3 --exec $MYSQLD_CMD $crash=4 --log-error-verbosity=3 let SEARCH_PATTERN= Apply batch completed; --source include/search_pattern.inc let SEARCH_PATTERN= Resizing redo log from 3\*[0-9]+ to 2\*[0-9]+ bytes; --source include/search_pattern.inc --remove_file $SEARCH_FILE --echo --innodb-force-recovery-crash=5 --error 137,3 --exec $MYSQLD_CMD $crash=5 --log-error-verbosity=3 let SEARCH_PATTERN= Apply batch completed; --source include/search_pattern.inc let SEARCH_PATTERN= Resizing redo log from 3\*[0-9]+ to 2\*[0-9]+ bytes; --source include/search_pattern.inc --remove_file $SEARCH_FILE --error 1,42 --exec $MYSQLD_CMD $args --innodb-read-only let SEARCH_PATTERN= Can.t initiate database recovery, running in read-only-mode; --source include/search_pattern.inc --remove_file $SEARCH_FILE --echo --innodb-force-recovery-crash=6 --error 137,3 --exec $MYSQLD_CMD $crash=6 --log-error-verbosity=3 let SEARCH_PATTERN= Apply batch completed; --source include/search_pattern.inc let SEARCH_PATTERN= Resizing redo log from 3\*[0-9]+ to 2\*[0-9]+ bytes; --source include/search_pattern.inc --remove_file $SEARCH_FILE --echo --innodb-force-recovery-crash=7 --error 137,3 --exec $MYSQLD_CMD $crash=7 --log-error-verbosity=3 # this crashes right after deleting all log files --remove_file $SEARCH_FILE --error 1,42 --exec $MYSQLD_CMD $args --innodb-read-only let SEARCH_PATTERN= Cannot create log files in read-only mode; --source include/search_pattern.inc --remove_file $SEARCH_FILE --echo --innodb-force-recovery-crash=8 --error 137,3 --exec $MYSQLD_CMD $crash=8 --log-error-verbosity=3 let SEARCH_PATTERN= Setting log file .*ib_logfile[0-9]+ size to; --source include/search_pattern.inc --remove_file $SEARCH_FILE --echo --innodb-force-recovery-crash=9 --error 137,3 --exec $MYSQLD_CMD $crash=9 --log-error-verbosity=3 let SEARCH_PATTERN= Setting log file .*ib_logfile[0-9]+ size to; --source include/search_pattern.inc --remove_file $SEARCH_FILE # We should have perfectly synced files here. # Rename the log files, and trigger an error in recovery. --move_file $MYSQLD_DATADIR/ib_logfile101 $MYSQLD_DATADIR/ib_logfile0 --move_file $MYSQLD_DATADIR/ib_logfile1 $MYSQLD_DATADIR/ib_logfile1_hidden --error 1,42 --exec $MYSQLD_CMD $args let SEARCH_PATTERN= Only one log file found; --source include/search_pattern.inc --remove_file $SEARCH_FILE --move_file $MYSQLD_DATADIR/ib_logfile0 $MYSQLD_DATADIR/ib_logfile101 perl; die unless open(FILE, ">$ENV{MYSQLD_DATADIR}/ib_logfile0"); print FILE "garbage"; close(FILE); EOF --error 1,42 --exec $MYSQLD_CMD $args let SEARCH_PATTERN= Log file .*ib_logfile0 size 7 is not a multiple of innodb_page_size; --source include/search_pattern.inc --remove_file $SEARCH_FILE --remove_file $MYSQLD_DATADIR/ib_logfile0 --move_file $MYSQLD_DATADIR/ib_logfile101 $MYSQLD_DATADIR/ib_logfile0 perl; die unless open(FILE, ">$ENV{MYSQLD_DATADIR}/ib_logfile1"); print FILE "junkfill" x 131072; close(FILE); EOF --error 1,42 --exec $MYSQLD_CMD $args let SEARCH_PATTERN= Log file .*ib_logfile1 is of different size 1048576 bytes than other log files; --source include/search_pattern.inc --remove_file $SEARCH_FILE --remove_file $MYSQLD_DATADIR/ib_logfile1 --move_file $MYSQLD_DATADIR/ib_logfile0 $MYSQLD_DATADIR/ib_logfile101 --move_file $MYSQLD_DATADIR/ib_logfile1_hidden $MYSQLD_DATADIR/ib_logfile1 --echo --innodb-force-recovery-crash=10 --error 137,3 --exec $MYSQLD_CMD $crash=10 --log-error-verbosity=3 let SEARCH_PATTERN= Setting log file .*ib_logfile[0-9]+ size to; --source include/search_pattern.inc let SEARCH_PATTERN= Renaming log file .*ib_logfile101 to .*ib_logfile0; --source include/search_pattern.inc --remove_file $SEARCH_FILE --source include/start_mysqld.inc SELECT * FROM t1; DROP TABLE t1;