config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/rpl/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 : //home/usr.opt/mysql57/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test

##################################################################
# Author: JBM                                                    #
# Date: 2006-02-22                                               #
# Purpose: To test changes to mysqlbinlog for row based bin logs #
# We are using .opt file since we need small binlog size         #
##################################################################
--source include/not_group_replication_plugin.inc
--source include/not_gtid_enabled.inc
--source include/big_test.inc
# Include Section
# Make sure that we have row based bin log
-- source include/have_binlog_format_row.inc
# Embedded server doesn't support binlogging
-- source include/not_embedded.inc
# This test requires the cp932 charset compiled in
-- source include/have_cp932.inc
-- source include/master-slave.inc

# Setup Section
# we need this for getting fixed timestamps inside of this test

--disable_query_log ONCE
select "---Setup Section  --" as "";

set timestamp=1000000000;

--disable_warnings ONCE
DROP TABLE IF EXISTS t1,t2,t3;

connection master;
CREATE TABLE t1(word VARCHAR(20));
CREATE TABLE t2(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY);
--let $position= query_get_value(SHOW MASTER STATUS, Position, 1)
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT); 
--let $stop_position=query_get_value(SHOW MASTER STATUS, Position, 1)
--let $stop_position1=`select $stop_position - 1`
--let $binlog_start_pos=query_get_value(SHOW BINLOG EVENTS LIMIT 1, End_log_pos, 1)
# Test Section
# Lets start by putting some data into the tables.

--disable_query_log
INSERT INTO t1 VALUES ("abirvalg");
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;
LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE t1;

# d1 length 3000
set @d1 = 'dd1';
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);

let $count=500;
while ($count)
{
 INSERT INTO t2 VALUES (NULL);
 eval INSERT INTO t3 VALUES ($count,@d1,'20060222000000','Tested in Texas',$count*2.2);  
 dec $count;
}
--enable_query_log


--disable_query_log ONCE
select "---Test1 check table load  --" as "";

# Lets Check the tables on the Master
SELECT COUNT(*) from t1;
SELECT COUNT(*) from t2;
SELECT COUNT(*) from t3;
SELECT * FROM t1 ORDER BY word LIMIT 5;
SELECT * FROM t2 ORDER BY id LIMIT 5;
SELECT c1, c3, c4, c5  FROM t3 ORDER BY c1 LIMIT 5;

# Should have the same on the slave;
 
sync_slave_with_master;
SELECT COUNT(*) from t1;
SELECT COUNT(*) from t2;
SELECT COUNT(*) from t3;
SELECT * FROM t1 ORDER BY word LIMIT 5;
SELECT * FROM t2 ORDER BY id LIMIT 5;
SELECT c1, c3, c4, c5  FROM t3 ORDER BY c1 LIMIT 5;

# Okay time to get busy, back to master

connection master;

# simple query to show more in second binlog
insert into t1 values ("Alas");
flush logs;

# delimiters are for easier debugging in future
--disable_query_log ONCE
select "--- Test 1 Dump binlog to file --" as "";

#
#  Prepare local temporary file to recreate what we have currently.
let $MYSQLD_DATADIR= `select @@datadir;`;
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/master.sql

--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000002 >> $MYSQLTEST_VARDIR/tmp/master.sql

# Now that we have our file, lets get rid of the current database.
# Cleanup the master and the slave and try to recreate.
--disable_query_log ONCE
select "--- Test 1 delete tables, clean master and slave  --" as "";

DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;

sync_slave_with_master;
#we expect STOP SLAVE to produce a warning as the slave is stopped
#(the server was started with skip-slave-start)
--disable_warnings
stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings
connection master;
reset master;
connection slave;
reset slave;
reset master;
start slave;
--source include/wait_for_slave_to_start.inc
connection master;

# We should be clean at this point, now we will run in the file from above.
--disable_query_log ONCE
select "--- Test 1 Load from Dump binlog file --" as "";

--exec $MYSQL -e "source $MYSQLTEST_VARDIR/tmp/master.sql"

--disable_query_log ONCE
select "--- Test 1 Check Load Results --" as "";

# Lets Check the tables on the Master
SELECT COUNT(*) from t1;
SELECT COUNT(*) from t2;
SELECT COUNT(*) from t3;
SELECT * FROM t1 ORDER BY word LIMIT 5;
SELECT * FROM t2 ORDER BY id LIMIT 5;
SELECT c1, c3, c4, c5  FROM t3 ORDER BY c1 LIMIT 5;

# Should have the same on the slave;

sync_slave_with_master;
SELECT COUNT(*) from t1;
SELECT COUNT(*) from t2;
SELECT COUNT(*) from t3;
SELECT * FROM t1 ORDER BY word LIMIT 5;
SELECT * FROM t2 ORDER BY id LIMIT 5;
SELECT c1, c3, c4, c5  FROM t3 ORDER BY c1 LIMIT 5;
connection master;

# We should be gold by the time, so I will get rid of our file.

remove_file $MYSQLTEST_VARDIR/tmp/master.sql;


# this test for start-position option
# By setting this position to 416, we should only get the create of t3
--disable_query_log ONCE
select "--- Test 2 position test --" as "";
let $MYSQLD_DATADIR= `select @@datadir;`;
--let $mysqlbinlog_parameters= --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --start-position=$position --stop-position=$stop_position $MYSQLD_DATADIR/master-bin.000001
--source include/mysqlbinlog.inc

# These are tests for remote binlog.
# They should return the same as previous test.

--disable_query_log ONCE
select "--- Test 3 First Remote test --" as "";

# This is broken now
--let $mysqlbinlog_parameters= --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --stop-position=$stop_position --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
--source include/mysqlbinlog.inc

