1include/rpl_init.inc [topology=1->2] 2connection server_1; 3ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB; 4CREATE FUNCTION extract_gtid(d VARCHAR(100), s VARCHAR(100)) 5RETURNS VARCHAR(100) DETERMINISTIC 6BEGIN 7SET s= CONCAT(",", s, ","); 8SET s= SUBSTR(s FROM LOCATE(CONCAT(",", d, "-"), s) + 1); 9SET s= SUBSTR(s FROM 1 FOR LOCATE(",", s) - 1); 10RETURN s; 11END| 12connection server_2; 13include/stop_slave.inc 14include/start_slave.inc 15START SLAVE UNTIL master_gtid_pos = ""; 16ERROR HY000: Slave is already running 17include/stop_slave_io.inc 18START SLAVE UNTIL master_gtid_pos = ""; 19ERROR HY000: Slave is already running 20START SLAVE IO_THREAD; 21include/wait_for_slave_io_to_start.inc 22include/stop_slave_sql.inc 23START SLAVE UNTIL master_gtid_pos = ""; 24ERROR HY000: Slave is already running 25include/stop_slave_io.inc 26START SLAVE UNTIL master_gtid_pos = ""; 27ERROR HY000: START SLAVE UNTIL master_gtid_pos requires that slave is using GTID 28CHANGE MASTER TO master_use_gtid=current_pos; 29connection server_1; 30CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; 31INSERT INTO t1 VALUES(1); 32INSERT INTO t1 VALUES(2); 33connection server_2; 34START SLAVE UNTIL master_gtid_pos = "0-1-100,1-1-100,2-2-200,1-3-100,4-4-400"; 35ERROR HY000: GTID 1-3-100 and 1-1-100 conflict (duplicate domain id 1) 36START SLAVE UNTIL master_log_file = "master-bin.000001", master_log_pos = 4, master_gtid_pos = ""; 37ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'master_gtid_pos = ""' at line 1 38START SLAVE IO_THREAD UNTIL master_gtid_pos = ""; 39ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL 40START SLAVE SQL_THREAD UNTIL master_gtid_pos = ""; 41ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL 42START SLAVE UNTIL master_gtid_pos = '0-1-4'; 43include/wait_for_slave_to_stop.inc 44SELECT * FROM t1; 45a 461 47include/start_slave.inc 48connection server_1; 49connection server_2; 50SELECT * FROM t1 ORDER BY a; 51a 521 532 54include/stop_slave.inc 55START SLAVE UNTIL master_gtid_pos = "1-10-100,2-20-200,0-1-300"; 56include/wait_for_slave_to_start.inc 57Using_Gtid = 'Current_Pos' 58Until_Condition = 'Gtid' 59connection server_1; 60INSERT INTO t1 VALUES (3); 61DELETE FROM t1 WHERE a=3; 62connection server_2; 63include/stop_slave.inc 64*** Test UNTIL condition in an earlier binlog than the start GTID. *** 65connection server_2; 66connection server_1; 67SET gtid_domain_id = 1; 68INSERT INTO t1 VALUES (3); 69SET gtid_domain_id = 2; 70CREATE TABLE t2 (a INT); 71INSERT INTO t2 VALUES (3); 72FLUSH LOGS; 73SET gtid_domain_id = 1; 74INSERT INTO t1 VALUES (4); 75SET gtid_domain_id = 2; 76INSERT INTO t2 VALUES (4); 77FLUSH LOGS; 78SET gtid_domain_id = 1; 79INSERT INTO t1 VALUES (5); 80SET gtid_domain_id = 2; 81INSERT INTO t2 VALUES (5); 82FLUSH LOGS; 83SET gtid_domain_id = 1; 84INSERT INTO t1 VALUES (6); 85SET gtid_domain_id = 2; 86INSERT INTO t2 VALUES (6); 87SET gtid_domain_id = 0; 88show binary logs; 89Log_name File_size 90master-bin.000001 # 91master-bin.000002 # 92master-bin.000003 # 93master-bin.000004 # 94connection server_2; 95START SLAVE UNTIL master_gtid_pos='1-1-3,2-1-4'; 96include/wait_for_slave_to_stop.inc 97SELECT * FROM t1 ORDER BY a; 98a 991 1002 1013 1024 1035 104SELECT * FROM t2 ORDER BY a; 105a 1063 1074 1085 109START SLAVE UNTIL master_gtid_pos='1-1-4,2-1-2'; 110include/wait_for_slave_to_stop.inc 111SELECT * FROM t1 ORDER BY a; 112a 1131 1142 1153 1164 1175 1186 119SELECT * FROM t2 ORDER BY a; 120a 1213 1224 1235 124START SLAVE UNTIL master_gtid_pos='1-1-3'; 125include/wait_for_slave_to_stop.inc 126SELECT * FROM t1 ORDER BY a; 127a 1281 1292 1303 1314 1325 1336 134SELECT * FROM t2 ORDER BY a; 135a 1363 1374 1385 139include/start_slave.inc 140SELECT * FROM t1 ORDER BY a; 141a 1421 1432 1443 1454 1465 1476 148SELECT * FROM t2 ORDER BY a; 149a 1503 1514 1525 1536 154*** Test when the UNTIL position is right at the end of the binlog file prior to the starting position *** 155connection server_2; 156include/stop_slave.inc 157connection server_1; 158FLUSH LOGS; 159SET gtid_domain_id = 1; 160INSERT INTO t1 VALUES (7); 161SET gtid_domain_id = 0; 162connection server_2; 163START SLAVE UNTIL master_gtid_pos='1-1-4'; 164include/wait_for_slave_to_stop.inc 165SELECT * FROM t1 ORDER BY a; 166a 1671 1682 1693 1704 1715 1726 173include/start_slave.inc 174SELECT * FROM t1 ORDER BY a; 175a 1761 1772 1783 1794 1805 1816 1827 183*** Test when UNTIL condition is after a stand-alone event (not a transaction). *** 184connection server_2; 185include/stop_slave.inc 186connection server_1; 187CREATE TABLE t3 (a INT); 188DROP TABLE t3; 189connection server_2; 190START SLAVE UNTIL master_gtid_pos='UNTIL_CONDITION'; 191include/wait_for_slave_to_stop.inc 192SHOW CREATE TABLE t3; 193Table Create Table 194t3 CREATE TABLE `t3` ( 195 `a` int(11) DEFAULT NULL 196) ENGINE=MyISAM DEFAULT CHARSET=latin1 197include/start_slave.inc 198*** Test UNTIL condition that has not yet been logged. *** 199connection server_2; 200include/stop_slave.inc 201RESET SLAVE ALL; 202RESET MASTER; 203SET GLOBAL gtid_slave_pos=''; 204connection server_1; 205RESET MASTER; 206INSERT INTO t1 VALUES (10); 207INSERT INTO t1 VALUES (11); 208INSERT INTO t1 VALUES (12); 209DELETE FROM t1 WHERE a >= 10; 210RESET MASTER; 211INSERT INTO t1 VALUES (10); 212connection server_2; 213CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_1, 214master_user = "root", master_use_gtid = current_pos; 215START SLAVE UNTIL master_gtid_pos = '0-1-2'; 216include/wait_for_slave_to_start.inc 217connection server_1; 218INSERT INTO t1 VALUES (11); 219INSERT INTO t1 VALUES (12); 220connection server_2; 221include/wait_for_slave_to_stop.inc 222SELECT * FROM t1 ORDER BY a; 223a 2241 2252 2263 2274 2285 2296 2307 23110 23211 233include/start_slave.inc 234SELECT * FROM t1 ORDER BY a; 235a 2361 2372 2383 2394 2405 2416 2427 24310 24411 24512 246connection server_1; 247DROP TABLE t1; 248DROP TABLE t2; 249DROP FUNCTION extract_gtid; 250include/rpl_end.inc 251