mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
a8b616d1e9
Moved rpl_parallel_*.inc to rpl_parallel_*.test
87 lines
2.9 KiB
Text
87 lines
2.9 KiB
Text
# Test should work with both conservative and optimistic modes
|
|
|
|
--source include/have_innodb.inc
|
|
--source include/have_debug.inc
|
|
--source include/have_debug_sync.inc
|
|
--source include/master-slave.inc
|
|
|
|
# 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;
|
|
|
|
# Check that we do not spawn any worker threads when no slave is running.
|
|
SELECT IF(COUNT(*) < 10, "OK", CONCAT("Found too many system user processes: ", COUNT(*))) FROM information_schema.processlist WHERE user = "system user";
|
|
|
|
CHANGE MASTER TO master_use_gtid=slave_pos;
|
|
--source include/start_slave.inc
|
|
|
|
# Check that worker threads get spawned when slave starts.
|
|
SELECT IF(COUNT(*) >= 10, "OK", CONCAT("Found too few system user processes: ", COUNT(*))) FROM information_schema.processlist WHERE user = "system user";
|
|
# ... and that worker threads get removed when slave stops.
|
|
--source include/stop_slave.inc
|
|
SELECT IF(COUNT(*) < 10, "OK", CONCAT("Found too many system user processes: ", COUNT(*))) FROM information_schema.processlist WHERE user = "system user";
|
|
--source include/start_slave.inc
|
|
SELECT IF(COUNT(*) >= 10, "OK", CONCAT("Found too few system user processes: ", COUNT(*))) FROM information_schema.processlist WHERE user = "system user";
|
|
|
|
--echo *** Test long-running query in domain 1 can run in parallel with short queries in domain 0 ***
|
|
|
|
--connection server_1
|
|
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
|
|
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_temp1,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_temp1
|
|
SELECT * FROM t1;
|
|
UNLOCK TABLES;
|
|
|
|
--connection server_2
|
|
--let $wait_condition= SELECT COUNT(*) = 2 FROM t1
|
|
--source include/wait_condition.inc
|
|
|
|
SELECT * FROM t1 ORDER BY a;
|
|
|
|
# Clean up.
|
|
--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
|