1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
SET TIMESTAMP= UNIX_TIMESTAMP('2024-12-01 10:20:30.123456');
#
# Clear the existing binary log state, and start fresh using
# the timestamp variable set above
#
RESET MASTER;
create table t1 (a int);
insert into t1 values (1);
SET TIMESTAMP= UNIX_TIMESTAMP('2024-12-02 10:20:30.123456');
insert into t1 values (2);
SET TIMESTAMP= UNIX_TIMESTAMP('2024-12-03 10:20:30.123456');
flush binary logs;
SET TIMESTAMP= UNIX_TIMESTAMP('2024-12-04 10:20:30.123456');
insert into t1 values (3);
insert into t1 values (4);
SET TIMESTAMP= UNIX_TIMESTAMP('2024-12-05 10:20:30.123456');
insert into t1 values (5);
insert into t1 values (6);
insert into t1 values (7);
SET TIMESTAMP=UNIX_TIMESTAMP('2024-12-06 10:20:30.123456');
flush binary logs;
drop table t1;
# Ensuring binary log order is correct
#
#
# Test using --read-from-remote-server
#
connection default;
#
# --stop-datetime tests
# Note: MDEV-35528 reported that mysqlbinlog would fail on tests cases
# 2.a, 2.b, and 2.c.
#
# Case 1.a) With one binlog file, a --stop-datetime before the end of
# the file should not result in a warning
# MYSQL_BINLOG --read-from-remote-server --stop-datetime='2024-12-02 10:20:30.123456' binlog_f1_full --result-file=tmp/warn_datetime_test_file.out 2>&1
#
# Case 1.b) With one binlog file, a --stop-datetime at the end of the
# file should not result in a warning
# MYSQL_BINLOG --read-from-remote-server --stop-datetime='2024-12-03 10:20:30.123456' binlog_f1_full --result-file=tmp/warn_datetime_test_file.out 2>&1
#
# Case 1.c) With one binlog file, a --stop-datetime beyond the end of
# the file should(!) result in a warning
# MYSQL_BINLOG --read-from-remote-server --stop-datetime='2024-12-04 10:20:30.123456' binlog_f1_full --result-file=tmp/warn_datetime_test_file.out 2>&1
WARNING: Did not reach stop datetime '2024-12-04 10:20:30.123456' before end of input
#
# Case 2.a) With two binlog files, a --stop-datetime within the
# timespan of binlog 2 should:
# 1) not provide any warnings
# 2) not prevent binlog 1 or 2 from outputting the desired events
# MYSQL_BINLOG --read-from-remote-server --stop-datetime='2024-12-04 10:20:30.123456' binlog_f1_full binlog_f2_full --result-file=tmp/warn_datetime_test_file.out 2>&1
include/assert_grep.inc [Ensure all intended GTIDs are present]
include/assert_grep.inc [Ensure the next GTID binlogged is _not_ present]
#
# Case 2.b) With two binlog files, a --stop-datetime at the end of
# binlog 2 should:
# 1) not provide any warnings
# 2) not prevent binlog 1 or 2 from outputting all events
# MYSQL_BINLOG --read-from-remote-server --stop-datetime='2024-12-06 10:20:30.123456' binlog_f1_full binlog_f2_full --result-file=tmp/warn_datetime_test_file.out 2>&1
include/assert_grep.inc [Ensure a GTID exists for each transaction]
#
# Case 2.c) With two binlog files, a --stop-datetime beyond the end of
# binlog 2 should:
# 1) provide a warning that the stop datetime was not reached
# 2) not prevent binlog 1 or 2 from outputting all events
# MYSQL_BINLOG --read-from-remote-server --stop-datetime='2024-12-07 10:20:30.123456' binlog_f1_full binlog_f2_full --result-file=tmp/warn_datetime_test_file.out 2>&1
WARNING: Did not reach stop datetime '2024-12-07 10:20:30.123456' before end of input
include/assert_grep.inc [Ensure a GTID exists for each transaction]
#
#
# Test using local binlog files
#
connection default;
#
# --stop-datetime tests
# Note: MDEV-35528 reported that mysqlbinlog would fail on tests cases
# 2.a, 2.b, and 2.c.
#
# Case 1.a) With one binlog file, a --stop-datetime before the end of
# the file should not result in a warning
# MYSQL_BINLOG --stop-datetime='2024-12-02 10:20:30.123456' binlog_f1_full --result-file=tmp/warn_datetime_test_file.out 2>&1
#
# Case 1.b) With one binlog file, a --stop-datetime at the end of the
# file should not result in a warning
# MYSQL_BINLOG --stop-datetime='2024-12-03 10:20:30.123456' binlog_f1_full --result-file=tmp/warn_datetime_test_file.out 2>&1
#
# Case 1.c) With one binlog file, a --stop-datetime beyond the end of
# the file should(!) result in a warning
# MYSQL_BINLOG --stop-datetime='2024-12-04 10:20:30.123456' binlog_f1_full --result-file=tmp/warn_datetime_test_file.out 2>&1
WARNING: Did not reach stop datetime '2024-12-04 10:20:30.123456' before end of input
#
# Case 2.a) With two binlog files, a --stop-datetime within the
# timespan of binlog 2 should:
# 1) not provide any warnings
# 2) not prevent binlog 1 or 2 from outputting the desired events
# MYSQL_BINLOG --stop-datetime='2024-12-04 10:20:30.123456' binlog_f1_full binlog_f2_full --result-file=tmp/warn_datetime_test_file.out 2>&1
include/assert_grep.inc [Ensure all intended GTIDs are present]
include/assert_grep.inc [Ensure the next GTID binlogged is _not_ present]
#
# Case 2.b) With two binlog files, a --stop-datetime at the end of
# binlog 2 should:
# 1) not provide any warnings
# 2) not prevent binlog 1 or 2 from outputting all events
# MYSQL_BINLOG --stop-datetime='2024-12-06 10:20:30.123456' binlog_f1_full binlog_f2_full --result-file=tmp/warn_datetime_test_file.out 2>&1
include/assert_grep.inc [Ensure a GTID exists for each transaction]
#
# Case 2.c) With two binlog files, a --stop-datetime beyond the end of
# binlog 2 should:
# 1) provide a warning that the stop datetime was not reached
# 2) not prevent binlog 1 or 2 from outputting all events
# MYSQL_BINLOG --stop-datetime='2024-12-07 10:20:30.123456' binlog_f1_full binlog_f2_full --result-file=tmp/warn_datetime_test_file.out 2>&1
WARNING: Did not reach stop datetime '2024-12-07 10:20:30.123456' before end of input
include/assert_grep.inc [Ensure a GTID exists for each transaction]
#
# End of binlog_mysqlbinlog_warn_stop_datetime.test
|