169 lines
4.4 KiB
Plaintext
169 lines
4.4 KiB
Plaintext
|
|
--source include/big_test.inc
|
|
--source include/master-slave.inc
|
|
--source include/have_binlog_format_mixed_or_row.inc
|
|
|
|
let $max_workers= 4;
|
|
|
|
--connection slave
|
|
SET @save_slave_parallel_workers= @@slave_parallel_workers;
|
|
SET @save_default_storage_engine=@@global.default_storage_engine;
|
|
SET @@global.default_storage_engine='innodb';
|
|
|
|
eval SET GLOBAL slave_parallel_workers= $max_workers;
|
|
# As the test case is not going to do any synchronization with the master
|
|
# before issuing STOP SLAVE in the non-deterministic activity, there is a
|
|
# chance that the slave applier be in MTS mode and in a condition that it
|
|
# will throw the following error message:
|
|
call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
|
|
call mtr.add_suppression("Request to stop slave SQL Thread received while applying a group that has non-transactional changes");
|
|
|
|
--source include/stop_slave.inc
|
|
--source include/start_slave.inc
|
|
|
|
--connection master
|
|
SET @save_default_storage_engine=@@global.default_storage_engine;
|
|
SET @@global.default_storage_engine='innodb';
|
|
SET @@session.default_storage_engine='innodb';
|
|
|
|
call mtr.add_suppression('.*Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.*');
|
|
|
|
let $i= 10;
|
|
let $slave_status= 0;
|
|
while ($i) {
|
|
eval CREATE DATABASE test_$i;
|
|
eval CREATE TABLE test_$i.t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(20), c BLOB, d INT NOT NULL DEFAULT 0);
|
|
dec $i;
|
|
}
|
|
--sync_slave_with_master
|
|
--connection master
|
|
|
|
|
|
--disable_query_log
|
|
--disable_warnings
|
|
|
|
let $slave_status= 0;
|
|
let $trx= 0;
|
|
let $alter= 0;
|
|
let $i= 200; # with bigger value test times out on some PB hosts
|
|
--let $small_test=`SELECT @@slave_parallel_type='LOGICAL_CLOCK' OR $VALGRIND_TEST`
|
|
if ($small_test)
|
|
{
|
|
# test may be slow on Valgrind or on MTS SUBMODE = LOGICAL CLOCK
|
|
let $i=50;
|
|
}
|
|
if (`select @@binlog_format like "STATEMENT"`) {
|
|
# relax mtr to scan unsafe warnings
|
|
let $i=50;
|
|
}
|
|
while ($i) {
|
|
if (`SELECT 10*RAND() > 8`) {
|
|
if ($trx) {
|
|
COMMIT;
|
|
let $trx= 0;
|
|
}
|
|
}
|
|
if (`SELECT 10*RAND() > 8`) {
|
|
if (!$trx) {
|
|
BEGIN;
|
|
let $trx= 1;
|
|
}
|
|
}
|
|
let $db= `SELECT FLOOR(10*RAND())+1`;
|
|
let $k= 10;
|
|
while ($k) {
|
|
eval INSERT INTO test_$k.t1 VALUES ($i, 'test', NULL, 0);
|
|
dec $k;
|
|
}
|
|
let $k= 10;
|
|
while ($k) {
|
|
eval UPDATE test_$k.t1 SET d=a WHERE a = FLOOR(1000*RAND());
|
|
dec $k;
|
|
}
|
|
eval DELETE FROM test_$db.t1 WHERE a = FLOOR(1000*RAND());
|
|
if (`SELECT 10*RAND() > 5`) {
|
|
eval UPDATE test_$db.t1 SET c=REPEAT('a', 1000) WHERE a < $i;
|
|
}
|
|
if ($trx) {
|
|
if (`SELECT 10*RAND() > 8`) {
|
|
let $k= 10;
|
|
while ($k) {
|
|
|
|
# Can't be CREATE .. SELECT here because of BUG#11756034 that allows STOP SLAVE
|
|
# in the middle of CREATE-SELECT caused group.
|
|
# TODO: fix the bug and create a use case.
|
|
|
|
eval CREATE TABLE test_$k.t0 (a INT NOT NULL PRIMARY KEY, b VARCHAR(20), c BLOB, d INT NOT NULL DEFAULT 0);
|
|
eval INSERT INTO test_$k.t0 SELECT * FROM test_$k.t1;
|
|
dec $k;
|
|
}
|
|
let $k= 10;
|
|
while ($k) {
|
|
eval DROP TABLE test_$k.t1;
|
|
dec $k;
|
|
}
|
|
let $k= 10;
|
|
while ($k) {
|
|
eval RENAME TABLE test_$k.t0 TO test_$k.t1 /* i= $i */;
|
|
dec $k;
|
|
}
|
|
}
|
|
}
|
|
if (`SELECT 10*RAND() > 9`) {
|
|
--connection slave
|
|
FLUSH LOGS;
|
|
--connection master
|
|
}
|
|
if (`SELECT 100*RAND() > 95`) {
|
|
if ($slave_status) {
|
|
--connection slave
|
|
let $workers= $max_workers;
|
|
if (`SELECT 10*RAND() > 5`) {
|
|
let $workers= 0;
|
|
}
|
|
eval SET GLOBAL slave_parallel_workers= $workers;
|
|
START SLAVE;
|
|
--connection master
|
|
let $slave_status= 0;
|
|
}
|
|
}
|
|
if (`SELECT 100*RAND() > 95`) {
|
|
if (!$slave_status)
|
|
{
|
|
--connection slave
|
|
STOP SLAVE;
|
|
--connection master
|
|
let $slave_status= 1;
|
|
}
|
|
}
|
|
dec $i;
|
|
}
|
|
--enable_warnings
|
|
|
|
--enable_query_log
|
|
--connection slave
|
|
--disable_warnings
|
|
--source include/start_slave.inc
|
|
--enable_warnings
|
|
|
|
#cleanup
|
|
|
|
--connection master
|
|
let $i= 10;
|
|
while ($i) {
|
|
eval DROP DATABASE test_$i;
|
|
dec $i;
|
|
}
|
|
|
|
SET @@global.default_storage_engine= @save_default_storage_engine;
|
|
|
|
--connection slave
|
|
SET @@global.default_storage_engine= @save_default_storage_engine;
|
|
SET GLOBAL slave_parallel_workers= @save_slave_parallel_workers;
|
|
|
|
# It may generate a big delay between master and slave, that will need more time
|
|
# to sync data
|
|
|
|
--let slave-timeout= 3600
|
|
--source include/rpl_end.inc
|