#
# Helper fileto run a test casefor rpl_fragment_row_event.test with various
# parameters to define what to verify for the test.
#
# Parameters:
# $insert_size (uint) : Size of the row to insert in the test
# case
# $test_mysqlbinlog_replay (bool) : Whether ornotto replay the binary log
# via mysqlbinlog and verify the server
# executes the BINLOG base64 statements
# in the same manner the SQL thread does.
# $test_show_binlog_events (bool) : Whether ornotto test SHOW BINLOG EVENTS
# $test_update (bool) : Whether ornotto test UPDATE commands
# can be fragmented
# $test_delete (bool) : Whether ornotto test DELETE commands
# can be fragmented
# $test_multi_table_trx (bool) : Whether ornotto update multiple tables
# in a single transaction
# $server_1_frag_threshold (uint) : binlog_row_event_fragment_threshold on
# server_1
# $server_2_frag_threshold (uint) : binlog_row_event_fragment_threshold on
# server_2
# $server_3_frag_threshold (uint) : binlog_row_event_fragment_threshold on
# server_3
#
if ($server_1_frag_threshold)
{
--connection server_1
--let $inc_server_1_old_binlog_frag_threshold= `SELECT @@global.binlog_row_event_fragment_threshold`
--let $inc_server_1_old_net_buf= `SELECT @@global.net_buffer_length`
--eval set @@global.binlog_row_event_fragment_threshold= $server_1_frag_threshold
--eval set @@global.net_buffer_length= $server_1_frag_threshold
--disconnect server_1
--source include/wait_until_disconnected.inc
--connect (server_1,127.0.0.1,root,,test,$SERVER_MYPORT_1,)
}
--connection server_2
--source include/stop_slave.inc if ($server_2_frag_threshold)
{
--let $inc_server_2_old_binlog_frag_threshold= `SELECT @@global.binlog_row_event_fragment_threshold`
--let $inc_server_2_old_net_buf= `SELECT @@global.net_buffer_length`
--eval set @@global.binlog_row_event_fragment_threshold= $server_2_frag_threshold
--eval set @@global.net_buffer_length= $server_2_frag_threshold
--disconnect server_2
--source include/wait_until_disconnected.inc
--connect (server_2,127.0.0.1,root,,test,$SERVER_MYPORT_2,)
}
--connection server_3
--source include/stop_slave.inc if ($server_3_frag_threshold)
{
--let $inc_server_3_old_binlog_frag_threshold= `SELECT @@global.binlog_row_event_fragment_threshold`
--let $inc_server_3_old_net_buf= `SELECT @@global.net_buffer_length`
--eval set @@global.binlog_row_event_fragment_threshold= $server_3_frag_threshold
--eval set @@global.net_buffer_length= $server_3_frag_threshold
--disconnect server_3
--source include/wait_until_disconnected.inc
--connect (server_3,127.0.0.1,root,,test,$SERVER_MYPORT_3,)
}
--echo #
--echo # Initialize test data if ($test_show_binlog_events)
{
--let $n_servers= 3
--let $i= 1 while (`SELECT $i <= $n_servers`)
{
--connection server_$i
--source include/wait_for_binlog_checkpoint.inc
--inc $i
}
}
--connection server_1
create table t1 (a int, b longblob) engine=innodb; if ($test_multi_table_trx)
{
create table t2 (a int, b longblob) engine=innodb;
}
--echo #
--echo # Test Write_rows_log_event fragmentation
--disable_query_log if ($insert_size)
{
# subtract 9 from the insert for the first column
--let $insert_text_len= `SELECT $insert_size - 9`
--eval insert into t1 values (1, repeat("a", $insert_text_len))
} if (!$insert_size)
{
insert into t1 select seq,repeat(seq,512) from seq_1_to_10; BEGIN;
# Do the insert into t2 first; otherwise, this insert would also concat
# the second statement into t1 if ($test_multi_table_trx)
{
insert into t2 select 1as a, group_concat(b) as b from t1;
}
insert into t1 select 11as a, group_concat(b) as b from t1;
COMMIT;
}
--enable_query_log
--source include/save_master_gtid.inc
if ($test_show_binlog_events)
{
--echo # Ensure SHOW BINLOG EVENTS shows Partial_rows_log_event data
--let $binlog_file= $binlog_delete_filename
--source include/show_binlog_events.inc
}
--inc $i
}
}
if ($test_mysqlbinlog_replay)
{
--echo # Reset data state on server_2 for mysqlbinlog replay
--connection server_2 set statement sql_log_bin=0for drop table t1; if ($test_multi_table_trx)
{ set statement sql_log_bin=0for drop table t2;
}
--echo # Show how many Partial_rows_log_events use mysqlbinlog @0, @1 fragmentation (ev_len > 1024)
--let SEARCH_FILE= $binlog_analysis_file
--let SEARCH_PATTERN= BINLOG @binlog_fragment_0, @binlog_fragment_1
--let SEARCH_OUTPUT= count
--source include/search_pattern_in_file.inc
--echo # Show how many Partial_rows_log_events use regular BINLOG base64 output (ev_len <= 1024)
--echo # Note: 1 always comes from the Format_description_log_event
--let SEARCH_PATTERN= BINLOG '
--let SEARCH_OUTPUT= count
--source include/search_pattern_in_file.inc
--echo #
--echo # Cleanup test case if ($server_1_frag_threshold)
{
--connection server_1
--eval set @@global.binlog_row_event_fragment_threshold= $inc_server_1_old_binlog_frag_threshold
--eval set @@global.net_buffer_length= $inc_server_1_old_net_buf
}
--connection server_2 if ($server_2_frag_threshold)
{
--eval set @@global.binlog_row_event_fragment_threshold= $inc_server_2_old_binlog_frag_threshold
--eval set @@global.net_buffer_length= $inc_server_2_old_net_buf
}
--source include/start_slave.inc
--connection server_3 if ($server_3_frag_threshold)
{
--eval set @@global.binlog_row_event_fragment_threshold= $inc_server_3_old_binlog_frag_threshold
--eval set @@global.net_buffer_length= $inc_server_3_old_net_buf
}
--source include/start_slave.inc
--connection server_1
drop table t1; if ($test_multi_table_trx)
{
drop table t2;
}
flush logs;
--source include/save_master_gtid.inc
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.