mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
4c798b42d3
mysql-test/include/have_ndb_extra.inc: New BitKeeper file ``mysql-test/include/have_ndb_extra.inc'' mysql-test/include/not_ndb.inc: New BitKeeper file ``mysql-test/include/not_ndb.inc'' mysql-test/r/have_ndb_extra.require: New BitKeeper file ``mysql-test/r/have_ndb_extra.require'' mysql-test/r/ndb_alter_table_row.result: New BitKeeper file ``mysql-test/r/ndb_alter_table_row.result'' mysql-test/r/ndb_alter_table_stm.result: New BitKeeper file ``mysql-test/r/ndb_alter_table_stm.result'' mysql-test/r/ndb_binlog_basic.result: New BitKeeper file ``mysql-test/r/ndb_binlog_basic.result'' mysql-test/r/ndb_binlog_multi.result: New BitKeeper file ``mysql-test/r/ndb_binlog_multi.result'' mysql-test/r/ndb_multi_row.result: New BitKeeper file ``mysql-test/r/ndb_multi_row.result'' mysql-test/r/not_ndb.require: New BitKeeper file ``mysql-test/r/not_ndb.require'' mysql-test/r/rpl_ndb_bank.result: New BitKeeper file ``mysql-test/r/rpl_ndb_bank.result'' mysql-test/r/rpl_ndb_basic.result: New BitKeeper file ``mysql-test/r/rpl_ndb_basic.result'' mysql-test/r/rpl_ndb_disk.result: New BitKeeper file ``mysql-test/r/rpl_ndb_disk.result'' mysql-test/r/rpl_ndb_idempotent.result: New BitKeeper file ``mysql-test/r/rpl_ndb_idempotent.result'' mysql-test/r/rpl_ndb_load.result: New BitKeeper file ``mysql-test/r/rpl_ndb_load.result'' mysql-test/r/rpl_ndb_multi.result: New BitKeeper file ``mysql-test/r/rpl_ndb_multi.result'' mysql-test/r/rpl_ndb_sync.result: New BitKeeper file ``mysql-test/r/rpl_ndb_sync.result'' mysql-test/r/rpl_row_basic_7ndb.result: New BitKeeper file ``mysql-test/r/rpl_row_basic_7ndb.result'' mysql-test/t/ndb_alter_table_row.test: New BitKeeper file ``mysql-test/t/ndb_alter_table_row.test'' mysql-test/t/ndb_alter_table_stm.test: New BitKeeper file ``mysql-test/t/ndb_alter_table_stm.test'' mysql-test/t/ndb_binlog_basic.test: New BitKeeper file ``mysql-test/t/ndb_binlog_basic.test'' mysql-test/t/ndb_binlog_multi.test: New BitKeeper file ``mysql-test/t/ndb_binlog_multi.test'' mysql-test/t/ndb_multi_row.test: New BitKeeper file ``mysql-test/t/ndb_multi_row.test'' mysql-test/t/rpl_ndb_bank.test: New BitKeeper file ``mysql-test/t/rpl_ndb_bank.test'' mysql-test/t/rpl_ndb_basic.test: New BitKeeper file ``mysql-test/t/rpl_ndb_basic.test'' mysql-test/t/rpl_ndb_disk.test: New BitKeeper file ``mysql-test/t/rpl_ndb_disk.test'' mysql-test/t/rpl_ndb_idempotent.test: New BitKeeper file ``mysql-test/t/rpl_ndb_idempotent.test'' mysql-test/t/rpl_ndb_load.test: New BitKeeper file ``mysql-test/t/rpl_ndb_load.test'' mysql-test/t/rpl_ndb_multi.test: New BitKeeper file ``mysql-test/t/rpl_ndb_multi.test'' mysql-test/t/rpl_ndb_sync.test: New BitKeeper file ``mysql-test/t/rpl_ndb_sync.test'' mysql-test/t/rpl_row_basic_7ndb.test: New BitKeeper file ``mysql-test/t/rpl_row_basic_7ndb.test'' sql/ha_ndbcluster_binlog.cc: New BitKeeper file ``sql/ha_ndbcluster_binlog.cc'' sql/ha_ndbcluster_binlog.h: New BitKeeper file ``sql/ha_ndbcluster_binlog.h'' sql/ha_ndbcluster_tables.h: New BitKeeper file ``sql/ha_ndbcluster_tables.h'' sql/rpl_injector.cc: New BitKeeper file ``sql/rpl_injector.cc'' sql/rpl_injector.h: New BitKeeper file ``sql/rpl_injector.h'' storage/ndb/include/kernel/signaldata/DihFragCount.hpp: New BitKeeper file ``storage/ndb/include/kernel/signaldata/DihFragCount.hpp''
132 lines
4.5 KiB
Text
132 lines
4.5 KiB
Text
--source include/have_ndb.inc
|
|
--source include/have_binlog_format_row.inc
|
|
--source include/master-slave.inc
|
|
|
|
#
|
|
# Currently test only works with ndb since it retrieves "old"
|
|
# binlog positions with cluster_replication.binlog_index and apply_status;
|
|
#
|
|
|
|
# stop the save
|
|
connection slave;
|
|
STOP SLAVE;
|
|
CREATE DATABASE ndbsynctest;
|
|
USE ndbsynctest;
|
|
|
|
# get some data on the master
|
|
connection master;
|
|
CREATE DATABASE ndbsynctest;
|
|
USE ndbsynctest;
|
|
CREATE TABLE t1 (c1 BIT(1) NOT NULL, c2 BIT(1) NOT NULL, c3 CHAR(15), PRIMARY KEY(c3)) ENGINE = NDB ;
|
|
INSERT INTO t1 VALUES (1,1,"row1"),(0,1,"row2"),(1,0,"row3"),(0,0,"row4");
|
|
CREATE TABLE t2 (c1 CHAR(15), c2 BIT(1) NOT NULL, c3 BIT(1) NOT NULL, PRIMARY KEY(c1)) ENGINE = NDB ;
|
|
INSERT INTO t2 VALUES ("ABC",1,1),("BCDEF",0,1),("CD",1,0),("DEFGHIJKL",0,0);
|
|
SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
|
|
SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1;
|
|
|
|
# take a backup on master
|
|
--exec $NDB_MGM --no-defaults --ndb-connectstring=localhost:$NDBCLUSTER_PORT -e "start backup" >> $NDB_TOOLS_OUTPUT
|
|
--exec $NDB_TOOLS_DIR/ndb_select_all --no-defaults --ndb-connectstring=localhost:$NDBCLUSTER_PORT -d sys -D , SYSTAB_0 | grep 520093696 > var/tmp.dat
|
|
CREATE TABLE IF NOT EXISTS cluster_replication.backup_info (id INT, backup_id INT);
|
|
DELETE FROM cluster_replication.backup_info;
|
|
LOAD DATA INFILE '../../var/tmp.dat' INTO TABLE cluster_replication.backup_info FIELDS TERMINATED BY ',';
|
|
--replace_column 1 <the_backup_id>
|
|
SELECT @the_backup_id:=backup_id FROM cluster_replication.backup_info;
|
|
let the_backup_id=`select @the_backup_id` ;
|
|
|
|
# update a row
|
|
UPDATE t1 SET c2=0 WHERE c3="row2";
|
|
SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
|
|
|
|
# restore on slave, first check that nothing is there
|
|
connection slave
|
|
|
|
# we should have no tables
|
|
SHOW TABLES;
|
|
|
|
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
|
|
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -b $the_backup_id -n 2 -r -e --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
|
|
|
|
#
|
|
# BUG#11960
|
|
# prior to bugfix "DROP DATABASE" would give a warning since
|
|
# the events were not created by ndb_restore
|
|
#
|
|
DROP DATABASE ndbsynctest;
|
|
CREATE DATABASE ndbsynctest;
|
|
USE ndbsynctest;
|
|
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -b $the_backup_id -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
|
|
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT_SLAVE" -b $the_backup_id -n 2 -r -e --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id >> $NDB_TOOLS_OUTPUT
|
|
|
|
# continue test
|
|
SHOW TABLES;
|
|
|
|
SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
|
|
SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1;
|
|
|
|
#
|
|
# now setup replication to continue from last epoch
|
|
# 1. get apply_status epoch from slave
|
|
# 2. get corresponding _next_ binlog postition from master
|
|
# 3. change master on slave
|
|
|
|
# 1.
|
|
connection slave;
|
|
--replace_column 1 <the_epoch>
|
|
SELECT @the_epoch:=MAX(epoch) FROM cluster_replication.apply_status;
|
|
let $the_epoch= `select @the_epoch` ;
|
|
|
|
# 2.
|
|
connection master;
|
|
--replace_result $the_epoch <the_epoch>
|
|
--replace_column 1 <the_pos>
|
|
eval SELECT @the_pos:=Position,@the_file:=SUBSTRING_INDEX(FILE, '/', -1)
|
|
FROM cluster_replication.binlog_index WHERE epoch > $the_epoch ORDER BY epoch ASC LIMIT 1;
|
|
let $the_pos= `SELECT @the_pos` ;
|
|
let $the_file= `SELECT @the_file` ;
|
|
|
|
# 3.
|
|
connection slave;
|
|
--replace_result $the_pos <the_pos>
|
|
eval CHANGE MASTER TO
|
|
master_log_file = '$the_file',
|
|
master_log_pos = $the_pos ;
|
|
START SLAVE;
|
|
|
|
#
|
|
#
|
|
#
|
|
connection master;
|
|
#sync_slave_with_master;
|
|
--sleep 2
|
|
connection slave;
|
|
--replace_result $MASTER_MYPORT MASTER_PORT
|
|
--replace_column 1 <Slave_IO_State> 7 <Read_Master_Log_Pos> 8 <Relay_Log_File> 9 <Relay_Log_Pos> 16 <Replicate_Ignore_Table> 22 <Exec_Master_Log_Pos> 23 <Relay_Log_Space> 33 <Seconds_Behind_Master>
|
|
SHOW SLAVE STATUS;
|
|
|
|
SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
|
|
SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1;
|
|
|
|
#
|
|
# Cleanup
|
|
#
|
|
|
|
connection master;
|
|
DROP DATABASE ndbsynctest;
|
|
#sync_slave_with_master;
|
|
--sleep 2
|
|
connection slave;
|
|
STOP SLAVE;
|
|
|
|
#
|
|
# Test some replication commands
|
|
#
|
|
connection master;
|
|
reset master;
|
|
# should now contain nothing
|
|
select * from cluster_replication.binlog_index;
|
|
|
|
connection slave;
|
|
reset slave;
|
|
# should now contain nothing
|
|
select * from cluster_replication.apply_status;
|