mirror of
https://github.com/MariaDB/server.git
synced 2025-05-10 02:01:19 +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().
99 lines
4.5 KiB
Plaintext
99 lines
4.5 KiB
Plaintext
include/master-slave.inc
|
|
[connection master]
|
|
set @old_master_binlog_checksum= @@global.binlog_checksum;
|
|
set @old_slave_dbug= @@global.debug_dbug;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY);
|
|
INSERT INTO t1 VALUES (0);
|
|
# Test slave with no capability gets dummy event, which is ignored.
|
|
include/stop_slave.inc
|
|
SET @@global.debug_dbug='+d,simulate_slave_capability_none';
|
|
include/start_slave.inc
|
|
ALTER TABLE t1 ORDER BY a;
|
|
SET SESSION binlog_annotate_row_events = ON;
|
|
DELETE FROM t1;
|
|
INSERT INTO t1 /* A comment just to make the annotate event sufficiently long that the dummy event will need to get padded with spaces so that we can test that this works */ VALUES(1);
|
|
show binlog events in 'master-bin.000001' from <binlog_start> limit 0, 10;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Annotate_rows # # DELETE FROM t1
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
master-bin.000001 # Query # # BEGIN
|
|
master-bin.000001 # Annotate_rows # # INSERT INTO t1 /* A comment just to make the annotate event sufficiently long that the dummy event will need to get padded with spaces so that we can test that this works */ VALUES(1)
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # COMMIT
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
show relaylog events in 'slave-relay-bin.000003' from <binlog_start> limit 0,10;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
slave-relay-bin.000003 # Query # # BEGIN
|
|
slave-relay-bin.000003 # User var # # @`!dummyvar`=NULL
|
|
slave-relay-bin.000003 # Table_map # # table_id: # (test.t1)
|
|
slave-relay-bin.000003 # Delete_rows # # table_id: # flags: STMT_END_F
|
|
slave-relay-bin.000003 # Query # # COMMIT
|
|
slave-relay-bin.000003 # Query # # BEGIN
|
|
slave-relay-bin.000003 # Query # # # Dummy event replacing event type 160 that slave cannot handle.
|
|
slave-relay-bin.000003 # Table_map # # table_id: # (test.t1)
|
|
slave-relay-bin.000003 # Write_rows # # table_id: # flags: STMT_END_F
|
|
slave-relay-bin.000003 # Query # # COMMIT
|
|
set @@global.debug_dbug= @old_slave_dbug;
|
|
# Test dummy event is checksummed correctly.
|
|
set @@global.binlog_checksum = CRC32;
|
|
TRUNCATE t1;
|
|
INSERT INTO t1 VALUES(2);
|
|
show binlog events in 'master-bin.000002' from <binlog_start> limit 0, 5;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Query # # BEGIN
|
|
master-bin.000002 # Annotate_rows # # INSERT INTO t1 VALUES(2)
|
|
master-bin.000002 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000002 # Query # # COMMIT
|
|
SELECT * FROM t1;
|
|
a
|
|
2
|
|
show relaylog events in 'slave-relay-bin.000005' from <binlog_start> limit 5,5;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
slave-relay-bin.000005 # Query # # BEGIN
|
|
slave-relay-bin.000005 # Query # # # Dummy ev
|
|
slave-relay-bin.000005 # Table_map # # table_id: # (test.t1)
|
|
slave-relay-bin.000005 # Write_rows # # table_id: # flags: STMT_END_F
|
|
slave-relay-bin.000005 # Query # # COMMIT
|
|
# Test that slave which cannot tolerate holes in binlog stream but
|
|
# knows the event does not get dummy event
|
|
include/stop_slave.inc
|
|
SET @@global.debug_dbug='+d,simulate_slave_capability_old_53';
|
|
include/start_slave.inc
|
|
ALTER TABLE t1 ORDER BY a;
|
|
UPDATE t1 SET a = 3;
|
|
show binlog events in 'master-bin.000002' from <binlog_start> limit 0, 5;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Query # # BEGIN
|
|
master-bin.000002 # Annotate_rows # # UPDATE t1 SET a = 3
|
|
master-bin.000002 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000002 # Update_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000002 # Query # # COMMIT
|
|
SELECT * FROM t1;
|
|
a
|
|
3
|
|
show relaylog events in 'slave-relay-bin.000006' from <binlog_start> limit 0,5;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
slave-relay-bin.000006 # Query # # BEGIN
|
|
slave-relay-bin.000006 # Annotate_rows # # UPDATE t1 SET a = 3
|
|
slave-relay-bin.000006 # Table_map # # table_id: # (test.t1)
|
|
slave-relay-bin.000006 # Update_rows # # table_id: # flags: STMT_END_F
|
|
slave-relay-bin.000006 # Query # # COMMIT
|
|
select @@global.log_slave_updates;
|
|
@@global.log_slave_updates
|
|
1
|
|
select @@global.replicate_annotate_row_events;
|
|
@@global.replicate_annotate_row_events
|
|
0
|
|
set @@global.debug_dbug= @old_slave_dbug;
|
|
Clean up.
|
|
set @@global.binlog_checksum = @old_master_binlog_checksum;
|
|
DROP TABLE t1;
|
|
include/rpl_end.inc
|