mirror of
https://github.com/MariaDB/server.git
synced 2025-03-30 20:05:38 +02:00
94 lines
3.5 KiB
Text
94 lines
3.5 KiB
Text
#
|
|
# Bug #17335427 INNODB CAN NOT USE THE DOUBLEWRITE BUFFER PROPERLY
|
|
# Bug #18144349 INNODB CANNOT USE THE DOUBLEWRITE BUFFER FOR THE FIRST
|
|
# PAGE OF SYSTEM TABLESPACE
|
|
#
|
|
show variables like 'innodb_doublewrite';
|
|
Variable_name Value
|
|
innodb_doublewrite ON
|
|
show variables like 'innodb_fil_make_page_dirty_debug';
|
|
Variable_name Value
|
|
innodb_fil_make_page_dirty_debug 0
|
|
show variables like 'innodb_saved_page_number_debug';
|
|
Variable_name Value
|
|
innodb_saved_page_number_debug 0
|
|
create table t1 (f1 int primary key, f2 blob) engine=innodb stats_persistent=0;
|
|
start transaction;
|
|
insert into t1 values(1, repeat('#',12));
|
|
insert into t1 values(2, repeat('+',12));
|
|
insert into t1 values(3, repeat('/',12));
|
|
insert into t1 values(4, repeat('-',12));
|
|
insert into t1 values(5, repeat('.',12));
|
|
commit work;
|
|
# Test Begin: Test if recovery works if 1st page and 2nd page
|
|
# of system tablespace is full of zeroes.
|
|
SET GLOBAL innodb_fast_shutdown = 0;
|
|
# restart: --debug_dbug=+d,ib_log_checkpoint_avoid_hard --innodb_flush_sync=0
|
|
begin;
|
|
insert into t1 values (6, repeat('%', 400));
|
|
# Make the first page dirty for system tablespace
|
|
set global innodb_saved_page_number_debug = 0;
|
|
set global innodb_fil_make_page_dirty_debug = 0;
|
|
# Make the second page dirty for system tablespace
|
|
set global innodb_saved_page_number_debug = 1;
|
|
set global innodb_fil_make_page_dirty_debug = 0;
|
|
set global innodb_buf_flush_list_now = 1;
|
|
# Kill the server
|
|
# Make the 1st page (page_no=0) and 2nd page (page_no=1)
|
|
# of the system tablespace all zeroes.
|
|
# restart
|
|
FOUND 1 /InnoDB: Restoring page \[page id: space=0, page number=0\] of datafile/ in mysqld.1.err
|
|
FOUND 1 /InnoDB: Recovered page \[page id: space=0, page number=1\]/ in mysqld.1.err
|
|
check table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
select f1, f2 from t1;
|
|
f1 f2
|
|
1 ############
|
|
2 ++++++++++++
|
|
3 ////////////
|
|
4 ------------
|
|
5 ............
|
|
# Test End
|
|
# ---------------------------------------------------------------
|
|
# Test Begin: Test if recovery works if 1st page of
|
|
# system tablespace is corrupted and 2nd page as corrupted.
|
|
# restart: --debug_dbug=+d,ib_log_checkpoint_avoid_hard --innodb_flush_sync=0
|
|
begin;
|
|
insert into t1 values (6, repeat('%', 400));
|
|
# Make the first page dirty for system tablespace
|
|
set global innodb_saved_page_number_debug = 0;
|
|
set global innodb_fil_make_page_dirty_debug = 0;
|
|
# Make the second page dirty for system tablespace
|
|
set global innodb_saved_page_number_debug = 1;
|
|
set global innodb_fil_make_page_dirty_debug = 0;
|
|
set global innodb_buf_flush_list_now = 1;
|
|
# Kill the server
|
|
# Corrupt the 1st page (page_no=0) and 2nd page of the system tablespace.
|
|
# restart
|
|
FOUND 2 /InnoDB: Restoring page \[page id: space=0, page number=0\] of datafile/ in mysqld.1.err
|
|
FOUND 2 /InnoDB: Recovered page \[page id: space=0, page number=1\]/ in mysqld.1.err
|
|
check table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
select f1, f2 from t1;
|
|
f1 f2
|
|
1 ############
|
|
2 ++++++++++++
|
|
3 ////////////
|
|
4 ------------
|
|
5 ............
|
|
drop table t1;
|
|
# Test End
|
|
# ---------------------------------------------------------------
|
|
#
|
|
# MDEV-12600 crash during install_db with innodb_page_size=32K
|
|
# and ibdata1=3M
|
|
#
|
|
# restart: --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/doublewrite --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/doublewrite --innodb-undo-tablespaces=0 --innodb-data-file-path=ibdata1:1M;ibdata2:1M:autoextend
|
|
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
|
WHERE engine = 'innodb'
|
|
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
|
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
|
FOUND 1 /\[ERROR\] InnoDB: Cannot create doublewrite buffer/ in mysqld.1.err
|
|
# restart
|