From bfd2222a54a29ae1e0459de9b5b7b25105ed4caf Mon Sep 17 00:00:00 2001 From: Baron Schwartz Date: Sun, 3 Jun 2012 16:20:58 -0400 Subject: [PATCH 1/2] make slaves set themselves read_only. Fix problem with replication_filters.t that is possibly not starting slaves after their masters are restarted. --- sandbox/start-sandbox | 19 ++++++++++++------- t/pt-table-checksum/replication_filters.t | 10 ++++++++++ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/sandbox/start-sandbox b/sandbox/start-sandbox index b146ab40..0a4ad49b 100755 --- a/sandbox/start-sandbox +++ b/sandbox/start-sandbox @@ -47,6 +47,11 @@ make_sandbox() { echo "skip-innodb" >> /tmp/$port/my.sandbox.cnf fi + # If the sandbox is a slave, set it read_only. + if [ "$type" = "slave" ]; then + echo "read_only" >> /tmp/$port/my.sandbox.cnf + fi + # Start the sandbox and check that it has InnoDB. /tmp/$port/start if [ $? -eq 0 ]; then @@ -65,6 +70,12 @@ make_sandbox() { exit 1 fi + # If the sandbox is a slave, start the slave. + if [ "$type" = "slave" ]; then + /tmp/$port/use -e "change master to master_host='127.0.0.1', master_user='msandbox', master_password='msandbox', master_port=$master_port" + /tmp/$port/use -e "start slave" + fi + return 0 } @@ -149,13 +160,7 @@ if [ -f $PIDFILE ]; then echo "Sandbox $port already started (found pid file $PIDFILE)" else make_sandbox - - # If the sandbox is a slave, start the slave. - if [ "$type" = "slave" ]; then - /tmp/$port/use -e "change master to master_host='127.0.0.1', master_user='msandbox', master_password='msandbox', master_port=$master_port" - /tmp/$port/use -e "start slave" - /tmp/$port/use -e "set global read_only=1" - fi + # make_sandbox has started slave and set read_only if necessary. # If the sandbox is a master-master, start the second master and slave the # two together. diff --git a/t/pt-table-checksum/replication_filters.t b/t/pt-table-checksum/replication_filters.t index 03fc4da3..f6f9497c 100644 --- a/t/pt-table-checksum/replication_filters.t +++ b/t/pt-table-checksum/replication_filters.t @@ -272,6 +272,16 @@ is( "USE only --replicate-database (binlog dump)" ); +# ############################################################################# +# Stop and start slaves to avoid sandbox breakage caused by restarting servers. +# ############################################################################# +$slave1_dbh = $sb->get_dbh_for('slave1'); +$slave2_dbh = $sb->get_dbh_for('slave2'); +$slave1_dbh->do('STOP SLAVE'); +$slave2_dbh->do('STOP SLAVE'); +$slave1_dbh->do('START SLAVE'); +$slave2_dbh->do('START SLAVE'); + # ############################################################################# # Done. # ############################################################################# From bac93e1201a3e64c6c31e57be347b038999b5143 Mon Sep 17 00:00:00 2001 From: Baron Schwartz Date: Sun, 3 Jun 2012 16:25:28 -0400 Subject: [PATCH 2/2] Remove 'type=innodb' syntax (illegal in MySQL 5.5) --- t/pt-archiver/samples/table1.sql | 2 +- t/pt-archiver/samples/table5.sql | 6 +++--- t/pt-archiver/samples/tables1-4.sql | 8 ++++---- t/pt-archiver/samples/tables7-9.sql | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/t/pt-archiver/samples/table1.sql b/t/pt-archiver/samples/table1.sql index 6477c573..722519bd 100644 --- a/t/pt-archiver/samples/table1.sql +++ b/t/pt-archiver/samples/table1.sql @@ -7,7 +7,7 @@ create table table_1( c int not null, d varchar(50), key(b) -) type=innodb; +) engine=innodb; insert into table_1 values (1, 2, 3, 4), diff --git a/t/pt-archiver/samples/table5.sql b/t/pt-archiver/samples/table5.sql index 7442eaa5..15ce120f 100644 --- a/t/pt-archiver/samples/table5.sql +++ b/t/pt-archiver/samples/table5.sql @@ -15,7 +15,7 @@ CREATE TABLE `table_5` ( h decimal(9,5) not null, i datetime not null, PRIMARY KEY (a,b,c,d) -) type=InnoDB; +) engine=InnoDB; CREATE TABLE `table_5_dest` ( a date not null, b int not null, @@ -27,7 +27,7 @@ CREATE TABLE `table_5_dest` ( h decimal(9,5) not null, i datetime not null, PRIMARY KEY (a,b,c,d) -) type=InnoDB; +) engine=InnoDB; CREATE TABLE `table_5_copy` ( a date not null, b int not null, @@ -39,7 +39,7 @@ CREATE TABLE `table_5_copy` ( h decimal(9,5) not null, i datetime not null, PRIMARY KEY (a,b,c,d) -) type=InnoDB; +) engine=InnoDB; INSERT INTO `table_5` VALUES (current_date - interval 2 day,581,'m','ga',1,16,0,'0.00402','2007-03-10 18:00:33') diff --git a/t/pt-archiver/samples/tables1-4.sql b/t/pt-archiver/samples/tables1-4.sql index a3a2a4fd..a5acafea 100644 --- a/t/pt-archiver/samples/tables1-4.sql +++ b/t/pt-archiver/samples/tables1-4.sql @@ -14,14 +14,14 @@ create table table_1( c int not null, d varchar(50), key(b) -) type=innodb; +) engine=innodb; create table table_2( a int not null primary key auto_increment, b int, c int not null, d varchar(50) -) type=innodb; +) engine=innodb; create table table_3( a int not null, @@ -29,11 +29,11 @@ create table table_3( c int not null, d varchar(50), primary key(a, c) -) type=innodb; +) engine=innodb; create table table_4( a int -) type=innodb; +) engine=innodb; insert into table_1 values (1, 2, 3, 4), diff --git a/t/pt-archiver/samples/tables7-9.sql b/t/pt-archiver/samples/tables7-9.sql index 04913819..b6d91334 100644 --- a/t/pt-archiver/samples/tables7-9.sql +++ b/t/pt-archiver/samples/tables7-9.sql @@ -9,7 +9,7 @@ create table table_7( b int not null, c int not null, primary key(a, b) -) type=innodb; +) engine=innodb; drop table if exists table_8; create table table_8 like table_7; @@ -19,7 +19,7 @@ create table table_9( a int not null primary key, b int not null, c int not null -) type=innodb; +) engine=innodb; insert into table_7(a, b, c) values (1, 2, 1),