mirror of
https://github.com/MariaDB/server.git
synced 2025-12-12 08:01:43 +03:00
As noted in MDEV-8841, any test that kills the server must issue FLUSH TABLES, so that tables of crash-unsafe storage engines will not be corrupted. Consistently issue this statement after any call mtr.add_suppression() calls. Also, do not invoke shutdown_server directly, but use helpers instead.
190 lines
6.2 KiB
Plaintext
190 lines
6.2 KiB
Plaintext
# Test resizing the InnoDB redo log.
|
|
|
|
--source include/have_innodb.inc
|
|
|
|
# Embedded server does not support crashing
|
|
--source include/not_embedded.inc
|
|
# 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.
|
|
}
|
|
|
|
--disable_query_log
|
|
call mtr.add_suppression("InnoDB: Resizing redo log");
|
|
call mtr.add_suppression("InnoDB: Starting to delete and rewrite log files");
|
|
call mtr.add_suppression("InnoDB: New log files created");
|
|
call mtr.add_suppression("InnoDB: 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");
|
|
FLUSH TABLES;
|
|
--enable_query_log
|
|
|
|
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t1 VALUES (42);
|
|
|
|
let $restart_parameters = --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 = --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_ABORT = NOT FOUND;
|
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err;
|
|
# MDEV-11689 FIXME: add --core-file to $args, and remove all ,134 below
|
|
let $args=--innodb --unknown-option --loose-console > $SEARCH_FILE 2>&1;
|
|
let $crash=$args --innodb-force-recovery-crash;
|
|
|
|
BEGIN;
|
|
DELETE FROM t1;
|
|
|
|
--source include/kill_mysqld.inc
|
|
|
|
--error 2
|
|
--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_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
|
|
--echo --innodb-force-recovery-crash=1
|
|
--error 3,134
|
|
--exec $MYSQLD_CMD $crash=1
|
|
let SEARCH_PATTERN= InnoDB: Starting an apply batch of log records;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
--echo --innodb-force-recovery-crash=3
|
|
--error 3,134
|
|
--exec $MYSQLD_CMD $crash=3
|
|
let SEARCH_PATTERN= InnoDB: Starting an apply batch of log records;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
|
|
--error 2
|
|
--exec $MYSQLD_CMD $args --innodb-read-only
|
|
let SEARCH_PATTERN= InnoDB: innodb_read_only prevents crash recovery;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
|
|
--echo --innodb-force-recovery-crash=4
|
|
--error 3,134
|
|
--exec $MYSQLD_CMD $crash=4
|
|
let SEARCH_PATTERN= InnoDB: Starting an apply batch of log records;
|
|
--source include/search_pattern_in_file.inc
|
|
let SEARCH_PATTERN= InnoDB: Resizing redo log from 3\*[0-9]+ to 2\*[0-9]+ pages;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
--echo --innodb-force-recovery-crash=5
|
|
--error 3,134
|
|
--exec $MYSQLD_CMD $crash=5
|
|
let SEARCH_PATTERN= InnoDB: Starting an apply batch of log records;
|
|
--source include/search_pattern_in_file.inc
|
|
let SEARCH_PATTERN= InnoDB: Resizing redo log from 3\*[0-9]+ to 2\*[0-9]+ pages;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
|
|
--error 2
|
|
--exec $MYSQLD_CMD $args --innodb-read-only
|
|
let SEARCH_PATTERN= InnoDB: innodb_read_only prevents crash recovery;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
|
|
--echo --innodb-force-recovery-crash=6
|
|
--error 3,134
|
|
--exec $MYSQLD_CMD $crash=6
|
|
let SEARCH_PATTERN= InnoDB: Starting an apply batch of log records;
|
|
--source include/search_pattern_in_file.inc
|
|
let SEARCH_PATTERN= InnoDB: Resizing redo log from 3\*[0-9]+ to 2\*[0-9]+ pages;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
--echo --innodb-force-recovery-crash=7
|
|
--error 3,134
|
|
--exec $MYSQLD_CMD $crash=7
|
|
# this crashes right after deleting all log files
|
|
--remove_file $SEARCH_FILE
|
|
|
|
--error 2
|
|
--exec $MYSQLD_CMD $args --innodb-read-only
|
|
let SEARCH_PATTERN= InnoDB: Cannot create log files in read-only mode;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
|
|
--echo --innodb-force-recovery-crash=8
|
|
--error 3,134
|
|
--exec $MYSQLD_CMD $crash=8
|
|
let SEARCH_PATTERN= InnoDB: Setting log file .*ib_logfile[0-9]+ size to;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
--echo --innodb-force-recovery-crash=9
|
|
--error 3,134
|
|
--exec $MYSQLD_CMD $crash=9
|
|
let SEARCH_PATTERN= InnoDB: Setting log file .*ib_logfile[0-9]+ size to;
|
|
--source include/search_pattern_in_file.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 2,134
|
|
--exec $MYSQLD_CMD $args
|
|
let SEARCH_PATTERN= InnoDB: Only one log file found;
|
|
--source include/search_pattern_in_file.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 2,134
|
|
--exec $MYSQLD_CMD $args
|
|
let SEARCH_PATTERN= InnoDB: Log file .*ib_logfile0 size 7 is not a multiple of innodb_page_size;
|
|
--source include/search_pattern_in_file.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 2,134
|
|
--exec $MYSQLD_CMD $args
|
|
let SEARCH_PATTERN= InnoDB: Log file .*ib_logfile1 is of different size 1048576 bytes than other log files;
|
|
--source include/search_pattern_in_file.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 3,134
|
|
--exec $MYSQLD_CMD $crash=10
|
|
let SEARCH_PATTERN= InnoDB: Setting log file .*ib_logfile[0-9]+ size to;
|
|
--source include/search_pattern_in_file.inc
|
|
let SEARCH_PATTERN= InnoDB: Renaming log file .*ib_logfile101 to .*ib_logfile0;
|
|
--source include/search_pattern_in_file.inc
|
|
--remove_file $SEARCH_FILE
|
|
|
|
--let $restart_parameters=
|
|
--source include/start_mysqld.inc
|
|
|
|
SELECT * FROM t1;
|
|
DROP TABLE t1;
|