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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
#
# Test of sql_slave_skip_counter and rpl_max_size
#
# Create a schema and a table i
# on the 1st master
--source include/not_embedded.inc
--let $rpl_server_count= 0
--connect (master1,127.0.0.1,root,,,$SERVER_MYPORT_1)
--disable_warnings
drop database if exists db;
--enable_warnings
create database db;
create table db.this_will_not_be_replicated (i int) engine=MyISAM;
create table db.t1 (i int) engine=MyISAM;
create table db.t2 (i int) engine=MyISAM;
--save_master_pos
# Create the same schema and another table
# on the 2nd master
--connect (master2,127.0.0.1,root,,,$SERVER_MYPORT_2)
--disable_warnings
drop database if exists db;
--enable_warnings
create database db;
create table db.t3 (i int) engine=MyISAM;
--connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3)
# Start replication from the first master
--replace_result $SERVER_MYPORT_1 MYPORT_1
eval change master 'master1' to
master_port=$SERVER_MYPORT_1,
master_host='127.0.0.1',
master_user='root', master_ssl_verify_server_cert=0,
master_use_gtid=no;
start slave 'master1';
set default_master_connection = 'master1';
--source include/wait_for_slave_to_start.inc
--sync_with_master 0,'master1'
# Start replication from the second master
set default_master_connection = 'master2';
--replace_result $SERVER_MYPORT_2 MYPORT_2
eval change master 'master2' to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
master_user='root', master_ssl_verify_server_cert=0,
master_use_gtid=no;
# the schema creation will be replicated from the 1st master,
# so we want to skip it in the second replication connection
# The events we want to skip are:
#
# The start format statement event
# drop database if exists db
# create database db
# Create table db.t1
# - > 4 events in total
--let $skip_counter_saved = `select @@global.sql_slave_skip_counter`
--let $max_relay_log_size_saved= `select @@global.max_relay_log_size`
--let $max_binlog_size_saved= `select @@global.max_binlog_size`
set global sql_slave_skip_counter = 2;
select @@global.sql_slave_skip_counter;
select @@session.sql_slave_skip_counter;
set session sql_slave_skip_counter = 3;
select @@global.sql_slave_skip_counter;
select @@session.sql_slave_skip_counter;
set global sql_slave_skip_counter= default;
select @@global.sql_slave_skip_counter;
select @@session.sql_slave_skip_counter;
set global sql_slave_skip_counter= 4;
set default_master_connection = 'master1';
select @@session.sql_slave_skip_counter;
set default_master_connection = 'qqq';
select @@session.sql_slave_skip_counter;
set default_master_connection = 'master2';
select @@session.sql_slave_skip_counter;
# Test of setting max_relay_log_size
select @@global.max_relay_log_size;
set global max_relay_log_size = 1*1024*1024;
select @@global.max_relay_log_size;
select @@session.max_relay_log_size;
set session max_relay_log_size = 3*1024*1024;
select @@global.max_relay_log_size;
select @@session.max_relay_log_size;
set global max_relay_log_size= default;
select @@global.max_relay_log_size;
select @@session.max_relay_log_size;
set global max_relay_log_size= 3*1024*1024;
set default_master_connection = 'master1';
select @@session.max_relay_log_size;
set default_master_connection = 'qqq';
select @@session.max_relay_log_size;
set default_master_connection = 'master2';
select @@session.max_relay_log_size;
set global max_binlog_size= 4*1024*1024;
select @@global.max_relay_log_size;
start slave 'master2';
--source include/wait_for_slave_to_start.inc
set default_master_connection = '';
--connection master2
--save_master_pos
--connection slave
--sync_with_master 0,'master2'
# If the skip_counter worked as expected, we should
# get here (replication shouldn't have broken)
# and should see both tables here
# (drop database which came from master2 shouldn't have been executed
# so t1 should still exist)
show tables in db;
# Cleanup
drop database db;
--eval set global sql_slave_skip_counter = $skip_counter_saved
--eval set global max_relay_log_size = $max_relay_log_size_saved
--eval set global max_binlog_size = $max_binlog_size_saved
--source include/reset_master_slave.inc
--disconnect slave
--connection master1
drop database db;
--source include/reset_master_slave.inc
--disconnect master1
--connection master2
drop database db;
--source include/reset_master_slave.inc
--disconnect master2
|