File: galera_migrate.test

package info (click to toggle)
mariadb-10.1 10.1.45-0%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 476,916 kB
  • sloc: cpp: 1,124,656; ansic: 871,843; perl: 52,917; sh: 40,078; pascal: 35,370; javascript: 15,555; yacc: 14,728; ruby: 8,684; xml: 5,377; sql: 3,490; makefile: 2,934; python: 1,970; java: 1,691; asm: 837; lex: 757; php: 22; sed: 16
file content (204 lines) | stat: -rw-r--r-- 6,670 bytes parent folder | download
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#
# Execute a migration from MariaDB replication to Galera replication.
# The test starts with 4 stand-alone servers defined by galera_migrate.cnf and then
# performs the following steps:
#
# 1. Begin with a single MySQL server
# 2. Establish traditional MySQL master-slave replication
# 3. Attach a new sever to serve as a MySQL replication slave
# 4. Enable Galera on the new slave and create a single-node Galera cluster
# 5. Attach a second Galera node
# 6. Turn off the traditional replication parts of the system
# 7. Continue replicating within Galera only
#

--source include/big_test.inc
--source include/have_innodb.inc
--source include/have_log_bin.inc

#
# Step #1 Begin with a single server
#

--connect node_1, 127.0.0.1, root, , test, $NODE_MYPORT_1

CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);

#
# Step #2. Establish traditional MySQL replication
#

--connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2
--disable_query_log
--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT = $NODE_MYPORT_1;
--enable_query_log
START SLAVE;

--connection node_1
INSERT INTO t1 VALUES (2);

--connection node_2
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
--source include/wait_condition.inc

--let $wait_condition = SELECT COUNT(*) = 2 FROM t1;
--source include/wait_condition.inc

#
# Step #3. Attach a second slave, later to be converted to Galera
#

--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3
--disable_query_log
--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT = $NODE_MYPORT_1;
--enable_query_log
START SLAVE USER='root';

--connection node_1
INSERT INTO t1 VALUES (3);

--connection node_3
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
--source include/wait_condition.inc

--let $wait_condition = SELECT COUNT(*) = 3 FROM t1;
--source include/wait_condition.inc

#
# Step #4. Convert this MySQL slave into a Galera node
#

--connection node_1
INSERT INTO t1 VALUES (4);

--connection node_3
--disable_query_log
--eval SET GLOBAL wsrep_provider='$WSREP_PROVIDER'
--eval SET GLOBAL wsrep_provider_options='base_port=$NODE_GALERAPORT_3'
--enable_query_log
SET GLOBAL wsrep_cluster_address='gcomm://';

--connection node_1
INSERT INTO t1 VALUES (5);

--connection node_3
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 5 FROM t1;
--source include/wait_condition.inc

--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready';
--source include/wait_condition.inc

SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
SELECT VARIABLE_VALUE = 'Primary'  FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';

--connection node_1
INSERT INTO t1 VALUES (6);

#
# Step #5. Attach a second Galera node using mysqldump SST
#

--connection node_3
# We need a user with a password for mysqldump SST
GRANT ALL PRIVILEGES ON *.* TO 'sst';
SET GLOBAL wsrep_sst_auth = 'sst:';

--connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4
GRANT ALL PRIVILEGES ON *.* TO 'sst';

--disable_query_log
--eval SET GLOBAL wsrep_sst_method = 'mysqldump';
--eval SET GLOBAL wsrep_provider='$WSREP_PROVIDER'
--eval SET GLOBAL wsrep_provider_options='base_port=$NODE_GALERAPORT_4'
--eval SET GLOBAL wsrep_sst_receive_address = '127.0.0.2:$NODE_MYPORT_4';
--eval SET GLOBAL wsrep_cluster_address='gcomm://127.0.0.1:$NODE_GALERAPORT_3'
--enable_query_log

--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
--source include/wait_condition.inc

--let $wait_condition = SELECT COUNT(*) = 6 FROM t1;
--source include/wait_condition.inc

--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready';
--source include/wait_condition.inc

SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
SELECT VARIABLE_VALUE = 'Primary'  FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';


#
# Step #6. Turn off traditional replication
#

--connection node_2
STOP SLAVE;
RESET SLAVE ALL;

--connection node_3
STOP SLAVE;
RESET SLAVE ALL;

#
# Step #7. Continue replicating within Galera only
#

# We need fresh connections due to galera#191

--connect node_3a, 127.0.0.1, root, , test, $NODE_MYPORT_3
INSERT INTO t1 VALUES (7);

--connect node_4a, 127.0.0.1, root, , test, $NODE_MYPORT_4
INSERT INTO t1 VALUES (8);

--connection node_4a
SELECT COUNT(*) = 8 FROM t1;

--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready';
--source include/wait_condition.inc

SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
SELECT VARIABLE_VALUE = 'Primary'  FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';

--connection node_3a
SELECT COUNT(*) = 8 FROM t1;

--let $wait_condition = SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_ready';
--source include/wait_condition.inc

SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
SELECT VARIABLE_VALUE = 'Primary'  FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status';
SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';

#
# Teardown
# 

--connection node_1
DROP TABLE t1;

--connection node_2
DROP TABLE t1;

--connection node_3
SET GLOBAL wsrep_provider = 'none';
SET GLOBAL wsrep_sst_auth = '';
SET GLOBAL wsrep_provider_options = '';
DROP TABLE t1;
DROP USER sst;

--connection node_4
SET GLOBAL wsrep_provider = 'none';
SET GLOBAL wsrep_sst_method = 'rsync';
SET GLOBAL wsrep_provider_options = '';
SET GLOBAL wsrep_sst_receive_address = 'AUTO';
DROP TABLE t1;
DROP USER sst;

CALL mtr.add_suppression("InnoDB: Error: Table \"mysql\"\\.\"innodb_index_stats\" not found");