mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	Problem: mysqlbinlog_base64 failed sporadically. Reason: Missing "flush logs" before running $MYSQL_BINLOG, which could start dumping the log file before server has finished writting into it. Fix: - implementing --force-if-open option to "mysqlbinlog" - adding --disable-force-if-open to make $MYSQL_BINLOG fail on non-closed log files, to garantee that nobody will forget "flush logs" in the future. - adding "flush logs" into all affected tests. client/mysqlbinlog.cc: Implementing --force-if-open option with TRUE by default mysql-test/mysql-test-run.pl: Using --disable-force-if-open for all tests to avoid sporadic test failures because of running "mysqlbinlog" on a non-flushed binlog files. mysql-test/r/binlog_row_mix_innodb_myisam.result: FLush log before running dumping. mysql-test/r/binlog_stm_mix_innodb_myisam.result: FLush log before running dumping. mysql-test/r/mysqlbinlog.result: FLush log before running dumping. mysql-test/r/mysqlbinlog2.result: FLush log before running dumping. mysql-test/r/mysqlbinlog_base64.result: FLush log before running dumping. mysql-test/r/user_var-binlog.result: FLush log before running dumping. mysql-test/t/binlog_row_mix_innodb_myisam.test: FLush log before running dumping. mysql-test/t/binlog_stm_mix_innodb_myisam.test: FLush log before running dumping. mysql-test/t/mysqlbinlog.test: FLush log before running dumping. Adding new tests: - checking that $MYSQL_BINLOG returns an error on a non-closed binlog file because of --disable-force-if-open - checking that it does not return an error with --force-if-open mysql-test/t/mysqlbinlog2.test: FLush log before running dumping. mysql-test/t/mysqlbinlog_base64.test: FLush log before running dumping. mysql-test/t/user_var-binlog.test: FLush log before running dumping.
		
			
				
	
	
		
			166 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Test for the new options --start-datetime, stop-datetime,
 | |
| # and a few others.
 | |
| 
 | |
| # TODO: Need to look at making row based version once new binlog client is complete.
 | |
| -- source include/have_binlog_format_mixed_or_statement.inc
 | |
| 
 | |
| # Embedded server doesn't support binlogging
 | |
| -- source include/not_embedded.inc
 | |
| 
 | |
| --disable_warnings
 | |
| drop table if exists t1;
 | |
| --enable_warnings
 | |
| reset master;
 | |
| 
 | |
| # We need this for getting fixed timestamps inside of this test.
 | |
| # I use a date in the future to keep a growing timestamp along the
 | |
| # binlog (including the Start_log_event). This test will work 
 | |
| # unchanged everywhere, because mysql-test-run has fixed TZ, which it
 | |
| # exports (so mysqlbinlog has same fixed TZ).
 | |
| set @a=UNIX_TIMESTAMP("2020-01-21 15:32:22");
 | |
| set timestamp=@a;
 | |
| create table t1 (a int auto_increment not null primary key, b char(3));
 | |
| insert into t1 values(null, "a");
 | |
| insert into t1 values(null, "b");
 | |
| set timestamp=@a+2;
 | |
| insert into t1 values(null, "c");
 | |
| set timestamp=@a+4;
 | |
| insert into t1 values(null, "d");
 | |
| insert into t1 values(null, "e");
 | |
| 
 | |
| flush logs;
 | |
| set timestamp=@a+1; # this could happen on a slave
 | |
| insert into t1 values(null, "f");
 | |
| 
 | |
| # delimiters are for easier debugging in future
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- Local --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| #
 | |
| # We should use --short-form everywhere because in other case output will
 | |
| # be time dependent (the Start events). Better than nothing.
 | |
| #
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- offset --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --offset=2 $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- start-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --start-position=604 $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- stop-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --stop-position=604 $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- start-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--start-datetime=2020-01-21 15:32:24" $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- stop-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--stop-datetime=2020-01-21 15:32:24" $MYSQLTEST_VARDIR/log/master-bin.000001 
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- Local with 2 binlogs on command line --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| # This is to verify that some options apply only to first, or last binlog
 | |
| 
 | |
| flush logs;
 | |
| --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- offset --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --offset=2 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- start-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --start-position=604 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- stop-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --stop-position=130 $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- start-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--start-datetime=2020-01-21 15:32:24" $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- stop-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--stop-datetime=2020-01-21 15:32:24" $MYSQLTEST_VARDIR/log/master-bin.000001 $MYSQLTEST_VARDIR/log/master-bin.000002
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- Remote --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- offset --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --offset=2 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- start-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --start-position=604 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- stop-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --stop-position=604 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 
 | |
| --disable_query_log
 | |
| select "--- start-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--start-datetime=2020-01-21 15:32:24" --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
 | |
| --disable_query_log
 | |
| select "--- stop-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--stop-datetime=2020-01-21 15:32:24" --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- Remote with 2 binlogs on command line --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- offset --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --offset=2 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001  master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- start-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --start-position=604 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001  master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- stop-position --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form --stop-position=130 --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001  master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- start-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--start-datetime=20200121153224" --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
 | |
| --disable_query_log
 | |
| select "--- stop-datetime --" as "";
 | |
| --enable_query_log
 | |
| --exec $MYSQL_BINLOG --short-form "--stop-datetime=2020/01/21 15@32@24" --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 master-bin.000002
 | |
| 
 | |
| --disable_query_log
 | |
| select "--- to-last-log --" as "";
 | |
| --enable_query_log
 | |
| 
 | |
| --exec $MYSQL_BINLOG --short-form --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --to-last-log master-bin.000001
 | |
| 
 | |
| # clean up
 | |
| --disable_query_log
 | |
| select "--- end of test --" as "";
 | |
| --enable_query_log
 | |
| drop table t1;
 | |
| 
 | |
| # End of 4.1 tests
 |