mirror of
https://github.com/MariaDB/server.git
synced 2025-05-13 01:01:44 +03:00
Introduce a new storage engine API method commit_checkpoint_request(). This is used to replace the fsync() at the end of every storage engine commit with a single fsync() when a binlog is rotated. Binlog rotation is now done during group commit instead of being delayed until unlog(), removing some server stall and avoiding an expensive lock/unlock of LOCK_log inside unlog().
32 lines
1.3 KiB
Plaintext
32 lines
1.3 KiB
Plaintext
SET GLOBAL max_binlog_size= 4096;
|
|
SET GLOBAL innodb_flush_log_at_trx_commit= 1;
|
|
RESET MASTER;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=Innodb;
|
|
SET DEBUG_SYNC= "binlog_open_before_update_index SIGNAL con1_ready WAIT_FOR con1_cont";
|
|
SET SESSION debug_dbug="+d,crash_create_critical_before_update_index";
|
|
INSERT INTO t1 VALUES (1, REPEAT("x", 4100));
|
|
SET DEBUG_SYNC= "now WAIT_FOR con1_ready";
|
|
SET DEBUG_SYNC= "ha_commit_trans_after_prepare SIGNAL con2_ready";
|
|
INSERT INTO t1 VALUES (2, NULL);
|
|
SET DEBUG_SYNC= "now WAIT_FOR con2_ready";
|
|
SET DEBUG_SYNC= "now SIGNAL con1_cont";
|
|
Got one of the listed errors
|
|
SELECT a FROM t1 ORDER BY a;
|
|
a
|
|
1
|
|
show binary logs;
|
|
Log_name File_size
|
|
master-bin.000001 #
|
|
master-bin.000002 #
|
|
show binlog events in 'master-bin.000001' from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
|
master-bin.000001 # Binlog_checkpoint # # master-bin.000001
|
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=Innodb
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
master-bin.000001 # Rotate # # master-bin.000002;pos=<binlog_start>
|
|
DROP TABLE t1;
|