polardbxengine/mysql-test/suite/innodb/t/log_file_size.test

179 lines
5.7 KiB
Plaintext

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