mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-7850: Extend GTID Binlog Events with Thread Id
This patch augments Gtid_log_event with the user thread-id. In particular that compensates for the loss of this info in Rows_log_events. Gtid_log_event::thread_id gets visible in mysqlbinlog output like #231025 16:21:45 server id 1 end_log_pos 537 CRC32 0x1cf1d963 GTID 0-1-2 ddl thread_id=10 as a 32 bit unsigned integer. Note this is a 32-bit value, as the connection id can only be 32 bits (see MDEV-15089 for details). While the size of Gtid event has grown by 4 bytes replication from OLD <-> NEW is not affected by it. This patch also slightly changes the logic to convert Gtid events to Query events for older replicas which don't support Gtid. Instead of hard-coding the padding of the sys var section of the generated Query event, the length to pad is dynamically calculated based on the length of the Gtid event. This work was started by the late Sujatha Sivakumar. Brandon Nesterenko took it over, reviewed initial patches and extended the work. Also thanks to Andrei for his help in finalizing the fixes for MDEV-33924, which were squashed into this patch. Reviewed-by: ============= Andrei Elkin <andrei.elkin@mariadb.com> Kristian Nielsen <knielsen@knielsen-hq.org>
This commit is contained in:
@ -16,23 +16,23 @@ FLUSH BINARY LOGS;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
DELIMITER /*!*/;
|
||||
# at 4
|
||||
#<date> server id 1 end_log_pos 256 CRC32 XXX Start: xxx
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Start: xxx
|
||||
ROLLBACK/*!*/;
|
||||
# at 256
|
||||
#<date> server id 1 end_log_pos 285 CRC32 XXX Gtid list []
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Gtid list []
|
||||
# at 285
|
||||
#<date> server id 1 end_log_pos 329 CRC32 XXX Binlog checkpoint master-bin.000001
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Binlog checkpoint master-bin.000001
|
||||
# at 329
|
||||
#<date> server id 1 end_log_pos 371 CRC32 XXX GTID 0-1-1 ddl
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-1 ddl thread_id=TID
|
||||
/*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
|
||||
/*!100001 SET @@session.gtid_domain_id=0*//*!*/;
|
||||
/*!100001 SET @@session.server_id=1*//*!*/;
|
||||
/*!100001 SET @@session.gtid_seq_no=1*//*!*/;
|
||||
# at 371
|
||||
#<date> server id 1 end_log_pos 542 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
use `test`/*!*/;
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
SET @@session.pseudo_thread_id=5/*!*/;
|
||||
SET @@session.pseudo_thread_id=TID/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1, @@session.system_versioning_insert_history=0/*!*/;
|
||||
SET @@session.sql_mode=#/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
@ -43,135 +43,135 @@ SET @@session.collation_database=DEFAULT/*!*/;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 TINYINT, f4 MEDIUMINT, f5 BIGINT, f6 INT, f7 INT, f8 char(1))
|
||||
/*!*/;
|
||||
# at 542
|
||||
#<date> server id 1 end_log_pos 584 CRC32 XXX GTID 0-1-2 ddl
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-2 ddl thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=2*//*!*/;
|
||||
# at 584
|
||||
#<date> server id 1 end_log_pos 745 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
CREATE TABLE t2 (pk INT PRIMARY KEY, f1 INT, f2 INT, f3 INT, f4 INT, f5 MEDIUMINT, f6 INT, f7 INT, f8 char(1))
|
||||
/*!*/;
|
||||
# at 745
|
||||
#<date> server id 1 end_log_pos 787 CRC32 XXX GTID 0-1-3
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-3 thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=3*//*!*/;
|
||||
START TRANSACTION
|
||||
/*!*/;
|
||||
# at 787
|
||||
#<date> server id 1 end_log_pos 0 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
INSERT INTO t1 VALUES (10, 1, 2, 3, 4, 5, 6, 7, "")
|
||||
/*!*/;
|
||||
# at 915
|
||||
#<date> server id 1 end_log_pos 988 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at 988
|
||||
#<date> server id 1 end_log_pos 1030 CRC32 XXX GTID 0-1-4
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-4 thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=4*//*!*/;
|
||||
START TRANSACTION
|
||||
/*!*/;
|
||||
# at 1030
|
||||
#<date> server id 1 end_log_pos 0 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
INSERT INTO t1 VALUES (11, 1, 2, 3, 4, 5, 6, 7, NULL)
|
||||
/*!*/;
|
||||
# at 1158
|
||||
#<date> server id 1 end_log_pos 1231 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at 1231
|
||||
#<date> server id 1 end_log_pos 1273 CRC32 XXX GTID 0-1-5
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-5 thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=5*//*!*/;
|
||||
START TRANSACTION
|
||||
/*!*/;
|
||||
# at 1273
|
||||
#<date> server id 1 end_log_pos 0 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
INSERT INTO t1 VALUES (12, 1, 2, 3, NULL, 5, 6, 7, "A")
|
||||
/*!*/;
|
||||
# at 1403
|
||||
#<date> server id 1 end_log_pos 1476 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at 1476
|
||||
#<date> server id 1 end_log_pos 1518 CRC32 XXX GTID 0-1-6
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-6 thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=6*//*!*/;
|
||||
START TRANSACTION
|
||||
/*!*/;
|
||||
# at 1518
|
||||
#<date> server id 1 end_log_pos 0 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
INSERT INTO t1 VALUES (13, 1, 2, 3, 0, 5, 6, 7, "A")
|
||||
/*!*/;
|
||||
# at 1645
|
||||
#<date> server id 1 end_log_pos 1718 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at 1718
|
||||
#<date> server id 1 end_log_pos 1760 CRC32 XXX GTID 0-1-7
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-7 thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=7*//*!*/;
|
||||
START TRANSACTION
|
||||
/*!*/;
|
||||
# at 1760
|
||||
#<date> server id 1 end_log_pos 0 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
INSERT INTO t2 SELECT * FROM t1
|
||||
/*!*/;
|
||||
# at 1868
|
||||
#<date> server id 1 end_log_pos 1941 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at 1941
|
||||
#<date> server id 1 end_log_pos 1983 CRC32 XXX GTID 0-1-8
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-8 thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=8*//*!*/;
|
||||
START TRANSACTION
|
||||
/*!*/;
|
||||
# at 1983
|
||||
#<date> server id 1 end_log_pos 0 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
UPDATE t2 SET f4=5 WHERE f4>0 or f4 is NULL
|
||||
/*!*/;
|
||||
# at 2100
|
||||
#<date> server id 1 end_log_pos 2173 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at 2173
|
||||
#<date> server id 1 end_log_pos 2215 CRC32 XXX GTID 0-1-9
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-9 thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=9*//*!*/;
|
||||
START TRANSACTION
|
||||
/*!*/;
|
||||
# at 2215
|
||||
#<date> server id 1 end_log_pos 0 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
DELETE FROM t1
|
||||
/*!*/;
|
||||
# at 2306
|
||||
#<date> server id 1 end_log_pos 2379 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at 2379
|
||||
#<date> server id 1 end_log_pos 2421 CRC32 XXX GTID 0-1-10
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX GTID 0-1-10 thread_id=TID
|
||||
/*!100001 SET @@session.gtid_seq_no=10*//*!*/;
|
||||
START TRANSACTION
|
||||
/*!*/;
|
||||
# at 2421
|
||||
#<date> server id 1 end_log_pos 0 CRC32 XXX Query_compressed thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query_compressed thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
DELETE FROM t2
|
||||
/*!*/;
|
||||
# at 2512
|
||||
#<date> server id 1 end_log_pos 2585 CRC32 XXX Query thread_id=5 exec_time=x error_code=0 xid=<xid>
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
|
||||
SET TIMESTAMP=X/*!*/;
|
||||
COMMIT
|
||||
/*!*/;
|
||||
# at 2585
|
||||
#<date> server id 1 end_log_pos 2633 CRC32 XXX Rotate to master-bin.000002 pos: 4
|
||||
#<date> server id 1 end_log_pos # CRC32 XXX Rotate to master-bin.000002 pos: 4
|
||||
DELIMITER ;
|
||||
# End of log file
|
||||
ROLLBACK /* added by mysqlbinlog */;
|
||||
|
Reference in New Issue
Block a user