File: gr_primary_mode_group_operations_28.result

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (72 lines) | stat: -rw-r--r-- 3,108 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
include/group_replication.inc [rpl_server_count=3]
Warnings:
Note	####	Sending passwords in plain text without SSL/TLS is extremely insecure.
Note	####	Storing MySQL user name or password information in the connection metadata repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START REPLICA; see the 'START REPLICA Syntax' in the MySQL Manual for more information.
[connection server1]

# 1. Start single primary group and create table
include/start_and_bootstrap_group_replication.inc
CREATE TABLE test.t1 (a INT PRIMARY KEY);
include/rpl_sync.inc
[connection server2]
include/start_group_replication.inc
[connection server3]
set session sql_log_bin=0;
call mtr.add_suppression("The function 'group_replication_set_as_primary' failed. The appointed primary for election left the group, this operation will be aborted*");
set session sql_log_bin=1;
include/start_group_replication.inc

# 2. Disable read only to action be stuck on setting read only
SET GLOBAL read_only= 0;

# 3. Go to a member that will be a secondary and lock a table
[connection server_3]
LOCK TABLE t1 READ;

# 4. Insert a row on the old primary
[connection server1]
INSERT INTO t1 VALUES (1);
[connection server2]

# 5. Execute action to change primary to server2
[connection server3]
SELECT group_replication_set_as_primary("MEMBER2_UUID");

# 6. Check that the other members are waiting for members to be in
#    super_read_only and executing primary election
[connection server_1]
include/assert.inc [stage/group_rpl/Primary Election: waiting for members to enable super_read_only]

# 7. Kill the new primary server2
[connection server2]
# Kill and restart:--group-replication-start-on-boot=0 --group-replication-group-name=GROUP_REPLICATION_GROUP_NAME --group_replication_local_address=GROUP_REPLICATION_LOCAL_ADDRESS --group_replication_group_seeds=GROUP_REPLICATION_GROUP_SEEDS  --group_replication_single_primary_mode=TRUE --group_replication_enforce_update_everywhere_checks=FALSE
include/rpl_reconnect.inc

# 8. Wait group detect exit of server2
[connection server_1]
include/rpl_gr_wait_for_number_of_members.inc

# 9. Unlock table on server2
[connection server_3]
UNLOCK TABLES;

# 10. Reap insertion of data on server1
[connection server1]

# 11. Check that the action returns failure
[connection server3]
ERROR HY000: The function 'group_replication_set_as_primary' failed. The appointed primary for election left the group, this operation will be aborted and if present the old primary member will be re-elected. Check the group member list to see who is the primary.

# 12. Confirm server1 is the new primary because it was the old primary
[connection server1]
include/gr_wait_primary_member_uuid.inc

# 13. Clean up
DROP TABLE t1;
[connection server2]
DROP TABLE t1;
[connection server1]
set session sql_log_bin=0;
call mtr.add_suppression("Error while executing a group configuration operation: The appointed primary for election left the group, this operation will be aborted.*");
set session sql_log_bin=1;
include/group_replication_end.inc