98 lines
3.0 KiB
Plaintext
98 lines
3.0 KiB
Plaintext
-- source include/have_multi_ndb.inc
|
|
-- source include/have_binlog_format_mixed_or_row.inc
|
|
|
|
--echo #
|
|
--echo # Tests to test binlogging after mysqld restart
|
|
--echo # This file has tests for the following :
|
|
--echo # 1. WL#12731: Improve database synchronization during mysqld startup
|
|
--echo # 2. Bug#17250994 BAD BINLOG GENERATION AFTER MISMATCH TABLE DISCOVER
|
|
--echo #
|
|
|
|
--echo # Reset binlogging for test
|
|
-- connection server1
|
|
reset master;
|
|
-- connection server2
|
|
reset master;
|
|
|
|
--echo # Setup
|
|
# Setup for Bug#17250994
|
|
create table t1 (a int unsigned auto_increment not null primary key)
|
|
engine=ndbcluster;
|
|
|
|
--echo # Shutdown server 1
|
|
-- connection server1
|
|
|
|
# Ignore the warning generated by ndbcluster's binlog thread
|
|
# when mysqld is restarted
|
|
--disable_query_log ONCE
|
|
call mtr.add_suppression("mysqld startup An incident event has been written");
|
|
|
|
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
|
# it until it's told to.
|
|
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.1.expect
|
|
wait
|
|
EOF
|
|
# Send shutdown to the connected server and give
|
|
# it 30 seconds to die before zapping it.
|
|
shutdown_server 30;
|
|
# Wait until server is down.
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
--echo # Run DDLs to be tested on Server1 startup
|
|
-- connection server2
|
|
|
|
--echo # Alter table while server 1 is down (To test Bug#17250994)
|
|
alter table t1 algorithm=inplace, add column b varchar(16);
|
|
|
|
--echo # Create databases when server 1 is down (To test WL#12731)
|
|
create database test_db;
|
|
create table test_db.t1(a int) engine ndb;
|
|
|
|
--echo # Startup server1
|
|
-- connection server1
|
|
# Write file to make mysql-test-run.pl start up the server again.
|
|
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.1.expect
|
|
restart
|
|
EOF
|
|
# Turn on reconnect.
|
|
--enable_reconnect
|
|
# Call script that will poll the server waiting for it to be back online again.
|
|
--source include/wait_until_connected_again.inc
|
|
# Turn off reconnect again.
|
|
--disable_reconnect
|
|
|
|
--echo # Check that the tables are all discovered
|
|
show tables;
|
|
show tables in test_db;
|
|
show create table t1;
|
|
show create table test_db.t1;
|
|
|
|
--echo # Insert into tables and check binlog
|
|
-- connection server2
|
|
insert into t1 (b) values('String to find');
|
|
--echo # Wait for the row to be committed to binlog
|
|
--source include/wait_for_ndb_committed_to_binlog.inc
|
|
|
|
insert into test_db.t1 values (1);
|
|
--echo # Wait for the row to be committed to binlog
|
|
--source include/wait_for_ndb_committed_to_binlog.inc
|
|
|
|
--connection server1
|
|
--echo # check that data went in ok
|
|
select * from t1;
|
|
select * from test_db.t1;
|
|
|
|
--echo # Verify the row was properly binlogged after alter table
|
|
FLUSH BINARY LOGS;
|
|
let $MYSQLD_DATADIR= `select @@datadir;`;
|
|
--replace_regex /(.*\n)/REMOVE_LINE:\1/ /REMOVE_LINE:(.*@2='String to find'\n)/KEEP_LINE:\1/ /REMOVE_LINE:.*\n// /KEEP_LINE://
|
|
--exec $MYSQL_BINLOG --verbose $MYSQLD_DATADIR/binlog.000003
|
|
|
|
--echo # View binlog to verify that INSERTS were written properly
|
|
--let $binlog_file=$MYSQLD_DATADIR/binlog.000003
|
|
--source include/show_binlog_events.inc
|
|
|
|
--echo # Cleanup
|
|
drop database test_db;
|
|
drop table t1;
|