diff options
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_parallel.result | 153 | ||||
-rw-r--r-- | mysql-test/suite/rpl/t/rpl_parallel.test | 157 |
2 files changed, 155 insertions, 155 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_parallel.result b/mysql-test/suite/rpl/r/rpl_parallel.result index a5149f91cd4..a49d1f3ae60 100644 --- a/mysql-test/suite/rpl/r/rpl_parallel.result +++ b/mysql-test/suite/rpl/r/rpl_parallel.result @@ -1,5 +1,6 @@ include/master-slave.inc [connection master] +SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads; SET GLOBAL slave_parallel_threads=10; ERROR HY000: This operation cannot be performed as you have a running slave ''; run STOP SLAVE '' first include/stop_slave.inc @@ -923,61 +924,6 @@ a 32 33 34 -*** MDEV-6676 - test syntax of @@slave_parallel_mode *** -Parallel_Mode = 'domain,follow_master_commit' -include/stop_slave.inc -SET GLOBAL slave_parallel_mode='domain,follow_master_commit,transactional'; -ERROR HY000: Invalid use of 'transactional' option for slave_parallel_mode -SET GLOBAL slave_parallel_mode='waiting,transactional,domain'; -Parallel_Mode = 'domain,transactional,waiting' -SET GLOBAL slave_parallel_mode='domain,follow_master_commit'; -Parallel_Mode = 'domain,follow_master_commit' -*** MDEV-6676 - test that empty parallel_mode does not replicate in parallel *** -INSERT INTO t2 VALUES (40); -include/save_master_gtid.inc -SET GLOBAL slave_parallel_mode=''; -SET @old_dbug= @@GLOBAL.debug_dbug; -SET GLOBAL debug_dbug="+d,slave_crash_if_parallel_apply"; -include/start_slave.inc -include/sync_with_master_gtid.inc -SELECT * FROM t2 WHERE a >= 40 ORDER BY a; -a -40 -include/stop_slave.inc -SET GLOBAL debug_dbug=@old_dbug; -*** MDEV-6676 - test disabling domain-based parallel replication *** -SET gtid_domain_id = 1; -INSERT INTO t2 VALUES (41); -INSERT INTO t2 VALUES (42); -INSERT INTO t2 VALUES (43); -INSERT INTO t2 VALUES (44); -INSERT INTO t2 VALUES (45); -INSERT INTO t2 VALUES (46); -DELETE FROM t2 WHERE a >= 41; -SET gtid_domain_id = 2; -INSERT INTO t2 VALUES (41); -INSERT INTO t2 VALUES (42); -INSERT INTO t2 VALUES (43); -INSERT INTO t2 VALUES (44); -INSERT INTO t2 VALUES (45); -INSERT INTO t2 VALUES (46); -SET gtid_domain_id = 0; -include/save_master_gtid.inc -SET GLOBAL slave_parallel_mode=follow_master_commit; -include/start_slave.inc -include/sync_with_master_gtid.inc -SELECT * FROM t2 WHERE a >= 40 ORDER BY a; -a -40 -41 -42 -43 -44 -45 -46 -include/stop_slave.inc -SET GLOBAL slave_parallel_mode='domain,follow_master_commit'; -include/start_slave.inc *** MDEV-6775: Wrong binlog order in parallel replication *** DELETE FROM t4; INSERT INTO t4 VALUES (1,NULL), (3,NULL), (4,4), (5, NULL), (6, 6); @@ -1028,7 +974,7 @@ SET GLOBAL slave_parallel_threads=0; SET GLOBAL slave_parallel_threads=10; include/start_slave.inc *** MDEV-7237: Parallel replication: incorrect relaylog position after stop/start the slave *** -INSERT INTO t2 VALUES (50); +INSERT INTO t2 VALUES (40); include/stop_slave.inc CHANGE MASTER TO master_use_gtid=no; SET @old_dbug= @@GLOBAL.debug_dbug; @@ -1036,41 +982,41 @@ SET GLOBAL debug_dbug="+d,rpl_parallel_scheduled_gtid_0_x_100"; SET GLOBAL debug_dbug="+d,rpl_parallel_wait_for_done_trigger"; SET GLOBAL slave_parallel_threads=0; SET GLOBAL slave_parallel_threads=10; -INSERT INTO t2 VALUES (51); -INSERT INTO t2 VALUES (52); +INSERT INTO t2 VALUES (41); +INSERT INTO t2 VALUES (42); SET @old_format= @@binlog_format; SET binlog_format= statement; -DELETE FROM t2 WHERE a=50; +DELETE FROM t2 WHERE a=40; SET binlog_format= @old_format; -INSERT INTO t2 VALUES (53); -INSERT INTO t2 VALUES (54); +INSERT INTO t2 VALUES (43); +INSERT INTO t2 VALUES (44); FLUSH LOGS; -INSERT INTO t2 VALUES (55); +INSERT INTO t2 VALUES (45); SET gtid_seq_no=100; -INSERT INTO t2 VALUES (56); +INSERT INTO t2 VALUES (46); BEGIN; -SELECT * FROM t2 WHERE a=50 FOR UPDATE; +SELECT * FROM t2 WHERE a=40 FOR UPDATE; a -50 +40 include/start_slave.inc SET debug_sync= 'now WAIT_FOR scheduled_gtid_0_x_100'; STOP SLAVE; SET debug_sync= 'now WAIT_FOR wait_for_done_waiting'; ROLLBACK; include/wait_for_slave_sql_to_stop.inc -SELECT * FROM t2 WHERE a >= 50 ORDER BY a; +SELECT * FROM t2 WHERE a >= 40 ORDER BY a; a -51 -52 +41 +42 include/start_slave.inc -SELECT * FROM t2 WHERE a >= 50 ORDER BY a; +SELECT * FROM t2 WHERE a >= 40 ORDER BY a; a -51 -52 -53 -54 -55 -56 +41 +42 +43 +44 +45 +46 include/stop_slave.inc SET GLOBAL debug_dbug=@old_dbug; SET DEBUG_SYNC= 'RESET'; @@ -1191,8 +1137,63 @@ SET GLOBAL debug_dbug=@old_dbug; SET GLOBAL slave_parallel_threads=0; SET GLOBAL slave_parallel_threads=10; include/start_slave.inc +*** MDEV-6676 - test syntax of @@slave_parallel_mode *** +Parallel_Mode = 'domain,follow_master_commit' include/stop_slave.inc -SET GLOBAL slave_parallel_threads=0; +SET GLOBAL slave_parallel_mode='domain,follow_master_commit,transactional'; +ERROR HY000: Invalid use of 'transactional' option for slave_parallel_mode +SET GLOBAL slave_parallel_mode='waiting,transactional,domain'; +Parallel_Mode = 'domain,transactional,waiting' +SET GLOBAL slave_parallel_mode='domain,follow_master_commit'; +Parallel_Mode = 'domain,follow_master_commit' +*** MDEV-6676 - test that empty parallel_mode does not replicate in parallel *** +INSERT INTO t2 VALUES (1040); +include/save_master_gtid.inc +SET GLOBAL slave_parallel_mode=''; +SET @old_dbug= @@GLOBAL.debug_dbug; +SET GLOBAL debug_dbug="+d,slave_crash_if_parallel_apply"; +include/start_slave.inc +include/sync_with_master_gtid.inc +SELECT * FROM t2 WHERE a >= 1040 ORDER BY a; +a +1040 +include/stop_slave.inc +SET GLOBAL debug_dbug=@old_dbug; +*** MDEV-6676 - test disabling domain-based parallel replication *** +SET gtid_domain_id = 1; +INSERT INTO t2 VALUES (1041); +INSERT INTO t2 VALUES (1042); +INSERT INTO t2 VALUES (1043); +INSERT INTO t2 VALUES (1044); +INSERT INTO t2 VALUES (1045); +INSERT INTO t2 VALUES (1046); +DELETE FROM t2 WHERE a >= 1041; +SET gtid_domain_id = 2; +INSERT INTO t2 VALUES (1041); +INSERT INTO t2 VALUES (1042); +INSERT INTO t2 VALUES (1043); +INSERT INTO t2 VALUES (1044); +INSERT INTO t2 VALUES (1045); +INSERT INTO t2 VALUES (1046); +SET gtid_domain_id = 0; +include/save_master_gtid.inc +SET GLOBAL slave_parallel_mode=follow_master_commit; +include/start_slave.inc +include/sync_with_master_gtid.inc +SELECT * FROM t2 WHERE a >= 1040 ORDER BY a; +a +1040 +1041 +1042 +1043 +1044 +1045 +1046 +include/stop_slave.inc +SET GLOBAL slave_parallel_mode='domain,follow_master_commit'; +include/start_slave.inc +include/stop_slave.inc +SET GLOBAL slave_parallel_threads=@old_parallel_threads; include/start_slave.inc SET DEBUG_SYNC= 'RESET'; DROP function foo; diff --git a/mysql-test/suite/rpl/t/rpl_parallel.test b/mysql-test/suite/rpl/t/rpl_parallel.test index c6b5f445752..2f5a45d00ca 100644 --- a/mysql-test/suite/rpl/t/rpl_parallel.test +++ b/mysql-test/suite/rpl/t/rpl_parallel.test @@ -6,7 +6,7 @@ # Test various aspects of parallel replication. --connection server_2 ---let $old_parallel_threads=`SELECT @@GLOBAL.slave_parallel_threads` +SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads; --error ER_SLAVE_MUST_STOP SET GLOBAL slave_parallel_threads=10; --source include/stop_slave.inc @@ -1465,71 +1465,6 @@ SET sql_slave_skip_counter= 1; SELECT * FROM t2 WHERE a >= 30 ORDER BY a; ---echo *** MDEV-6676 - test syntax of @@slave_parallel_mode *** ---connection server_2 - ---let $status_items= Parallel_Mode ---source include/show_slave_status.inc ---source include/stop_slave.inc ---error ER_INVALID_SLAVE_PARALLEL_MODE -SET GLOBAL slave_parallel_mode='domain,follow_master_commit,transactional'; -SET GLOBAL slave_parallel_mode='waiting,transactional,domain'; ---let $status_items= Parallel_Mode ---source include/show_slave_status.inc -SET GLOBAL slave_parallel_mode='domain,follow_master_commit'; ---let $status_items= Parallel_Mode ---source include/show_slave_status.inc - - ---echo *** MDEV-6676 - test that empty parallel_mode does not replicate in parallel *** ---connection server_1 -INSERT INTO t2 VALUES (40); ---source include/save_master_gtid.inc - ---connection server_2 -SET GLOBAL slave_parallel_mode=''; -# Test that we do not use parallel apply, by injecting an unconditional -# crash in the parallel apply code. -SET @old_dbug= @@GLOBAL.debug_dbug; -SET GLOBAL debug_dbug="+d,slave_crash_if_parallel_apply"; ---source include/start_slave.inc ---source include/sync_with_master_gtid.inc -SELECT * FROM t2 WHERE a >= 40 ORDER BY a; ---source include/stop_slave.inc -SET GLOBAL debug_dbug=@old_dbug; - - ---echo *** MDEV-6676 - test disabling domain-based parallel replication *** ---connection server_1 -# Let's do a bunch of transactions that will conflict if run out-of-order in -# domain-based parallel replication mode. -SET gtid_domain_id = 1; -INSERT INTO t2 VALUES (41); -INSERT INTO t2 VALUES (42); -INSERT INTO t2 VALUES (43); -INSERT INTO t2 VALUES (44); -INSERT INTO t2 VALUES (45); -INSERT INTO t2 VALUES (46); -DELETE FROM t2 WHERE a >= 41; -SET gtid_domain_id = 2; -INSERT INTO t2 VALUES (41); -INSERT INTO t2 VALUES (42); -INSERT INTO t2 VALUES (43); -INSERT INTO t2 VALUES (44); -INSERT INTO t2 VALUES (45); -INSERT INTO t2 VALUES (46); -SET gtid_domain_id = 0; ---source include/save_master_gtid.inc ---connection server_2 -SET GLOBAL slave_parallel_mode=follow_master_commit; ---source include/start_slave.inc ---source include/sync_with_master_gtid.inc -SELECT * FROM t2 WHERE a >= 40 ORDER BY a; ---source include/stop_slave.inc -SET GLOBAL slave_parallel_mode='domain,follow_master_commit'; ---source include/start_slave.inc - - --echo *** MDEV-6775: Wrong binlog order in parallel replication *** --connection server_1 # A bit tricky bug to reproduce. On the master, we binlog in statement-mode @@ -1601,7 +1536,7 @@ SET GLOBAL slave_parallel_threads=10; --echo *** MDEV-7237: Parallel replication: incorrect relaylog position after stop/start the slave *** --connection server_1 -INSERT INTO t2 VALUES (50); +INSERT INTO t2 VALUES (40); --save_master_pos --connection server_2 @@ -1622,28 +1557,28 @@ SET GLOBAL slave_parallel_threads=10; --connection server_1 # Setup some transaction for the slave to replicate. -INSERT INTO t2 VALUES (51); -INSERT INTO t2 VALUES (52); +INSERT INTO t2 VALUES (41); +INSERT INTO t2 VALUES (42); # Need to log the DELETE in statement format, so we can see it in processlist. SET @old_format= @@binlog_format; SET binlog_format= statement; -DELETE FROM t2 WHERE a=50; +DELETE FROM t2 WHERE a=40; SET binlog_format= @old_format; -INSERT INTO t2 VALUES (53); -INSERT INTO t2 VALUES (54); +INSERT INTO t2 VALUES (43); +INSERT INTO t2 VALUES (44); # Force the slave to switch to a new relay log file. FLUSH LOGS; -INSERT INTO t2 VALUES (55); +INSERT INTO t2 VALUES (45); # Inject a GTID 0-1-100, which will trigger a DEBUG_SYNC signal when this # transaction has been fetched by a worker thread. SET gtid_seq_no=100; -INSERT INTO t2 VALUES (56); +INSERT INTO t2 VALUES (46); --save_master_pos --connection con_temp2 # Temporarily block the DELETE on a=40 from completing. BEGIN; -SELECT * FROM t2 WHERE a=50 FOR UPDATE; +SELECT * FROM t2 WHERE a=40 FOR UPDATE; --connection server_2 @@ -1651,7 +1586,7 @@ SELECT * FROM t2 WHERE a=50 FOR UPDATE; # Wait for a worker thread to start on the DELETE that will be blocked # temporarily by the SELECT FOR UPDATE. ---let $wait_condition= SELECT count(*) > 0 FROM information_schema.processlist WHERE state='updating' and info LIKE '%DELETE FROM t2 WHERE a=50%' +--let $wait_condition= SELECT count(*) > 0 FROM information_schema.processlist WHERE state='updating' and info LIKE '%DELETE FROM t2 WHERE a=40%' --source include/wait_condition.inc # The DBUG injection set above will make the worker thread signal the following @@ -1684,13 +1619,13 @@ ROLLBACK; --connection server_2 reap; --source include/wait_for_slave_sql_to_stop.inc -SELECT * FROM t2 WHERE a >= 50 ORDER BY a; +SELECT * FROM t2 WHERE a >= 40 ORDER BY a; # Now restart the slave. With the bug present, this would start at an # incorrect relay log position, causing relay log read error (or if unlucky, # silently skip a number of events). --source include/start_slave.inc --sync_with_master -SELECT * FROM t2 WHERE a >= 50 ORDER BY a; +SELECT * FROM t2 WHERE a >= 40 ORDER BY a; --source include/stop_slave.inc SET GLOBAL debug_dbug=@old_dbug; SET DEBUG_SYNC= 'RESET'; @@ -1906,11 +1841,75 @@ SET GLOBAL slave_parallel_threads=0; SET GLOBAL slave_parallel_threads=10; --source include/start_slave.inc +--echo *** MDEV-6676 - test syntax of @@slave_parallel_mode *** +--connection server_2 + +--let $status_items= Parallel_Mode +--source include/show_slave_status.inc +--source include/stop_slave.inc +--error ER_INVALID_SLAVE_PARALLEL_MODE +SET GLOBAL slave_parallel_mode='domain,follow_master_commit,transactional'; +SET GLOBAL slave_parallel_mode='waiting,transactional,domain'; +--let $status_items= Parallel_Mode +--source include/show_slave_status.inc +SET GLOBAL slave_parallel_mode='domain,follow_master_commit'; +--let $status_items= Parallel_Mode +--source include/show_slave_status.inc + + +--echo *** MDEV-6676 - test that empty parallel_mode does not replicate in parallel *** +--connection server_1 +INSERT INTO t2 VALUES (1040); +--source include/save_master_gtid.inc + +--connection server_2 +SET GLOBAL slave_parallel_mode=''; +# Test that we do not use parallel apply, by injecting an unconditional +# crash in the parallel apply code. +SET @old_dbug= @@GLOBAL.debug_dbug; +SET GLOBAL debug_dbug="+d,slave_crash_if_parallel_apply"; +--source include/start_slave.inc +--source include/sync_with_master_gtid.inc +SELECT * FROM t2 WHERE a >= 1040 ORDER BY a; +--source include/stop_slave.inc +SET GLOBAL debug_dbug=@old_dbug; + + +--echo *** MDEV-6676 - test disabling domain-based parallel replication *** +--connection server_1 +# Let's do a bunch of transactions that will conflict if run out-of-order in +# domain-based parallel replication mode. +SET gtid_domain_id = 1; +INSERT INTO t2 VALUES (1041); +INSERT INTO t2 VALUES (1042); +INSERT INTO t2 VALUES (1043); +INSERT INTO t2 VALUES (1044); +INSERT INTO t2 VALUES (1045); +INSERT INTO t2 VALUES (1046); +DELETE FROM t2 WHERE a >= 1041; +SET gtid_domain_id = 2; +INSERT INTO t2 VALUES (1041); +INSERT INTO t2 VALUES (1042); +INSERT INTO t2 VALUES (1043); +INSERT INTO t2 VALUES (1044); +INSERT INTO t2 VALUES (1045); +INSERT INTO t2 VALUES (1046); +SET gtid_domain_id = 0; +--source include/save_master_gtid.inc +--connection server_2 +SET GLOBAL slave_parallel_mode=follow_master_commit; +--source include/start_slave.inc +--source include/sync_with_master_gtid.inc +SELECT * FROM t2 WHERE a >= 1040 ORDER BY a; +--source include/stop_slave.inc +SET GLOBAL slave_parallel_mode='domain,follow_master_commit'; +--source include/start_slave.inc + # Clean up. --connection server_2 --source include/stop_slave.inc -eval SET GLOBAL slave_parallel_threads=$old_parallel_threads; +SET GLOBAL slave_parallel_threads=@old_parallel_threads; --source include/start_slave.inc SET DEBUG_SYNC= 'RESET'; |