summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/multi_source/skip_counter.test
blob: 04aaf6576d4824a067a383ef5ef9075e9d7d0c3b (plain)
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