1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +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 64 bit unsigned integer.

While the size of Gtid event has grown by 8-9 bytes
replication from OLD <-> NEW is not affected by it.

This work was started by the late Sujatha Sivakumar.
Brandon Nesterenko took it over, reviewed initial patches and extended
the work.

Reviewed-by: <andrei.elkin@mariadb.com>
This commit is contained in:
Brandon Nesterenko
2023-07-10 18:53:19 +03:00
parent 8bf9f21855
commit c37b2087b4
34 changed files with 1006 additions and 785 deletions

View File

@ -23,16 +23,16 @@ ROLLBACK/*!*/;
# at 285
#<date> server id 1 end_log_pos 329 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 374 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>
# at 374
#<date> server id 1 end_log_pos 545 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/*!*/;
@ -42,136 +42,136 @@ SET @@session.lc_time_names=0/*!*/;
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
# at 545
#<date> server id 1 end_log_pos 590 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>
# at 590
#<date> server id 1 end_log_pos 751 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
# at 751
#<date> server id 1 end_log_pos 796 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>
# at 796
#<date> server id 1 end_log_pos 0 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>
# at 924
#<date> server id 1 end_log_pos 997 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
# at 997
#<date> server id 1 end_log_pos 1042 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>
# at 1042
#<date> server id 1 end_log_pos 0 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>
# at 1170
#<date> server id 1 end_log_pos 1243 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
# at 1243
#<date> server id 1 end_log_pos 1288 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>
# at 1288
#<date> server id 1 end_log_pos 0 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>
# at 1418
#<date> server id 1 end_log_pos 1491 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
# at 1491
#<date> server id 1 end_log_pos 1536 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>
# at 1536
#<date> server id 1 end_log_pos 0 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>
# at 1663
#<date> server id 1 end_log_pos 1736 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
# at 1736
#<date> server id 1 end_log_pos 1781 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>
# at 1781
#<date> server id 1 end_log_pos 0 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>
# at 1889
#<date> server id 1 end_log_pos 1962 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
# at 1962
#<date> server id 1 end_log_pos 2007 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>
# at 2007
#<date> server id 1 end_log_pos 0 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>
# at 2124
#<date> server id 1 end_log_pos 2197 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
# at 2197
#<date> server id 1 end_log_pos 2242 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>
# at 2242
#<date> server id 1 end_log_pos 0 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>
# at 2333
#<date> server id 1 end_log_pos 2406 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
# at 2406
#<date> server id 1 end_log_pos 2451 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>
# at 2451
#<date> server id 1 end_log_pos 0 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>
# at 2542
#<date> server id 1 end_log_pos 2615 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
# at 2615
#<date> server id 1 end_log_pos 2663 CRC32 XXX Rotate to master-bin.000002 pos: 4
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;