1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-4506: parallel replication.

Add a simple test case.
Fix bugs found.
This commit is contained in:
unknown
2013-09-16 14:33:49 +02:00
parent d107bdaa01
commit 5633dd8227
16 changed files with 409 additions and 411 deletions

View File

@ -1,60 +1,74 @@
--source include/have_binlog_format_statement.inc
--source include/have_innodb.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
--let $rpl_topology=1->2
--source include/rpl_init.inc
connect (s1,127.0.0.1,root,,test,$MASTER_MYPORT,);
connect (s2,127.0.0.1,root,,test,$SLAVE_MYPORT,);
--connection s1
SELECT @@server_id;
SET sql_log_bin=0;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=MyISAM;
SET sql_log_bin=1;
--connection s2
SELECT @@server_id;
SET sql_log_bin=0;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=MyISAM;
SET sql_log_bin=1;
--replace_result $MASTER_MYPORT MASTER_PORT
eval CHANGE MASTER TO master_host = '127.0.0.1', master_port = $MASTER_MYPORT,
master_user='root', master_use_gtid=current_pos;
--connection s1
SET gtid_domain_id=0;
INSERT INTO t1 VALUES (1);
SET gtid_domain_id=1;
INSERT INTO t1 VALUES (2);
SET gtid_domain_id=2;
INSERT INTO t1 VALUES (3);
SET gtid_domain_id=0;
INSERT INTO t1 VALUES (4);
SET gtid_domain_id=1;
INSERT INTO t1 VALUES (5);
SET gtid_domain_id=2;
INSERT INTO t1 VALUES (6);
SET gtid_domain_id=0;
INSERT INTO t1 VALUES (7);
SET gtid_domain_id=1;
INSERT INTO t1 VALUES (8);
SET gtid_domain_id=2;
INSERT INTO t1 VALUES (9);
--connection s2
query_vertical SHOW SLAVE STATUS;
--source include/start_slave.inc
SELECT * FROM t1;
# Test various aspects of parallel replication.
--connection server_2
SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
--error ER_SLAVE_MUST_STOP
SET GLOBAL slave_parallel_threads=10;
--source include/stop_slave.inc
SET GLOBAL slave_parallel_threads=10;
CHANGE MASTER TO master_use_gtid=slave_pos;
--source include/start_slave.inc
--echo *** Test long-running query in domain 1 can run in parallel with short queries in domain 0 ***
--connection server_1
CREATE TABLE t1 (a int PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE t2 (a int PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1);
--save_master_pos
--connection server_2
--sync_with_master
# Block the table t1 to simulate a replicated query taking a long time.
--connect (con_temp,127.0.0.1,root,,test,$SERVER_MYPORT_2,)
LOCK TABLE t1 WRITE;
--connection server_1
SET gtid_domain_id=1;
# This query will be blocked on the slave until UNLOCK TABLES.
INSERT INTO t1 VALUES (2);
SET gtid_domain_id=0;
# These t2 queries can be replicated in parallel with the prior t1 query, as
# they are in a separate replication domain.
INSERT INTO t2 VALUES (2);
INSERT INTO t2 VALUES (3);
BEGIN;
INSERT INTO t2 VALUES (4);
INSERT INTO t2 VALUES (5);
COMMIT;
INSERT INTO t2 VALUES (6);
--connection server_2
--let $wait_condition= SELECT COUNT(*) = 6 FROM t2
--source include/wait_condition.inc
SELECT * FROM t2 ORDER by a;
--connection con_temp
SELECT * FROM t1;
UNLOCK TABLES;
--connection s1
SET sql_log_bin=0;
DROP TABLE t1;
SET sql_log_bin=1;
--connection server_2
--let $wait_condition= SELECT COUNT(*) = 2 FROM t1
--source include/wait_condition.inc
--connection s2
RESET SLAVE ALL;
SET sql_log_bin=0;
DROP TABLE t1;
SET sql_log_bin=1;
SELECT * FROM t1 ORDER BY a;
--connection server_2
--source include/stop_slave.inc
SET GLOBAL slave_parallel_threads=@old_parallel_threads;
--source include/start_slave.inc
--connection server_1
DROP TABLE t1,t2;
--source include/rpl_end.inc