mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 02:30:06 +01:00
162 lines
5.5 KiB
Text
162 lines
5.5 KiB
Text
|
*** Test that group-committed transactions on the master can replicate in parallel on the slave. ***
|
||
|
include/master-slave.inc
|
||
|
[connection master]
|
||
|
connection server_1;
|
||
|
SET sql_log_bin=0;
|
||
|
CREATE FUNCTION foo(x INT, d1 VARCHAR(500), d2 VARCHAR(500))
|
||
|
RETURNS INT DETERMINISTIC
|
||
|
BEGIN
|
||
|
RETURN x;
|
||
|
END
|
||
|
||
|
||
|
SET sql_log_bin=1;
|
||
|
connection server_2;
|
||
|
include/stop_slave.inc
|
||
|
SET sql_log_bin=0;
|
||
|
CREATE FUNCTION foo(x INT, d1 VARCHAR(500), d2 VARCHAR(500))
|
||
|
RETURNS INT DETERMINISTIC
|
||
|
BEGIN
|
||
|
IF d1 != '' THEN
|
||
|
SET debug_sync = d1;
|
||
|
END IF;
|
||
|
IF d2 != '' THEN
|
||
|
SET debug_sync = d2;
|
||
|
END IF;
|
||
|
RETURN x;
|
||
|
END
|
||
|
||
|
||
|
SET sql_log_bin=1;
|
||
|
SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
|
||
|
SET GLOBAL slave_parallel_threads=10;
|
||
|
CHANGE MASTER TO master_use_gtid=slave_pos;
|
||
|
include/start_slave.inc
|
||
|
connection server_1;
|
||
|
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
|
||
|
CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB;
|
||
|
INSERT INTO t3 VALUES (1,1), (3,3), (5,5), (7,7);
|
||
|
connection server_2;
|
||
|
connect con_temp1,127.0.0.1,root,,test,$SERVER_MYPORT_2,;
|
||
|
BEGIN;
|
||
|
INSERT INTO t3 VALUES (2,102);
|
||
|
connect con_temp2,127.0.0.1,root,,test,$SERVER_MYPORT_2,;
|
||
|
BEGIN;
|
||
|
INSERT INTO t3 VALUES (4,104);
|
||
|
connect con_temp3,127.0.0.1,root,,test,$SERVER_MYPORT_1,;
|
||
|
SET debug_sync='commit_after_release_LOCK_prepare_ordered SIGNAL master_queued1 WAIT_FOR master_cont1';
|
||
|
SET binlog_format=statement;
|
||
|
INSERT INTO t3 VALUES (2, foo(12,
|
||
|
'commit_after_release_LOCK_prepare_ordered SIGNAL slave_queued1 WAIT_FOR slave_cont1',
|
||
|
''));
|
||
|
connection server_1;
|
||
|
SET debug_sync='now WAIT_FOR master_queued1';
|
||
|
connect con_temp4,127.0.0.1,root,,test,$SERVER_MYPORT_1,;
|
||
|
SET debug_sync='commit_after_release_LOCK_prepare_ordered SIGNAL master_queued2';
|
||
|
SET binlog_format=statement;
|
||
|
INSERT INTO t3 VALUES (4, foo(14,
|
||
|
'commit_after_release_LOCK_prepare_ordered SIGNAL slave_queued2',
|
||
|
''));
|
||
|
connection server_1;
|
||
|
SET debug_sync='now WAIT_FOR master_queued2';
|
||
|
connect con_temp5,127.0.0.1,root,,test,$SERVER_MYPORT_1,;
|
||
|
SET debug_sync='commit_after_release_LOCK_prepare_ordered SIGNAL master_queued3';
|
||
|
SET binlog_format=statement;
|
||
|
INSERT INTO t3 VALUES (6, foo(16,
|
||
|
'group_commit_waiting_for_prior SIGNAL slave_queued3',
|
||
|
''));
|
||
|
connection server_1;
|
||
|
SET debug_sync='now WAIT_FOR master_queued3';
|
||
|
SET debug_sync='now SIGNAL master_cont1';
|
||
|
connection con_temp3;
|
||
|
connection con_temp4;
|
||
|
connection con_temp5;
|
||
|
SET debug_sync='RESET';
|
||
|
connection server_1;
|
||
|
SELECT * FROM t3 ORDER BY a;
|
||
|
a b
|
||
|
1 1
|
||
|
2 12
|
||
|
3 3
|
||
|
4 14
|
||
|
5 5
|
||
|
6 16
|
||
|
7 7
|
||
|
include/show_binlog_events.inc
|
||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||
|
master-bin.000001 # Binlog_checkpoint # # master-bin.000001
|
||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||
|
master-bin.000001 # Query # # use `test`; ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB
|
||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB
|
||
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||
|
master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (1,1), (3,3), (5,5), (7,7)
|
||
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-# cid=#
|
||
|
master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (2, foo(12,
|
||
|
'commit_after_release_LOCK_prepare_ordered SIGNAL slave_queued1 WAIT_FOR slave_cont1',
|
||
|
''))
|
||
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-# cid=#
|
||
|
master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (4, foo(14,
|
||
|
'commit_after_release_LOCK_prepare_ordered SIGNAL slave_queued2',
|
||
|
''))
|
||
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-# cid=#
|
||
|
master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (6, foo(16,
|
||
|
'group_commit_waiting_for_prior SIGNAL slave_queued3',
|
||
|
''))
|
||
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||
|
connection server_2;
|
||
|
SET debug_sync='now WAIT_FOR slave_queued3';
|
||
|
connection con_temp1;
|
||
|
ROLLBACK;
|
||
|
connection server_2;
|
||
|
SET debug_sync='now WAIT_FOR slave_queued1';
|
||
|
connection con_temp2;
|
||
|
ROLLBACK;
|
||
|
connection server_2;
|
||
|
SET debug_sync='now WAIT_FOR slave_queued2';
|
||
|
SET debug_sync='now SIGNAL slave_cont1';
|
||
|
SELECT * FROM t3 ORDER BY a;
|
||
|
a b
|
||
|
1 1
|
||
|
2 12
|
||
|
3 3
|
||
|
4 14
|
||
|
5 5
|
||
|
6 16
|
||
|
7 7
|
||
|
include/show_binlog_events.inc
|
||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||
|
slave-bin.000001 # Gtid # # GTID #-#-#
|
||
|
slave-bin.000001 # Query # # use `test`; ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB
|
||
|
slave-bin.000001 # Gtid # # GTID #-#-#
|
||
|
slave-bin.000001 # Query # # use `test`; CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB
|
||
|
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||
|
slave-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (1,1), (3,3), (5,5), (7,7)
|
||
|
slave-bin.000001 # Xid # # COMMIT /* XID */
|
||
|
slave-bin.000001 # Gtid # # BEGIN GTID #-#-# cid=#
|
||
|
slave-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (2, foo(12,
|
||
|
'commit_after_release_LOCK_prepare_ordered SIGNAL slave_queued1 WAIT_FOR slave_cont1',
|
||
|
''))
|
||
|
slave-bin.000001 # Xid # # COMMIT /* XID */
|
||
|
slave-bin.000001 # Gtid # # BEGIN GTID #-#-# cid=#
|
||
|
slave-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (4, foo(14,
|
||
|
'commit_after_release_LOCK_prepare_ordered SIGNAL slave_queued2',
|
||
|
''))
|
||
|
slave-bin.000001 # Xid # # COMMIT /* XID */
|
||
|
slave-bin.000001 # Gtid # # BEGIN GTID #-#-# cid=#
|
||
|
slave-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (6, foo(16,
|
||
|
'group_commit_waiting_for_prior SIGNAL slave_queued3',
|
||
|
''))
|
||
|
slave-bin.000001 # Xid # # COMMIT /* XID */
|
||
|
connection server_2;
|
||
|
include/stop_slave.inc
|
||
|
SET GLOBAL slave_parallel_threads=@old_parallel_threads;
|
||
|
include/start_slave.inc
|
||
|
SET DEBUG_SYNC= 'RESET';
|
||
|
connection server_1;
|
||
|
DROP function foo;
|
||
|
DROP TABLE t3;
|
||
|
SET DEBUG_SYNC= 'RESET';
|
||
|
include/rpl_end.inc
|