--disable_query_log ONCE
select "--- Test 4 Second Remote test --" as "";
--exec $MYSQL_BINLOG --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 > $MYSQLTEST_VARDIR/tmp/remote.sql

--exec $MYSQL_BINLOG --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002 >> $MYSQLTEST_VARDIR/tmp/remote.sql

# Now that we have our file, lets get rid of the current database.
# Cleanup the master and the slave and try to recreate.

DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;

sync_slave_with_master;

#we expect STOP SLAVE to produce a warning as the slave is stopped
#(the server was started with skip-slave-start)

--disable_warnings
stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings
connection master;
reset master;
connection slave;
reset slave;
reset master;
start slave;
--source include/wait_for_slave_to_start.inc
connection master;

# We should be clean at this point, now we will run in the file from above.

--exec $MYSQL -e "source $MYSQLTEST_VARDIR/tmp/remote.sql"

# Lets Check the tables on the Master

SELECT COUNT(*) from t1;
SELECT COUNT(*) from t2;
SELECT COUNT(*) from t3;
SELECT * FROM t1 ORDER BY word LIMIT 5;
SELECT * FROM t2 ORDER BY id LIMIT 5;
SELECT c1, c3, c4, c5  FROM t3 ORDER BY c1 LIMIT 5;

# Should have the same on the slave;

sync_slave_with_master;
SELECT COUNT(*) from t1;
SELECT COUNT(*) from t2;
SELECT COUNT(*) from t3;
SELECT * FROM t1 ORDER BY word LIMIT 5;
SELECT * FROM t2 ORDER BY id LIMIT 5;
SELECT c1, c3, c4, c5  FROM t3 ORDER BY c1 LIMIT 5;
connection master;

# We should be gold by the time, so I will get rid of our file.

--remove_file $MYSQLTEST_VARDIR/tmp/remote.sql
################### End Bug 17654 ######################

# What is the point of this test? It seems entirely pointless. It
# might make sense for statement-based replication, but for row-based
# replication the LOAD DATA INFILE is printed just as empty
# transactions. /Matz

# LOAD DATA

--disable_query_log ONCE
select "--- Test 5 LOAD DATA --" as "";
--let $mysqlbinlog_parameters= --short-form --local-load=$MYSQLTEST_VARDIR/tmp/ --stop-position=$binlog_start_pos --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000002
--source include/mysqlbinlog.inc

# Bug#7853 (mysqlbinlog does not accept input from stdin)

--disable_query_log ONCE
select "--- Test 6 reading stdin --" as "";
let $MYSQLD_DATADIR= `select @@datadir;`;
--let $mysqlbinlog_parameters= --short-form --stop-position=$stop_position1 - < $MYSQLD_DATADIR/master-bin.000001
--source include/mysqlbinlog.inc

--disable_query_log ONCE
select "--- Test 7 reading stdin w/position --" as "";
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--let $mysqlbinlog_parameters= --short-form --start-position=$position --stop-position=$stop_position - < $MYSQLD_DATADIR/master-bin.000001
--source include/mysqlbinlog.inc
       
# Bug#16217 (mysql client did not know how not switch its internal charset)
--disable_query_log ONCE
select "--- Test 8 switch internal charset --" as "";
sync_slave_with_master;

#we expect STOP SLAVE to produce a warning as the slave is stopped
#(the server was started with skip-slave-start)

--disable_warnings
stop slave;
--source include/wait_for_slave_to_stop.inc
--enable_warnings
connection master;
reset master;
connection slave;
reset slave;
reset master;
start slave;
--source include/wait_for_slave_to_start.inc
connection master;

create table t4 (f text character set utf8);
create table t5 (f text character set cp932); 
--character_set utf8
--execw $MYSQL --default-character-set=utf8 test -e "insert into t4 values(_utf8'ソ')"
--character_set cp932
--execw $MYSQL --default-character-set=cp932 test -e "insert into t5 values(_cp932'ƒ\');"
--character_set latin1
let $MYSQLD_DATADIR= `select @@datadir;`;
flush logs;
rename table t4 to t04, t5 to t05;
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 | $MYSQL --default-character-set=utf8
# original and recovered data must be equal
select HEX(f) from t04;
select HEX(f) from t4;
select HEX(f) from t05;
select HEX(f) from t5;

# slave should have same 
sync_slave_with_master;
select HEX(f) from t04;
select HEX(f) from t4;
select HEX(f) from t05;
select HEX(f) from t5;

--disable_query_log ONCE
select "--- Test cleanup --" as "";
# clean up
connection master;
sync_slave_with_master;

connection master;

# BUG#17654 also test mysqlbinlog to ensure it can read the binlog from a remote server 
# and ensure that the results are the same as if read from a file (the same file).

--disable_warnings ONCE
DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (a INT NOT NULL KEY, b INT);

INSERT INTO t1 VALUES(1,1);

SELECT * FROM t1;

let $MYSQLD_DATADIR= `select @@datadir;`;

FLUSH LOGS;

--exec $MYSQL_BINLOG --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 > $MYSQLTEST_VARDIR/tmp/remote.sql
--exec $MYSQL_BINLOG $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/local.sql

--diff_files $MYSQLTEST_VARDIR/tmp/local.sql $MYSQLTEST_VARDIR/tmp/remote.sql

--remove_file $MYSQLTEST_VARDIR/tmp/remote.sql

--remove_file $MYSQLTEST_VARDIR/tmp/local.sql

DROP TABLE IF EXISTS t1, t2, t3, t04, t05, t4, t5; 
sync_slave_with_master;

# End of 4.1 tests
--source include/rpl_end.inc

Man Man