mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
0efb452e5e
WORK WITH --START-POSITION If setting --start-position to start after the FD event, mysqlbinlog will output an error stating that it has not found an FD event. However, its not that mysqlbinlog does not find it but rather that it does not processes it in the regular way (i.e., it does not print it). Given that one is using --base64-output=DECODE-ROWS then not printing it is actually fine. To fix this, we make mysqlbinlog not to complain when it has not printed the FD event, is outputing in base64, but is decoding the rows.
102 lines
2.5 KiB
Text
102 lines
2.5 KiB
Text
-- source include/have_binlog_format_row.inc
|
|
#
|
|
# Reset master to cleanup binlog
|
|
#
|
|
reset master;
|
|
|
|
#
|
|
# Write different events to binlog
|
|
#
|
|
create table t1 (a int);
|
|
insert into t1 values (1);
|
|
insert into t1 values (2);
|
|
insert into t1 values (3);
|
|
update t1 set a=a+2 where a=2;
|
|
update t1 set a=a+2 where a=3;
|
|
|
|
create table t2 (word varchar(20));
|
|
load data infile '../../std_data/words.dat' into table t2;
|
|
|
|
#
|
|
# Save binlog
|
|
#
|
|
let $MYSQLD_DATADIR=`select @@datadir`;
|
|
flush logs;
|
|
--exec $MYSQL_BINLOG --hexdump $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_base64.sql
|
|
|
|
#
|
|
# Clear database and restore from binlog
|
|
#
|
|
drop table t1;
|
|
drop table t2;
|
|
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/mysqlbinlog_base64.sql
|
|
|
|
#
|
|
# Verify that all binlog events have been executed
|
|
#
|
|
select * from t1;
|
|
select * from t2;
|
|
|
|
#
|
|
# Verify that events larger than the default IO_CACHE buffer
|
|
# are handled correctly (BUG#25628).
|
|
#
|
|
flush logs;
|
|
drop table t2;
|
|
create table t2 (word varchar(20));
|
|
load data infile '../../std_data/words.dat' into table t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
insert into t2 select * from t2;
|
|
select count(*) from t2;
|
|
|
|
flush logs;
|
|
--exec $MYSQL_BINLOG --hexdump $MYSQLD_DATADIR/master-bin.000003 > $MYSQLTEST_VARDIR/tmp/mysqlbinlog_base64.sql
|
|
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/mysqlbinlog_base64.sql
|
|
|
|
#
|
|
# Verify that all binlog events have been executed
|
|
#
|
|
select count(*) from t2;
|
|
|
|
#
|
|
# Test cleanup
|
|
#
|
|
--remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog_base64.sql
|
|
drop table t1;
|
|
drop table t2;
|
|
|
|
#
|
|
# BUG#12354268
|
|
#
|
|
# This test verifies that using --start-position with DECODE-ROWS
|
|
# does not make mysqlbinlog to output an error stating that it
|
|
# does not contain any FD event.
|
|
#
|
|
|
|
RESET MASTER;
|
|
USE test;
|
|
SET @old_binlog_format= @@binlog_format;
|
|
SET SESSION binlog_format=ROW;
|
|
CREATE TABLE t1(c1 INT);
|
|
--let $master_binlog= query_get_value(SHOW MASTER STATUS, File, 1)
|
|
--let $master_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
|
|
--let $MYSQLD_DATADIR= `SELECT @@datadir`
|
|
|
|
INSERT INTO t1 VALUES (1);
|
|
|
|
FLUSH LOGS;
|
|
|
|
--disable_result_log
|
|
--exec $MYSQL_BINLOG --base64-output=DECODE-ROWS --start-position=$master_pos -v $MYSQLD_DATADIR/$master_binlog
|
|
--enable_result_log
|
|
|
|
DROP TABLE t1;
|
|
SET SESSION binlog_format= @old_binlog_format;
|
|
RESET MASTER;
|