#
# ==== Purpose ====
#
# Run concurrent split alter on given storage engine
# With concurrent 10 connections
#
# ==== Usage ====
#
# --let $alter_engine = Engine Name (myisam , innodb ...)
# --let $alter_algorithm = ...
# --let $alter_online = [][ONLINE]
# --let $domain_1 =
# --let $domain_2 =
# --let $M_port = //Master port
# --let $S_port = //Slave port
# --let $sync_slave = // 0/1 whether to sync slave with master or not
#
--connection master_node
set global debug_dbug="+d,start_alter_delay_master" ;
--let $i = 1
while ($i < 11 )
{
if ($i == 1 && $domain_1 )
{
--eval set gtid_domain_id= $domain_1 ;
}
if ($i == 6 && $domain_2 )
{
--eval set gtid_domain_id= $domain_2 ;
}
--eval create table t$i ( a int primary key, b int) engine=$alter_engine
--eval insert into t$i values(1 ,1 ),(2 ,2 )
--inc $i
}
if ($sync_slave )
{
--echo # Sync slave
--source include/save_master_gtid.inc
--connection slave_node
--source include/sync_with_master_gtid.inc
--connection master_node
}
--let $i = 1
while ($i < 21 )
{
if ($i == 1 || $i == 11 )
{
if ($domain_1 )
{
--eval set global gtid_domain_id= $domain_1 ;
}
}
if ($i == 6 || $i == 16 )
{
if ($domain_2 )
{
--eval set global gtid_domain_id= $domain_2 ;
}
}
connect(con$i ,127 .0 .0 .1 ,root,,$db_name , $M_port );
--inc $i
}
--let $i = 1
while ($i < 11 )
{
--connection con$i
--send_eval alter $alter_online table t$i add column c int, force, algorithm=$alter_algorithm
--inc $i
}
--connection master_node
set DEBUG_SYNC= "now signal alter_cont" ;
--let $i = 1
while ($i < 11 )
{
--connection con$i
--reap
--inc $i
}
--connection master_node
set DEBUG_SYNC= 'RESET' ;
if ($sync_slave )
{
--echo # Sync slave
--source include/save_master_gtid.inc
--connection slave_node
--source include/sync_with_master_gtid.inc
--connection master_node
}
--echo # Concurrent DML
--let $i = 1
while ($i < 11 )
{
--connection con$i
--send_eval alter table t$i add column d int, force, algorithm=$alter_algorithm
--inc $i
}
if ($alter_algorithm == "inplace" )
{
--sleep 1
--let $i = 11
--let $j = 1
while ($i < 21 )
{
--connection con$i
--send_eval insert into t$j values(5 ,5 ,5 );
--inc $i
--inc $j
}
--let $i = 11
while ($i < 21 )
{
--connection con$i
--reap
--inc $i
}
if ($sync_slave )
{
--echo # Sync slave
--source include/save_master_gtid.inc
--connection slave_node
--source include/sync_with_master_gtid.inc
--connection master_node
}
}
--connection master_node
set DEBUG_SYNC= "now signal alter_cont" ;
--let $i = 1
while ($i < 11 )
{
--connection con$i
--reap
--inc $i
}
--connection master_node
set DEBUG_SYNC= 'RESET' ;
if ($sync_slave )
{
--echo # Sync slave
--source include/save_master_gtid.inc
--connection slave_node
--source include/sync_with_master_gtid.inc
--connection master_node
}
--echo # Rollback tests
--let $i = 1
while ($i < 11 )
{
--connection con$i
--eval insert into t$i values(3 ,2 ,1 ,1 )
--send_eval alter table t$i change b b int unique, force, algorithm=$alter_algorithm
--inc $i
}
--connection master_node
set DEBUG_SYNC= "now signal alter_cont" ;
--let $i = 1
while ($i < 11 )
{
--connection con$i
--error ER_DUP_ENTRY
--reap
--inc $i
}
--connection master_node
set DEBUG_SYNC= 'RESET' ;
if ($sync_slave )
{
--echo # Sync slave
--source include/save_master_gtid.inc
--connection slave_node
--source include/sync_with_master_gtid.inc
--connection master_node
}
if ($sync_slave )
{
--enable_query_log
--echo # diff_table of master and slave , we will do only in the case when
--echo # sync_slave is on
--let $i = 1
while ($i < 11 )
{
--let $diff_tables = master_node:t$i , slave_node:t$i
source include/diff_tables.inc;
--inc $i
}
--disable_query_log
}
--connection master_node
drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
if ($sync_slave )
{
--echo # Sync slave
--source include/save_master_gtid.inc
--connection slave_node
--source include/sync_with_master_gtid.inc
--connection master_node
}
--let $i = 1
while ($i < 21 )
{
--disconnect con$i
--inc $i
}
--connection master_node
SET GLOBAL debug_dbug= "" ;
Messung V0.5 in Prozent C=100 H=71 G=86
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-10)
¤
*© Formatika GbR, Deutschland