mirror of
https://github.com/MariaDB/server.git
synced 2025-02-23 05:43:08 +01:00
60 lines
2.7 KiB
Text
60 lines
2.7 KiB
Text
# ==== Purpose ====
|
|
#
|
|
# Test verifies truncation of multiple binary logs with multiple transactional
|
|
# storage engines
|
|
#
|
|
# ==== References ====
|
|
#
|
|
# MDEV-21117: recovery for --rpl-semi-sync-slave-enabled server
|
|
|
|
--source include/have_rocksdb.inc
|
|
--source include/have_innodb.inc
|
|
--source include/have_debug.inc
|
|
--source include/have_debug_sync.inc
|
|
--source include/have_binlog_format_row.inc
|
|
--source include/not_valgrind.inc
|
|
|
|
--let $old_max_binlog_size= `select @@global.max_binlog_size`
|
|
call mtr.add_suppression("Can.t init tc log");
|
|
call mtr.add_suppression("Aborting");
|
|
--let $MYSQLD_DATADIR= `SELECT @@datadir`
|
|
|
|
SET @@global.sync_binlog= 1;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=Innodb;
|
|
CREATE TABLE t2 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=rocksdb;
|
|
|
|
--let $case = "A"
|
|
--let $description = "neither engine committed => rollback & binlog truncate"
|
|
# Hold off engine commits after write to binlog and its rotation.
|
|
# The transaction is killed along with the server after that.
|
|
--let $shutdown_timeout=0
|
|
--let $debug_sync_action = "commit_after_release_LOCK_log SIGNAL con1_ready WAIT_FOR signal_no_signal"
|
|
--let $restart_parameters = --init-rpl-role=SLAVE --sync-binlog=1
|
|
--let $test_outcome= 1 row should be present in both tables; binlog is truncated; number of binlogs at reconnect - 3
|
|
--source binlog_truncate_multi_engine.inc
|
|
--echo Proof of the truncated binlog file is readable (two transactions must be seen):
|
|
--exec $MYSQL_BINLOG --short-form --skip-annotate-row-events $MYSQLD_DATADIR/master-bin.000002
|
|
|
|
--let $case = "B"
|
|
--let $description = "one engine has committed its transaction branch"
|
|
# Hold off after one engine has committed.
|
|
--let $shutdown_timeout=0
|
|
--let $debug_sync_action = ""
|
|
# Both debug_sync and debug-dbug are required to make sure Engines remember the commit state
|
|
# debug_sync alone will not help.
|
|
--let $restart_parameters = --init-rpl-role=SLAVE --sync-binlog=1
|
|
--let $test_outcome= 2 rows should be present in both tables; no binlog truncation; one extra binlog file compare with A; number of binlogs at reconnect - 4
|
|
--source binlog_truncate_multi_engine.inc
|
|
|
|
--let $case = "C"
|
|
--let $description= "both engines have committed its transaction branch"
|
|
--let $debug_sync_action = "commit_after_run_commit_ordered SIGNAL con1_ready"
|
|
# Hold off after both engines have committed. The server is shut down.
|
|
--let $shutdown_timeout=
|
|
--let $restart_parameters = --init-rpl-role=SLAVE --sync-binlog=1
|
|
--let $test_outcome= 2 rows should be present in both tables; no binlog truncation; the same # of binlog files as in B; number of binlogs at reconnect - 4
|
|
--source binlog_truncate_multi_engine.inc
|
|
|
|
DROP TABLE t1, t2;
|
|
SET @@global.sync_binlog= default;
|
|
--echo # End of the tests
|