1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
#
# ==== Purpose ====
#
# This test checks if the sql delay is being applied correctly in a multi-source
# topology.
#
# ==== Implementation ====
# In server_1->server_2, server_3->server_2 topology
# The SQL_Delay in server_2 is set to 5 seconds and 8 seconds with respect to
# server_1 and server_3. For each for the six different transactions executed
# (two DDL, three DML and one multi-statement DML), the test verifies if the
# delay was the expected using replication timestamp infrastructure introduced
# by WL#7319.
#
# ==== References ====
#
# WL#7318 Delayed Replication: GTID based and relative to immediate master commit
--source include/big_test.inc
--source include/have_debug.inc
# Test requires master-info-repository=TABLE, relay-log-info-repository=TABLE
--source include/have_slave_repository_type_table.inc
--let $rpl_topology=1->2,3->2
--let $rpl_multi_source= 1
--let $rpl_skip_start_slave= 1
--source include/rpl_init.inc
--let $delay_1= 5
--let $delay_2= 8
--let $slave_sleep_1= 1
--let $slave_sleep_2= 2
--let $rpl_connection_name= server_2
--source include/rpl_connection.inc
--eval CHANGE REPLICATION SOURCE TO SOURCE_DELAY= $delay_1 for channel 'channel_1';
--let $rpl_channel_name= 'channel_1'
--source include/start_slave.inc
--eval CHANGE REPLICATION SOURCE TO SOURCE_DELAY= $delay_2 for channel 'channel_3';
--let $rpl_channel_name= 'channel_3'
--source include/start_slave.inc
--let $master= server_1
--let $slave= server_2
--let $rpl_channel_name= 'channel_1'
--let $slave_sleep= $slave_sleep_1
--let $rpl_connection_name= server_1
--source include/rpl_connection.inc
CREATE TABLE t1 (a INT);
--let $trx_num= 1
--source extra/rpl_tests/check_slave_delay_multi_source.inc
INSERT INTO t1 VALUES (1);
--let $trx_num= 2
--source extra/rpl_tests/check_slave_delay_multi_source.inc
UPDATE t1 SET a=2;
--let $trx_num= 3
--source extra/rpl_tests/check_slave_delay_multi_source.inc
DELETE FROM t1 WHERE a=2;
--let $trx_num= 4
--source extra/rpl_tests/check_slave_delay_multi_source.inc
START TRANSACTION;
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
INSERT INTO t1 VALUES (3);
COMMIT;
--let $trx_num= 5
--source extra/rpl_tests/check_slave_delay_multi_source.inc
DROP TABLE t1;
--let $trx_num= 6
--source extra/rpl_tests/check_slave_delay_multi_source.inc
#Do the transactions on the second master server_3
--let $master= server_3
--let $slave= server_2
--let $rpl_channel_name= 'channel_3'
--let $slave_sleep= $slave_sleep_2
--let $rpl_connection_name= server_3
--source include/rpl_connection.inc
CREATE TABLE t2 (a INT);
--let $trx_num= 1
--source extra/rpl_tests/check_slave_delay_multi_source.inc
INSERT INTO t2 VALUES (1);
--let $trx_num= 2
--source extra/rpl_tests/check_slave_delay_multi_source.inc
UPDATE t2 SET a=2;
--let $trx_num= 3
--source extra/rpl_tests/check_slave_delay_multi_source.inc
DELETE FROM t2 WHERE a=2;
--let $trx_num= 4
--source extra/rpl_tests/check_slave_delay_multi_source.inc
START TRANSACTION;
INSERT INTO t2 VALUES (1);
INSERT INTO t2 VALUES (2);
INSERT INTO t2 VALUES (3);
COMMIT;
--let $trx_num= 5
--source extra/rpl_tests/check_slave_delay_multi_source.inc
DROP TABLE t2;
--let $trx_num= 6
--source extra/rpl_tests/check_slave_delay_multi_source.inc
# Cleanup
--let $rpl_connection_name= server_2
--source include/rpl_connection.inc
--let $rpl_channel_name=
--source include/stop_slave_sql.inc
CHANGE REPLICATION SOURCE TO SOURCE_DELAY= 0 For channel 'channel_1';
CHANGE REPLICATION SOURCE TO SOURCE_DELAY= 0 For channel 'channel_3';
--source include/start_slave_sql.inc
--let $rpl_skip_sync= 1
--source include/rpl_end.inc
|