config root man

Current Path : /usr/opt/mysql57/mysql-test/suite/binlog/t/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //usr/opt/mysql57/mysql-test/suite/binlog/t/binlog_mysqlbinlog_rewrite_db.test

# WL#6404 - Add rewrite-db option to mysqlbinlog on RBR
#
# The test checks the new rewrite-db option for the mysqlbinlog.
#
# The test checks the following aspects of the new option:

# 1. The valid syntax for the use of the new option and the errors in
#    case the usage is not correct.
# 2. Apply the new binlog file ( with database rewritten ) to a new database
#    and check if it works.
#
# Bug26117735: MYSQLBINLOG READ-FROM-REMOTE-SERVER NOT HONORING REWRITE_DB
# FILTERING
#
# Problem:
# When running mysqlbinlog with the --read-from-remote-server option,
# the processing of the binlog entries accepts rewrite_db as an argument, but
# ignores the rewrite rule.  Therefore no filtering is done on the binlog
# entries, resulting in failures to write data in the target DB.
#
# Test case1:
# Verify that rewrite_db filter works fine when reading binary log from remote
# server.
#
# Test case2:
# Verify that error scenario is handled properly in a case where rewrite_db
# filter fails to rewrite the databases.
#
# mysqlbinlog should be debug compiled.
--source include/mysqlbinlog_have_debug.inc
--source include/have_binlog_format_row.inc

RESET MASTER;
CREATE DATABASE db1;
USE db1;
CREATE TABLE t1 (i INT);

# Get some INSERT, UPDATE and DELETE ROW events.
INSERT INTO t1 VALUES(1);
INSERT INTO t1 VALUES(2);
UPDATE t1 SET i= i+1;
DELETE FROM t1 WHERE i=2;

--let $MYSQLD_DATADIR= `select @@datadir`
--exec $MYSQL_BINLOG --force-if-open $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/row_event.sql

# Using the new option to apply the row event on some other database (from db1 -> new_db1 in the current case)

--echo [Syntax error in the use of the new option: The from database name is missing]
--error 1
--exec $MYSQL_BINLOG --force-if-open --rewrite-db="->new_db1" $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/row_event_rewrite.sql

--echo [Syntax error in the use of the new option: The '->' is missing]
--error 1
--exec $MYSQL_BINLOG --force-if-open --rewrite-db="db1 new_db1" $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/row_event_rewrite.sql

--echo [Syntax error in the use of the new option: The to database name is missing]
--error 1
--exec $MYSQL_BINLOG --force-if-open --rewrite-db="db1->" $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/row_event_rewrite.sql

--echo [VALID SYNTAX,The from->to database names is correctly mentioned]
--exec $MYSQL_BINLOG --force-if-open --rewrite-db="db1->new_db1" $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/row_event_rewrite.sql

--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1)

# Bug26117735: MYSQLBINLOG READ-FROM-REMOTE-SERVER NOT HONORING REWRITE_DB FILTERING
--echo [VALID SYNTAX read from remote server ,The from->to database names are correctly mentioned]
--exec $MYSQL_BINLOG --force-if-open --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --rewrite-db="db1->new_db1" $binlog_file > $MYSQLTEST_VARDIR/tmp/row_event_from_remote_server_rewrite.sql

# BUG26878022: MYSQLBINLOG: ASSERTION `(OLD_MH->M_KEY == KEY) || (OLD_MH->M_KEY == 0)' FAILED
--echo [VALID SYNTAX read from remote server in raw mode, the from->to database names are correctly mentioned]
--exec $MYSQL_BINLOG --raw --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --rewrite-db="db1->new_db1" $binlog_file --result-file=$MYSQLTEST_VARDIR/tmp/
--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/tmp/$binlog_file > $MYSQLTEST_VARDIR/tmp/row_event_from_remote_server_rewrite_raw.sql

--echo [VALID SYNTAX, but during the application of rewrite_db filter an invalid event is found. Hence mysqlbinlog tool should exit with an appropriate error]
--echo [ERROR: Got fatal error while applying rewrite db filter.]
--error 1
--exec $MYSQL_BINLOG --force-if-open -#d,'simulate_corrupt_event_len' --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --rewrite-db="db1->new_db1" $binlog_file > $MYSQLTEST_VARDIR/tmp/tmp.sql

--echo #Dropping the database db1 and creating the table in the new database new_db1.

CREATE DATABASE new_db1;
DROP DATABASE db1;

# The SQL file will be applied but nothing is applied on Database new_db1 since the row event was
# generated for database db1 and table t1.

# With gtid-mode=on we need purge gtid_executed, if not transactions
# replayed through mysqlbinlog will be skipped.
RESET MASTER;
--exec $MYSQL --database=new_db1 --local-infile=1 < $MYSQLTEST_VARDIR/tmp/row_event.sql
--error ER_NO_SUCH_TABLE
SELECT * FROM new_db1.t1;

# The SQL file should be applied since the row event was extracted using the new mysqlbinlog option.

DROP DATABASE db1;
# With gtid-mode=on we need purge gtid_executed, if not transactions
# replayed through mysqlbinlog will be skipped.
RESET MASTER;
--echo [The event of table db1.t1 has been successfully applied to new_db1.t1]
--exec $MYSQL  --database=new_db1 --local-infile=1 < $MYSQLTEST_VARDIR/tmp/row_event_rewrite.sql
--let $assert_text= Assert that table new_db1.t1 has one row after applying the sql file.
--let $assert_cond= `SELECT COUNT(*)=1 from new_db1.t1`
--source include/assert.inc

DROP DATABASE db1;
DROP DATABASE new_db1;
CREATE DATABASE new_db1;
# With gtid-mode=on we need purge gtid_executed, if not transactions
# replayed through mysqlbinlog will be skipped.
RESET MASTER;
--echo [The event of table db1.t1 has been successfully applied to new_db1.t1]
--exec $MYSQL  --database=new_db1 --local-infile=1 < $MYSQLTEST_VARDIR/tmp/row_event_from_remote_server_rewrite.sql
--let $assert_text= Assert that table new_db1.t1 has one row after applying the sql file.
--let $assert_cond= `SELECT COUNT(*)=1 from new_db1.t1`
--source include/assert.inc

DROP DATABASE db1;
DROP DATABASE new_db1;
CREATE DATABASE new_db1;
# With gtid-mode=on we need purge gtid_executed, if not transactions
# replayed through mysqlbinlog will be skipped.
RESET MASTER;
--echo [The event of table db1.t1 has been successfully applied to new_db1.t1 from raw mode]
--exec $MYSQL  --database=new_db1 --local-infile=1 < $MYSQLTEST_VARDIR/tmp/row_event_from_remote_server_rewrite_raw.sql
--let $assert_text= Assert that table new_db1.t1 has one row after applying the sql file from raw binlog dump.
--let $assert_cond= `SELECT COUNT(*)=1 from new_db1.t1`
--source include/assert.inc

--echo CLEANUP

--remove_file $MYSQLTEST_VARDIR/tmp/row_event.sql
--remove_file $MYSQLTEST_VARDIR/tmp/row_event_rewrite.sql
--remove_file $MYSQLTEST_VARDIR/tmp/row_event_from_remote_server_rewrite.sql
--remove_file $MYSQLTEST_VARDIR/tmp/row_event_from_remote_server_rewrite_raw.sql
--remove_file $MYSQLTEST_VARDIR/tmp/tmp.sql
--remove_file $MYSQLTEST_VARDIR/tmp/$binlog_file
DROP DATABASE db1;
DROP DATABASE new_db1;

Man Man