mirror of
https://github.com/MariaDB/server.git
synced 2025-11-25 17:25:02 +03:00
Now there can be only one log file instead of several which
logically work as a single file.
Possible names of redo log files: ib_logfile0,
ib_logfile101 (for just created one)
innodb_log_fiels_in_group: value of this variable is not used
by InnoDB. Possible values are still 1..100, to not break upgrade
LOG_FILE_NAME: add constant of value "ib_logfile0"
LOG_FILE_NAME_PREFIX: add constant of value "ib_logfile"
get_log_file_path(): convenience function that returns full
path of a redo log file
SRV_N_LOG_FILES_MAX: removed
srv_n_log_files: we can't remove this for compatibility reasons,
but now server doesn't use this variable
log_sys_t::file::fd: now just one, not std::vector
log_sys_t::log_capacity: removed word 'group'
find_and_check_log_file(): part of logic from huge srv_start()
moved here
recv_sys_t::files: file descriptors of redo log files.
There can be several of those in case we're upgrading
from older MariaDB version.
recv_sys_t::remove_extra_log_files: whether to remove
ib_logfile{1,2,3...} after successfull upgrade.
recv_sys_t::read(): open if needed and read from one
of several log files
recv_sys_t::files_size(): open if needed and return files count
redo_file_sizes_are_correct(): check that redo log files
sizes are equal. Just to log an error for a user.
Corresponding check was moved from srv0start.cc
namespace deprecated: put all deprecated variables here to
prevent usage of it by us, developers
216 lines
6.9 KiB
Plaintext
216 lines
6.9 KiB
Plaintext
# Test resizing the InnoDB redo log.
|
|
--source include/innodb_page_size_small.inc
|
|
# Embedded server tests do not support restarting
|
|
--source include/not_embedded.inc
|
|
# DBUG_EXECUTE_IF is needed
|
|
--source include/have_debug.inc
|
|
# This test is slow on buildbot.
|
|
--source include/big_test.inc
|
|
|
|
if (`SELECT @@innodb_log_file_size = 1048576`) {
|
|
--skip Test requires innodb_log_file_size>1M.
|
|
}
|
|
|
|
--disable_query_log
|
|
call mtr.add_suppression("InnoDB: The log sequence numbers [0-9]+ and [0-9]+ in ibdata file do not match the log sequence number [0-9]+ in the ib_logfile");
|
|
call mtr.add_suppression("syntax error in innodb_log_group_home_dir");
|
|
call mtr.add_suppression("Plugin 'InnoDB' init function returned error");
|
|
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
|
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
|
call mtr.add_suppression("InnoDB: innodb_read_only prevents crash recovery");
|
|
call mtr.add_suppression("InnoDB: Are you sure you are using the right ib_logfile");
|
|
call mtr.add_suppression("InnoDB: Cannot (create|resize) log file in read-only mode");
|
|
call mtr.add_suppression("InnoDB: Can't initiate database recovery, running in read-only-mode");
|
|
call mtr.add_suppression("InnoDB: Log file .*ib_logfile0.* size");
|
|
call mtr.add_suppression("InnoDB: Unable to open .*ib_logfile0. to check native AIO read support");
|
|
FLUSH TABLES;
|
|
--enable_query_log
|
|
let MYSQLD_DATADIR= `select @@datadir`;
|
|
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
|
|
|
|
--source include/shutdown_mysqld.inc
|
|
--move_file $MYSQLD_DATADIR/ib_logfile0 $MYSQLD_DATADIR/ib_logfile.old
|
|
write_file $MYSQLD_DATADIR/ib_logfile0;
|
|
EOF
|
|
let $check_no_innodb=SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
|
WHERE engine = 'innodb'
|
|
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
|
|
|
--let $restart_parameters= --innodb-thread-concurrency=1 --innodb-log-file-size=2m
|
|
--source include/start_mysqld.inc
|
|
|
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
|
CHECK TABLE t1;
|
|
|
|
--let $restart_parameters= --innodb-thread-concurrency=100 --innodb-log-file-size=20M
|
|
--source include/restart_mysqld.inc
|
|
|
|
BEGIN;
|
|
INSERT INTO t1 VALUES (42);
|
|
|
|
let $restart_parameters = --innodb-log-file-size=12M;
|
|
let $shutdown_timeout=0;
|
|
--source include/restart_mysqld.inc
|
|
|
|
SELECT * FROM t1;
|
|
|
|
INSERT INTO t1 VALUES (42);
|
|
BEGIN;
|
|
DELETE FROM t1;
|
|
|
|
let $restart_parameters = --innodb-log-file-size=5M;
|
|
--source include/restart_mysqld.inc
|
|
let $shutdown_timeout=;
|
|
|
|
SELECT * FROM t1;
|
|
|
|
INSERT INTO t1 VALUES (0),(123);
|
|
|
|
let SEARCH_ABORT = NOT FOUND;
|
|
|
|
BEGIN;
|
|
DELETE FROM t1 WHERE a>0;
|
|
|
|
--echo # Persist the state of the above incomplete transaction by
|
|
--echo # causing a redo log write for another transaction.
|
|
--connect(con1, localhost, root)
|
|
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
|
DELETE FROM t1 WHERE a=0;
|
|
--disconnect con1
|
|
--connection default
|
|
|
|
--source include/kill_mysqld.inc
|
|
|
|
--let $restart_parameters= --innodb-log-group-home-dir=foo\;bar
|
|
--source include/start_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
let SEARCH_PATTERN= syntax error in innodb_log_group_home_dir;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_1
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
let SEARCH_PATTERN= InnoDB: Starting crash recovery from checkpoint LSN=.*;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_3
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
|
|
--let $restart_parameters= --innodb-read-only
|
|
--source include/restart_mysqld.inc
|
|
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
let SEARCH_PATTERN= InnoDB: innodb_read_only prevents crash recovery;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_4
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
let SEARCH_PATTERN= redo log from [0-9]+ to [0-9]+ bytes;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_5
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
let SEARCH_PATTERN= redo log from [0-9]+ to [0-9]+ bytes;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --innodb-read-only
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
let SEARCH_PATTERN= InnoDB: innodb_read_only prevents crash recovery;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_6
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
|
|
let SEARCH_PATTERN= redo log from [0-9]+ to [0-9]+ bytes;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_7
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
|
|
# this aborts right after deleting all log files
|
|
|
|
--let $restart_parameters= --innodb-read-only
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
|
|
let SEARCH_PATTERN= InnoDB: Cannot create log file in read-only mode;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_8
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
|
|
let SEARCH_PATTERN= InnoDB: Setting log file .*ib_logfile[0-9]+ size to;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_9
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
|
|
let SEARCH_PATTERN= InnoDB: Setting log file .*ib_logfile[0-9]+ size to;
|
|
--source include/search_pattern_in_file.inc
|
|
--source include/shutdown_mysqld.inc
|
|
|
|
# We should have perfectly synced files here.
|
|
# Trigger an error in recovery.
|
|
|
|
perl;
|
|
die unless open(FILE, ">$ENV{MYSQLD_DATADIR}/ib_logfile0");
|
|
print FILE "garbage";
|
|
close(FILE);
|
|
EOF
|
|
|
|
--source include/start_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
let SEARCH_PATTERN= InnoDB: Log file .*ib_logfile0 size 7 is not a multiple of 512 bytes;
|
|
--source include/search_pattern_in_file.inc
|
|
--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
|
|
|
|
--source include/restart_mysqld.inc
|
|
SELECT * FROM t1;
|
|
|
|
--remove_file $MYSQLD_DATADIR/ib_logfile1
|
|
--move_file $MYSQLD_DATADIR/ib_logfile0 $MYSQLD_DATADIR/ib_logfile101
|
|
|
|
--let $restart_parameters= --debug=d,innodb_log_abort_10
|
|
--source include/restart_mysqld.inc
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
SELECT * FROM t1;
|
|
|
|
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
|
|
|
|
--let $restart_parameters=
|
|
--source include/restart_mysqld.inc
|
|
|
|
SELECT * FROM t1;
|
|
DROP TABLE t1;
|