mirror of
https://github.com/MariaDB/server.git
synced 2025-07-20 02:08:15 +02:00
87 lines
2.7 KiB
Text
87 lines
2.7 KiB
Text
# ==== Purpose ====
|
|
#
|
|
# Test verifies truncation of multiple binary logs.
|
|
#
|
|
# ==== References ====
|
|
# MDEV-21117: recovery for --rpl-semi-sync-slave-enabled server
|
|
|
|
--source include/have_innodb.inc
|
|
--source include/have_debug_sync.inc
|
|
--source include/have_binlog_format_row.inc
|
|
|
|
call mtr.add_suppression("Can.t init tc log");
|
|
call mtr.add_suppression("Aborting");
|
|
|
|
SET @@global.max_binlog_size= 4096;
|
|
SET @@global.sync_binlog= 1;
|
|
RESET MASTER;
|
|
FLUSH LOGS;
|
|
CREATE TABLE ti (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=Innodb;
|
|
CREATE TABLE tm (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=MyISAM;
|
|
|
|
connect(master1,localhost,root,,);
|
|
--echo "List of binary logs before rotation"
|
|
--source include/show_binary_logs.inc
|
|
|
|
# Some load to either non- and transactional engines
|
|
# that should not affect the following recovery:
|
|
INSERT INTO ti VALUES(1,"I am gonna survive");
|
|
INSERT INTO tm VALUES(1,"me too!");
|
|
|
|
# hold on near engine commit
|
|
SET DEBUG_SYNC= "commit_after_release_LOCK_after_binlog_sync SIGNAL master1_ready WAIT_FOR master1_go_never_arrives";
|
|
--send INSERT INTO ti VALUES (2, REPEAT("x", 4100))
|
|
|
|
connect(master2,localhost,root,,);
|
|
# The 2nd trx for recovery, it does not rotate binlog
|
|
SET DEBUG_SYNC= "now WAIT_FOR master1_ready";
|
|
SET DEBUG_SYNC= "commit_before_get_LOCK_commit_ordered SIGNAL master2_ready WAIT_FOR master2_go_never_arrives";
|
|
--send INSERT INTO ti VALUES (3, "not gonna survive")
|
|
|
|
--connection default
|
|
SET DEBUG_SYNC= "now WAIT_FOR master2_ready";
|
|
|
|
connect(master3,localhost,root,,);
|
|
# The 3nd trx for recovery, it won't get into binlog nor therefore recover
|
|
SET DEBUG_SYNC= "ha_commit_trans_before_log_and_order SIGNAL master3_ready WAIT_FOR master3_go_never_arrives";
|
|
--send INSERT INTO ti VALUES (4, "not gonna be log therefore survive"),(5, "ditto")
|
|
|
|
--connection default
|
|
SET DEBUG_SYNC= "now WAIT_FOR master3_ready";
|
|
|
|
--echo "List of binary logs before crash"
|
|
--source include/show_binary_logs.inc
|
|
--echo # The gtid binlog state prior the crash will be truncated at the end of the test
|
|
SELECT @@global.gtid_binlog_state;
|
|
|
|
--connection default
|
|
--source include/kill_mysqld.inc
|
|
--disconnect master1
|
|
--disconnect master2
|
|
--disconnect master3
|
|
|
|
#
|
|
# Server restart
|
|
#
|
|
--let $restart_parameters= --init-rpl-role=SLAVE --sync-binlog=1 --log-warnings=3
|
|
--source include/start_mysqld.inc
|
|
|
|
# Check error log for a successful truncate message.
|
|
let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
|
|
|
--let SEARCH_FILE=$log_error_
|
|
--let SEARCH_PATTERN=truncated binlog file:.*master.*000002
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
|
|
--echo "One record should be present in table"
|
|
SELECT * FROM ti;
|
|
|
|
--echo # The truncated gtid binlog state
|
|
SELECT @@global.gtid_binlog_state;
|
|
SELECT @@global.gtid_binlog_pos;
|
|
|
|
--echo # Cleanup
|
|
DROP TABLE ti;
|
|
SET @@global.sync_binlog= default;
|
|
--echo # End of the tests
|