mariadb/mysql-test/suite/rpl/r/rpl_mdev-11092.result
2022-07-27 17:17:24 +03:00

226 lines
10 KiB
Text

include/master-slave.inc
[connection master]
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
call mtr.add_suppression("Slave SQL: The incident LOST_EVENTS occured on the master. .*");
call mtr.add_suppression("Write to binary log failed: Multi-row statements required more than .max_binlog_stmt_cache_size.* ");
call mtr.add_suppression("Write to binary log failed: Multi-statement transaction required more than .max_binlog_cache_size.* ");
call mtr.add_suppression("Incident event write to the binary log file failed");
call mtr.add_suppression("handlerton rollback failed");
"*********** Annotate Event write failure **************"
SET GLOBAL max_binlog_cache_size = 4096;
SET GLOBAL binlog_cache_size = 4096;
SET GLOBAL max_binlog_stmt_cache_size = 4096;
SET GLOBAL binlog_stmt_cache_size = 4096;
disconnect master;
connect master,127.0.0.1,root,,test,$MASTER_MYPORT,;
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MYISAM;
connection master;
"#######################################################################"
"# Test Case1: Annotate event write failure for MyISAM #"
"#######################################################################"
ERROR HY000: Multi-row statements required more than 'max_binlog_stmt_cache_size' bytes of storage.
# Validating update was not binlogged..
# ..success
# Validating that the inserted data was saved on the master..
# ..success
connection slave;
include/wait_for_slave_sql_error_and_skip.inc [errno=1590]
# Validating that the insert was not replicated to the slave..
# ..success
"#######################################################################"
"# Test Case2: Annotate event write failure for INNODB #"
"#######################################################################"
connection master;
CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=INNODB;
ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
# Validating binlog GTID position progressed from first insert..
# ..success
# Validating that only the first insert into t2 saved..
# ..success
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
# Validating the first insert into t2 replicated to slave..
include/diff_tables.inc [master:test.t2,slave:test.t2]
# ..success
"#######################################################################"
"# Test Case3: Annotate event write failure for mixed engine UPDATE #"
"#######################################################################"
connection master;
ERROR HY000: Multi-row statements required more than 'max_binlog_stmt_cache_size' bytes of storage.
# Validating update was not binlogged..
# ..success
# Validating non-transactional part of update saved..
# ..success
# Validating transactional part of update was rolled back..
# ..success
include/save_master_gtid.inc
connection slave;
include/wait_for_slave_sql_error_and_skip.inc [errno=1590]
# Validating the rolled-back multi-engine update did not replicate to slave at all..
# ..success
connection master;
"****** Clean up *******"
SET GLOBAL max_binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_cache_size= ORIGINAL_VALUE;
SET GLOBAL max_binlog_stmt_cache_size= ORIGINAL_VALUE;
SET GLOBAL binlog_stmt_cache_size= ORIGINAL_VALUE;
DROP TABLE t1,t2;
"*********** TABLE MAP Event write failure **************"
CREATE TABLE tm (f INT) ENGINE=MYISAM;
CREATE TABLE ti (f INT) ENGINE=INNODB;
INSERT INTO tm VALUES (10);
INSERT INTO ti VALUES (20);
connection slave;
"#######################################################################"
"# Test Case4: Table_map event write failure for trans engine UPDATE #"
"#######################################################################"
# Transaction should be rolled back without writing incident event
connection master;
SET debug_dbug="+d,table_map_write_error";
UPDATE ti, tm set ti.f=30;
ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
# Validating update was not binlogged..
# ..success
# Validating update was rolled back from storage engines..
# ..success
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
"#######################################################################"
"# Test Case5: Table_map event write failure for mixed engine UPDATE #"
"#######################################################################"
connection master;
# In case of mixed engines if non trans table is updated write INCIDENT event
UPDATE ti,tm SET tm.f=88, ti.f=120;
ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
# Validating update was not binlogged..
# ..success
# Validating that only the non-transactional update saved on master..
# ..success
connection slave;
include/wait_for_slave_sql_error_and_skip.inc [errno=1590]
# Validating that neither of the updates replicated to slave..
# ..success
"#######################################################################"
"# Test Case6: Committing a transaction consisting of two updates:
"# S1) Update transactional table
"# S2) Update transactional table
"# with a table_map event write failure on the second event should
"# roll-back only the second update without incident
"#######################################################################"
connection master;
SET debug_dbug="";
BEGIN;
UPDATE ti, tm set ti.f=40;
SET debug_dbug="+d,table_map_write_error";
UPDATE ti, tm set ti.f=50;
ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
COMMIT;
# Validating binlog GTID position progressed from first update..
# ..success
# Validating the first update saved..
# ..and that the second update did not save..
# ..success
# Validating that only the first update replicated to slave without incident
connection master;
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
include/diff_tables.inc [master:test.ti,slave:test.ti]
"#######################################################################"
"# Test Case7: Rolling back a transaction consisting of two updates:
"# S1) Update transactional table
"# S2) Update transactional table
"# with a table_map event write failure on the second event should
"# roll-back both updates without incident
"#######################################################################"
connection master;
SET debug_dbug="";
BEGIN;
UPDATE ti, tm set ti.f=60;
SET debug_dbug="+d,table_map_write_error";
UPDATE ti, tm set ti.f=70;
ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
ROLLBACK;
# Validating update was not binlogged..
# ..success
# Validating that neither update saved on master..
# ..success
# Validating the transaction did not replicate to the slave
connection master;
include/save_master_gtid.inc
connection slave;
include/sync_with_master_gtid.inc
include/diff_tables.inc [master:test.ti,slave:test.ti]
"#######################################################################"
"# Test Case8: Committing a transaction consisting of two updates:
"# S1) Update transactional table
"# S2) Update mixed trans/non-trans tables
"# with a table_map event write failure on the second event should
"# roll-back only the second update with incident
"#######################################################################"
connection master;
BEGIN;
SET debug_dbug="";
UPDATE ti, tm set ti.f=80;
SET debug_dbug="+d,table_map_write_error";
UPDATE ti, tm set ti.f=90,tm.f=99;
ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
COMMIT;
# Validating binlog GTID position progressed from first update..
# ..success
# Validating the first update saved..
# ..and the transactional part of the second update did not save..
# ..whereas the non-trans part of the second update did save..
# ..success
# Validating that the incident propagated to the slave
connection slave;
include/wait_for_slave_sql_error_and_skip.inc [errno=1590]
# Validating that the first update replicated to the slave..
# ..and neither part of the second update replicated..
# ..success
"#######################################################################"
"# Test Case9: Rolling back a transaction consisting of two updates:
"# S1) Update transactional table
"# S2) Update mixed trans/non-trans tables
"# with a table_map event write failure on the second event should
"# roll-back both transactional updates, preserve the non-transactional
"# update on the master (only), and write an incident event
"#######################################################################"
connection master;
SET debug_dbug="";
BEGIN;
UPDATE ti, tm set ti.f=100;
SET debug_dbug="+d,table_map_write_error";
UPDATE ti, tm set ti.f=110,tm.f=111;
ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
ROLLBACK;
# Validating update was not binlogged..
# ..success
# Validating trans updates rollback, but the non-trans update stays..
# ..success
# Validating that the incident propagated to the slave
connection slave;
include/wait_for_slave_sql_error_and_skip.inc [errno=1590]
# Validating that none of the updates replicated to the slave
include/diff_tables.inc [master:test.ti,slave:test.ti]
# ..success
"#######################################################################"
"# Test Case10: If an incident event fails to write, a specific error
"# should be logged
"#
"# Note: This test case is the same as test case 5, with the caveat of
"# the incident event failing to write.
"#######################################################################"
connection master;
SET debug_dbug="d,table_map_write_error,incident_event_write_error";
UPDATE ti, tm set ti.f=120, tm.f=122;
ERROR HY000: Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mariadbd variable and try again
# Validate error message indicating incident event failed to write
FOUND 1 /Incident event write to the binary log file failed/ in mysqld.1.err
connection master;
"******** Clean Up **********"
SET GLOBAL debug_dbug = '';
DROP TABLE tm,ti;
include/rpl_end.inc