mirror of
https://github.com/MariaDB/server.git
synced 2025-10-25 18:38:00 +03:00
While MariaDB Server 10.2 is not really guaranteed to be compatible with Percona XtraBackup 2.4 (for example, the MySQL 5.7 undo log format change that could be present in XtraBackup, but was reverted from MariaDB in MDEV-12289), we do not want to disrupt users who have deployed xtrabackup and MariaDB Server 10.2 in their environments. With this change, MariaDB 10.2 will continue to use the backup-unsafe TRUNCATE TABLE code, so that neither the undo log nor the redo log formats will change in an incompatible way. Undo tablespace truncation will keep using the redo log only. Recovery or backup with old code will fail to shrink the undo tablespace files, but the contents will be recovered just fine. In the MariaDB Server 10.2 series only, we introduce the configuration parameter innodb_unsafe_truncate and make it ON by default. To allow MariaDB Backup (mariabackup) to work properly with TRUNCATE TABLE operations, use loose_innodb_unsafe_truncate=OFF. MariaDB Server 10.3.10 and later releases will always use the backup-safe TRUNCATE TABLE, and this parameter will not be added there. recv_recovery_rollback_active(): Skip row_mysql_drop_garbage_tables() unless innodb_unsafe_truncate=OFF. It is too unsafe to drop orphan tables if RENAME operations are not transactional within InnoDB. LOG_HEADER_FORMAT_10_3: Replaces LOG_HEADER_FORMAT_CURRENT. log_init(), log_group_file_header_flush(), srv_prepare_to_delete_redo_log_files(), innobase_start_or_create_for_mysql(): Choose the redo log format and subformat based on the value of innodb_unsafe_truncate.
463 lines
12 KiB
Plaintext
463 lines
12 KiB
Plaintext
call mtr.add_suppression("The file '.*' already exists though the corresponding table did not exist in the InnoDB data dictionary");
|
|
call mtr.add_suppression("Cannot create file '.*'");
|
|
call mtr.add_suppression("InnoDB: Error number 17 means 'File exists'");
|
|
set global innodb_file_per_table = on;
|
|
"1. Hit crash point while writing redo log."
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f), index ck(c))
|
|
engine=innodb row_format=compressed
|
|
key_block_size=8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_while_writing_redo_log";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
"2. Hit crash point on completion of redo log write."
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_after_redo_log_write_complete";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
"3. Hit crash point while dropping indexes."
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_on_drop_of_clust_index";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_on_drop_of_uniq_index";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_on_drop_of_sec_index";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
"4. Hit crash point on completing drop of all indexes before creation"
|
|
" of index is commenced."
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_drop_reinit_done_create_to_start";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
"5. Hit crash point while creating indexes."
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_on_create_of_clust_index";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_on_create_of_uniq_index";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_on_create_of_sec_index";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
"6. Hit crash point after data is updated to system-table and"
|
|
" in-memory dict."
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_on_updating_dict_sys_info";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
"7. Hit crash point before/after log checkpoint is done."
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_before_log_removal";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
use test;
|
|
set global innodb_file_per_table = 1;
|
|
SET innodb_strict_mode=OFF;
|
|
create table t (
|
|
i int, f float, c char,
|
|
primary key pk(i), unique findex(f), index ck(c))
|
|
engine = innodb row_format = compressed
|
|
key_block_size = 8;
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
set session debug = "+d,ib_trunc_crash_after_truncate_done";
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
truncate table t;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
check table t;
|
|
Table Op Msg_type Msg_text
|
|
test.t check status OK
|
|
select * from t;
|
|
i f c
|
|
insert into t values (1, 1.1, 'a'), (2, 2.2, 'b'), (3, 3.3, 'c');
|
|
select * from t;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
3 3.3 c
|
|
select * from t where f < 2.5;
|
|
i f c
|
|
1 1.1 a
|
|
2 2.2 b
|
|
drop table t;
|
|
set global innodb_file_per_table = 1;
|