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;
INSERT INTO t1 VALUES (100 , REPEAT("x" , 4100 ));
INSERT INTO t1 VALUES (101 , REPEAT("x" , 4100 ));
INSERT INTO t1 VALUES (102 , REPEAT("x" , 4100 ));
connect con1,localhost,root,,;
SET DEBUG_SYNC= "ha_commit_trans_before_log_and_order SIGNAL con1_wait WAIT_FOR con1_cont" ;
SET DEBUG_SYNC= "commit_after_group_release_commit_ordered SIGNAL con1_ready WAIT_FOR _ever" ;
INSERT INTO t1 VALUES (1 , REPEAT("x" , 4100 ));
connection default;
SET DEBUG_SYNC= "now WAIT_FOR con1_wait" ;
connect con2,localhost,root,,;
SET DEBUG_SYNC= "ha_commit_trans_before_log_and_order SIGNAL con2_wait WAIT_FOR con2_cont" ;
SET DEBUG_SYNC= "commit_after_group_release_commit_ordered SIGNAL con2_ready WAIT_FOR _ever" ;
INSERT INTO t1 VALUES (2 , NULL);
connection default;
SET DEBUG_SYNC= "now WAIT_FOR con2_wait" ;
connect con3,localhost,root,,;
SET DEBUG_SYNC= "ha_commit_trans_before_log_and_order SIGNAL con3_wait WAIT_FOR con3_cont" ;
SET DEBUG_SYNC= "commit_after_group_release_commit_ordered SIGNAL con3_ready WAIT_FOR _ever" ;
INSERT INTO t1 VALUES (3 , REPEAT("x" , 4100 ));
connection default;
SET DEBUG_SYNC= "now WAIT_FOR con3_wait" ;
connect con4,localhost,root,,;
SET DEBUG_SYNC= "ha_commit_trans_before_log_and_order SIGNAL con4_wait WAIT_FOR con4_cont" ;
SET SESSION debug_dbug="+d,crash_commit_after_log" ;
INSERT INTO t1 VALUES (4 , NULL);
connection default;
SET DEBUG_SYNC= "now WAIT_FOR con4_wait" ;
SET DEBUG_SYNC= "now SIGNAL con1_cont" ;
SET DEBUG_SYNC= "now WAIT_FOR con1_ready" ;
SET DEBUG_SYNC= "now SIGNAL con2_cont" ;
SET DEBUG_SYNC= "now WAIT_FOR con2_ready" ;
SET DEBUG_SYNC= "now SIGNAL con3_cont" ;
SET DEBUG_SYNC= "now WAIT_FOR con3_ready" ;
show binary logs;
Log_name File_size
master-bin.000001 #
master-bin.000002 #
master-bin.000003 #
master-bin.000004 #
master-bin.000005 #
master-bin.000006 #
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000003 # Gtid_list # # [#-#-#]
master-bin.000003 # Binlog_checkpoint # # master-bin.000002
master-bin.000003 # Binlog_checkpoint # # master-bin.000003
master-bin.000003 # Gtid # # BEGIN GTID #-#-#
master-bin.000003 # Annotate_rows # # INSERT INTO t1 VALUES (102 , REPEAT("x" , 4100 ))
master-bin.000003 # Table_map # # table_id: # (test.t1)
master-bin.000003 # Write_rows_v1 # # table_id: # flags: STMT_END_F
master-bin.000003 # Xid # # COMMIT /* XID */
master-bin.000003 # Rotate # # master-bin.000004 ;pos=POS
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000004 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000004 # Gtid_list # # [#-#-#]
master-bin.000004 # Binlog_checkpoint # # master-bin.000003
master-bin.000004 # Binlog_checkpoint # # master-bin.000004
master-bin.000004 # Gtid # # BEGIN GTID #-#-#
master-bin.000004 # Annotate_rows # # INSERT INTO t1 VALUES (1 , REPEAT("x" , 4100 ))
master-bin.000004 # Table_map # # table_id: # (test.t1)
master-bin.000004 # Write_rows_v1 # # table_id: # flags: STMT_END_F
master-bin.000004 # Xid # # COMMIT /* XID */
master-bin.000004 # Rotate # # master-bin.000005 ;pos=POS
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000005 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000005 # Gtid_list # # [#-#-#]
master-bin.000005 # Binlog_checkpoint # # master-bin.000004
master-bin.000005 # Gtid # # BEGIN GTID #-#-#
master-bin.000005 # Annotate_rows # # INSERT INTO t1 VALUES (2 , NULL)
master-bin.000005 # Table_map # # table_id: # (test.t1)
master-bin.000005 # Write_rows_v1 # # table_id: # flags: STMT_END_F
master-bin.000005 # Xid # # COMMIT /* XID */
master-bin.000005 # Gtid # # BEGIN GTID #-#-#
master-bin.000005 # Annotate_rows # # INSERT INTO t1 VALUES (3 , REPEAT("x" , 4100 ))
master-bin.000005 # Table_map # # table_id: # (test.t1)
master-bin.000005 # Write_rows_v1 # # table_id: # flags: STMT_END_F
master-bin.000005 # Xid # # COMMIT /* XID */
master-bin.000005 # Rotate # # master-bin.000006 ;pos=POS
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000006 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000006 # Gtid_list # # [#-#-#]
master-bin.000006 # Binlog_checkpoint # # master-bin.000004
PURGE BINARY LOGS TO "master-bin.000006" ;
Warnings:
Note 1375 Binary log 'master-bin.000004' is not purged because it may be needed for crash recovery (XID)
show binary logs;
Log_name File_size
master-bin.000004 #
master-bin.000005 #
master-bin.000006 #
SET DEBUG_SYNC= "now SIGNAL con4_cont" ;
connection con4;
Got one of the listed errors
connection default;
SELECT a FROM t1 ORDER BY a;
a
1
2
3
4
100
101
102
Test that with multiple binlog checkpoints, recovery starts from the last one.
SET GLOBAL max_binlog_size= 4096 ;
SET GLOBAL innodb_flush_log_at_trx_commit= 1 ;
RESET MASTER;
connect con10,localhost,root,,;
SET DEBUG_SYNC= "commit_after_group_release_commit_ordered SIGNAL con10_ready WAIT_FOR con10_cont" ;
INSERT INTO t1 VALUES (10 , REPEAT("x" , 4100 ));
connection default;
SET DEBUG_SYNC= "now WAIT_FOR con10_ready" ;
connect con11,localhost,root,,;
SET DEBUG_SYNC= "commit_after_group_release_commit_ordered SIGNAL con11_ready WAIT_FOR con11_cont" ;
INSERT INTO t1 VALUES (11 , REPEAT("x" , 4100 ));
connection default;
SET DEBUG_SYNC= "now WAIT_FOR con11_ready" ;
connect con12,localhost,root,,;
SET DEBUG_SYNC= "commit_after_group_release_commit_ordered SIGNAL con12_ready WAIT_FOR con12_cont" ;
INSERT INTO t1 VALUES (12 , REPEAT("x" , 4100 ));
connection default;
SET DEBUG_SYNC= "now WAIT_FOR con12_ready" ;
INSERT INTO t1 VALUES (13 , NULL);
show binary logs;
Log_name File_size
master-bin.000001 #
master-bin.000002 #
master-bin.000003 #
master-bin.000004 #
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000004 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000004 # Gtid_list # # [#-#-#]
master-bin.000004 # Binlog_checkpoint # # master-bin.000001
master-bin.000004 # Gtid # # BEGIN GTID #-#-#
master-bin.000004 # Annotate_rows # # INSERT INTO t1 VALUES (13 , NULL)
master-bin.000004 # Table_map # # table_id: # (test.t1)
master-bin.000004 # Write_rows_v1 # # table_id: # flags: STMT_END_F
master-bin.000004 # Xid # # COMMIT /* XID */
SET DEBUG_SYNC= "now SIGNAL con10_cont" ;
connection con10;
connection default;
SET DEBUG_SYNC= "now SIGNAL con12_cont" ;
connection con12;
connection default;
SET DEBUG_SYNC= "now SIGNAL con11_cont" ;
connection con11;
connection default;
Now crash the server
SET SESSION debug_dbug="+d,crash_commit_after_log" ;
INSERT INTO t1 VALUES (14 , NULL);
Got one of the listed errors
connection default;
SELECT a FROM t1 ORDER BY a;
a
1
2
3
4
10
11
12
13
14
100
101
102
*** Check that recovery works if we crashed early during rotate, before
*** binlog checkpoint event could be written.
SET GLOBAL max_binlog_size= 4096 ;
SET GLOBAL innodb_flush_log_at_trx_commit= 1 ;
RESET MASTER;
INSERT INTO t1 VALUES (21 , REPEAT("x" , 4100 ));
INSERT INTO t1 VALUES (22 , REPEAT("x" , 4100 ));
INSERT INTO t1 VALUES (23 , REPEAT("x" , 4100 ));
SET SESSION debug_dbug="+d,crash_before_write_checkpoint_event" ;
INSERT INTO t1 VALUES (24 , REPEAT("x" , 4100 ));
Got one of the listed errors
SELECT a FROM t1 ORDER BY a;
a
1
2
3
4
10
11
12
13
14
21
22
23
24
100
101
102
show binary logs;
Log_name File_size
master-bin.000001 #
master-bin.000002 #
master-bin.000003 #
master-bin.000004 #
master-bin.000005 #
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000004 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
master-bin.000004 # Gtid_list # # [#-#-#]
master-bin.000004 # Binlog_checkpoint # # master-bin.000003
master-bin.000004 # Binlog_checkpoint # # master-bin.000004
master-bin.000004 # Gtid # # BEGIN GTID #-#-#
master-bin.000004 # Annotate_rows # # INSERT INTO t1 VALUES (24 , REPEAT("x" , 4100 ))
master-bin.000004 # Table_map # # table_id: # (test.t1)
master-bin.000004 # Write_rows_v1 # # table_id: # flags: STMT_END_F
master-bin.000004 # Xid # # COMMIT /* XID */
master-bin.000004 # Rotate # # master-bin.000005 ;pos=POS
connection default;
DROP TABLE t1;
Messung V0.5 in Prozent C=56 H=100 G=80
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-08)
¤
*© Formatika GbR, Deutschland