mirror of
https://github.com/MariaDB/server.git
synced 2025-08-29 00:08:14 +03:00
fixed sync bugs in three test cases added offset argument to sync_with_master to mysqltest to be able to fix sync bugs added a test case for slave startup with existing master.info expanded mysql-test-run.sh to be able to run pre-start shell script initializations client/mysqltest.c: added offset argument to sync_with_master mysql-test/mysql-test-run.sh: added option to run master or slave initialization shell script mysql-test/r/rpl000016.result: fixed bug in test case mysql-test/t/rpl000012.test: fixed syncronization bug mysql-test/t/rpl000013.test: fixed sync bug mysql-test/t/rpl000016.test: fixed ambiguous show slave status. sql/slave.cc: fixed bug that broke slave server start with existing master.info, Monty's optimization was not chopping off newline from logname.
93 lines
2.1 KiB
Plaintext
93 lines
2.1 KiB
Plaintext
connect (master,localhost,root,,test,0,mysql-master.sock);
|
|
connect (slave,localhost,root,,test,0,mysql-slave.sock);
|
|
source include/have_default_master.inc;
|
|
system cat /dev/null > var/slave-data/master.info;
|
|
system chmod 000 var/slave-data/master.info;
|
|
connection slave;
|
|
!slave start;
|
|
system chmod 600 var/slave-data/master.info;
|
|
!slave start;
|
|
!change master to master_host='127.0.0.1',master_port=9306,master_user='root';
|
|
reset slave;
|
|
!change master to master_host='127.0.0.1',master_port=9306,master_user='root';
|
|
connection master;
|
|
reset master;
|
|
connection slave;
|
|
slave start;
|
|
connection master;
|
|
drop table if exists t1;
|
|
create table t1 (s text);
|
|
insert into t1 values('Could not break slave'),('Tried hard');
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
show slave status;
|
|
select * from t1;
|
|
connection master;
|
|
flush logs;
|
|
drop table if exists t2;
|
|
create table t2(m int not null primary key);
|
|
insert into t2 values (34),(67),(123);
|
|
save_master_pos;
|
|
flush logs;
|
|
show master logs;
|
|
|
|
#now lets make some duplicate key mess and see if we can recover from it
|
|
|
|
#first insert a value on the slave
|
|
connection slave;
|
|
sync_with_master;
|
|
insert into t2 values(1234);
|
|
|
|
#same value on the master
|
|
connection master;
|
|
save_master_pos;
|
|
insert into t2 values(1234);
|
|
connection slave;
|
|
sync_with_master;
|
|
|
|
#the slave may have already stopped, so we ignore the error
|
|
!slave stop;
|
|
|
|
#restart slave skipping one event
|
|
set sql_slave_skip_counter=1;
|
|
slave start;
|
|
|
|
connection master;
|
|
save_master_pos;
|
|
|
|
#let slave catch up
|
|
connection slave;
|
|
sync_with_master;
|
|
connection master;
|
|
purge master logs to 'master-bin.003';
|
|
show master logs;
|
|
insert into t2 values (65);
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
show slave status;
|
|
select * from t2;
|
|
connection master;
|
|
let $1=100;
|
|
drop table if exists t3;
|
|
create table t3 (n int);
|
|
while ($1)
|
|
{
|
|
insert into t3 values(4);
|
|
dec $1;
|
|
}
|
|
show master logs;
|
|
save_master_pos;
|
|
connection slave;
|
|
slave stop;
|
|
slave start;
|
|
sync_with_master;
|
|
select count(*) from t3 where n = 4;
|
|
#clean up
|
|
connection master;
|
|
drop table if exists t1,t2,t3;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|