mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-32452 InnoDB system tablespace is not shrunk on slow shutdown
- During slow shutdown, shrink the system tablespace which
was done in commit f9003c73a1
(MDEV-14795)
This commit is contained in:
23
mysql-test/suite/innodb/r/sys_truncate_shutdown.result
Normal file
23
mysql-test/suite/innodb/r/sys_truncate_shutdown.result
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
SET GLOBAL innodb_fast_shutdown=0;
|
||||||
|
# restart
|
||||||
|
SET GLOBAL INNODB_FILE_PER_TABLE= 0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1287 '@@innodb_file_per_table' is deprecated and will be removed in a future release
|
||||||
|
SET UNIQUE_CHECKS=0, FOREIGN_KEY_CHECKS=0;
|
||||||
|
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||||
|
f3 INT NOT NULL, INDEX(f1),
|
||||||
|
INDEX(f2), INDEX(f3))ENGINE=InnoDB;
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
NAME FILE_SIZE
|
||||||
|
innodb_system 70254592
|
||||||
|
SET GLOBAL innodb_fast_shutdown=0;
|
||||||
|
# restart
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
NAME FILE_SIZE
|
||||||
|
innodb_system 3145728
|
41
mysql-test/suite/innodb/r/sys_truncate_shutdown_debug.result
Normal file
41
mysql-test/suite/innodb/r/sys_truncate_shutdown_debug.result
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
call mtr.add_suppression("InnoDB: Cannot shrink the system tablespace");
|
||||||
|
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
||||||
|
call mtr.add_suppression("Plugin 'InnoDB' init function returned error");
|
||||||
|
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
||||||
|
SET GLOBAL innodb_fast_shutdown=0;
|
||||||
|
# restart
|
||||||
|
SET GLOBAL INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG=2;
|
||||||
|
SET GLOBAL INNODB_FILE_PER_TABLE= 0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1287 '@@innodb_file_per_table' is deprecated and will be removed in a future release
|
||||||
|
SET UNIQUE_CHECKS=0, FOREIGN_KEY_CHECKS=0;
|
||||||
|
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||||
|
f3 INT NOT NULL, INDEX(f1),
|
||||||
|
INDEX(f2), INDEX(f3))ENGINE=InnoDB;
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
NAME FILE_SIZE
|
||||||
|
innodb_system 540016640
|
||||||
|
SET GLOBAL INNODB_FAST_SHUTDOWN=0;
|
||||||
|
SET GLOBAL DEBUG_DBUG="+d,shrink_buffer_pool_full";
|
||||||
|
# restart
|
||||||
|
FOUND 1 /\[Warning\] InnoDB: Cannot shrink the system tablespace/ in mysqld.1.err
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
NAME FILE_SIZE
|
||||||
|
innodb_system 540016640
|
||||||
|
SET GLOBAL INNODB_FAST_SHUTDOWN=0;
|
||||||
|
SET GLOBAL DEBUG_DBUG="+d,mtr_log_max_size";
|
||||||
|
# restart
|
||||||
|
FOUND 1 /\[ERROR\] InnoDB: Cannot shrink the system tablespace/ in mysqld.1.err
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
NAME FILE_SIZE
|
||||||
|
innodb_system 540016640
|
||||||
|
SET GLOBAL INNODB_FAST_SHUTDOWN=0;
|
||||||
|
# restart: --debug_dbug=+d,crash_after_sys_truncate
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
NAME FILE_SIZE
|
||||||
|
innodb_system 3145728
|
3
mysql-test/suite/innodb/t/sys_truncate_shutdown.opt
Normal file
3
mysql-test/suite/innodb/t/sys_truncate_shutdown.opt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--innodb_data_file_path=ibdata1:1M:autoextend
|
||||||
|
--innodb_sys_tablespaces
|
||||||
|
--innodb_page_size=4k
|
20
mysql-test/suite/innodb/t/sys_truncate_shutdown.test
Normal file
20
mysql-test/suite/innodb/t/sys_truncate_shutdown.test
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_sequence.inc
|
||||||
|
SET GLOBAL innodb_fast_shutdown=0;
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
SET GLOBAL INNODB_FILE_PER_TABLE= 0;
|
||||||
|
SET UNIQUE_CHECKS=0, FOREIGN_KEY_CHECKS=0;
|
||||||
|
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||||
|
f3 INT NOT NULL, INDEX(f1),
|
||||||
|
INDEX(f2), INDEX(f3))ENGINE=InnoDB;
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
|
||||||
|
SET GLOBAL innodb_fast_shutdown=0;
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
@@ -0,0 +1,3 @@
|
|||||||
|
--innodb_data_file_path=ibdata1:1M:autoextend
|
||||||
|
--innodb_sys_tablespaces
|
||||||
|
--innodb_page_size=4k
|
51
mysql-test/suite/innodb/t/sys_truncate_shutdown_debug.test
Normal file
51
mysql-test/suite/innodb/t/sys_truncate_shutdown_debug.test
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_sequence.inc
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_debug.inc
|
||||||
|
|
||||||
|
call mtr.add_suppression("InnoDB: Cannot shrink the system tablespace");
|
||||||
|
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
||||||
|
call mtr.add_suppression("Plugin 'InnoDB' init function returned error");
|
||||||
|
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
||||||
|
|
||||||
|
SET GLOBAL innodb_fast_shutdown=0;
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
SET GLOBAL INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG=2;
|
||||||
|
SET GLOBAL INNODB_FILE_PER_TABLE= 0;
|
||||||
|
SET UNIQUE_CHECKS=0, FOREIGN_KEY_CHECKS=0;
|
||||||
|
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||||
|
f3 INT NOT NULL, INDEX(f1),
|
||||||
|
INDEX(f2), INDEX(f3))ENGINE=InnoDB;
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
INSERT INTO t1 SELECT seq, seq, seq FROM seq_1_to_16384;
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
|
||||||
|
SET GLOBAL INNODB_FAST_SHUTDOWN=0;
|
||||||
|
SET GLOBAL DEBUG_DBUG="+d,shrink_buffer_pool_full";
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
|
--let SEARCH_PATTERN= \\[Warning\\] InnoDB: Cannot shrink the system tablespace
|
||||||
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
|
||||||
|
SET GLOBAL INNODB_FAST_SHUTDOWN=0;
|
||||||
|
SET GLOBAL DEBUG_DBUG="+d,mtr_log_max_size";
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
|
--let SEARCH_PATTERN= \\[ERROR\\] InnoDB: Cannot shrink the system tablespace
|
||||||
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
||||||
|
|
||||||
|
SET GLOBAL INNODB_FAST_SHUTDOWN=0;
|
||||||
|
# Crash after shrinking the system tablespace
|
||||||
|
let $restart_parameters=--debug_dbug="+d,crash_after_sys_truncate";
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
|
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE SPACE = 0;
|
@@ -4236,6 +4236,11 @@ innobase_end(handlerton*, ha_panic_function)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Do system tablespace truncation during slow shutdown */
|
||||||
|
if (!srv_fast_shutdown
|
||||||
|
&& srv_operation == SRV_OPERATION_NORMAL) {
|
||||||
|
fsp_system_tablespace_truncate();
|
||||||
|
}
|
||||||
|
|
||||||
innodb_shutdown();
|
innodb_shutdown();
|
||||||
mysql_mutex_destroy(&log_requests.mutex);
|
mysql_mutex_destroy(&log_requests.mutex);
|
||||||
|
Reference in New Issue
Block a user