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
|
include/group_replication.inc
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]
include/start_and_bootstrap_group_replication.inc
# 1. Execute a switch to multi primary mode, it must be a no op since the
# group is already on multi primary mode.
SELECT group_replication_switch_to_multi_primary_mode();
group_replication_switch_to_multi_primary_mode()
The group is already on multi-primary mode.
[connection server2]
# 2. Executing a mode change or primary election on an OFFLINE member
# must fail.
SELECT group_replication_set_as_primary("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_set_as_primary'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_multi_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_multi_primary_mode'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_single_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_single_primary_mode("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Member must be ONLINE and in the majority partition.
# 3. Executing a mode change or primary election on a RECOVERING member
# must fail.
[connection server2]
SET @@GLOBAL.DEBUG='+d,recovery_thread_wait_before_finish';
include/start_group_replication.inc
SELECT group_replication_set_as_primary("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_set_as_primary'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_multi_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_multi_primary_mode'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_single_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_single_primary_mode("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Member must be ONLINE and in the majority partition.
# 4. Allow recovery to complete.
[connection server2]
SET DEBUG_SYNC= "now WAIT_FOR signal.recovery_thread_wait_before_finish_reached";
SET @@GLOBAL.DEBUG='-d,recovery_thread_wait_before_finish';
SET DEBUG_SYNC= "now SIGNAL signal.recovery_end";
include/gr_wait_for_member_state.inc
SET DEBUG_SYNC= 'RESET';
# 5. Executing a mode change or primary election on an ERRORed member
# must fail.
CREATE TABLE test.t1 (a INT PRIMARY KEY);
set session sql_log_bin=0;
INSERT INTO test.t1 VALUES (1);
set session sql_log_bin=1;
include/rpl_sync.inc
[connection server1]
INSERT INTO test.t1 VALUES (1);
[connection server2]
include/gr_wait_for_member_state.inc
SELECT group_replication_set_as_primary("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_set_as_primary'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_multi_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_multi_primary_mode'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_single_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_single_primary_mode("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Member must be ONLINE and in the majority partition.
# Rectify the cause of error and bring back member ONLINE.
include/stop_group_replication.inc
set session sql_log_bin=0;
TRUNCATE TABLE t1;
set session sql_log_bin=1;
include/start_group_replication.inc
# 6. Lock a table and try to execute a mode change. It must fail.
LOCK TABLE t1 WRITE;
SELECT group_replication_set_as_primary("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_set_as_primary'; Can't execute the given operation because you have active locked tables.
SELECT group_replication_switch_to_multi_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_multi_primary_mode'; Can't execute the given operation because you have active locked tables.
SELECT group_replication_switch_to_single_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Can't execute the given operation because you have active locked tables.
SELECT group_replication_switch_to_single_primary_mode("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Can't execute the given operation because you have active locked tables.
UNLOCK TABLES;
DROP TABLE t1;
include/rpl_sync.inc
# 7. Kill server1 to create a network partition on group.
[connection server1]
[connection server2]
include/gr_wait_for_member_state.inc
# 8. Executing a mode change or primary election on a network partition
# must fail.
SELECT group_replication_set_as_primary("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_set_as_primary'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_multi_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_multi_primary_mode'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_single_primary_mode();
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Member must be ONLINE and in the majority partition.
SELECT group_replication_switch_to_single_primary_mode("MEMBER1_UUID");
ERROR HY000: Can't initialize function 'group_replication_switch_to_single_primary_mode'; Member must be ONLINE and in the majority partition.
# 9. Cleanup.
[connection server_1]
include/rpl_reconnect.inc
[connection server2]
set session sql_log_bin=0;
call mtr.add_suppression("Timeout while waiting for the group communication engine to exit!");
call mtr.add_suppression("The member has failed to gracefully leave the group.");
call mtr.add_suppression("read failed");
call mtr.add_suppression("Could not execute Write_rows event on table test.t1");
call mtr.add_suppression("The applier thread execution was aborted. Unable to process more transactions, this member will now leave the group.");
call mtr.add_suppression("Fatal error during execution on the Applier process of Group Replication. The server will now leave the group.");
call mtr.add_suppression("The server was automatically set into read only mode after an error was detected.");
call mtr.add_suppression("Skipping leave operation: concurrent attempt to leave the group is on-going.");
call mtr.add_suppression("The replica coordinator and worker threads are stopped");
set session sql_log_bin=1;
include/group_replication_end.inc
|