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
|
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]
[connection server2]
SET SESSION sql_log_bin= 0;
call mtr.add_suppression(".*This member has more executed transactions *.*");
call mtr.add_suppression(".*The member contains transactions not present *.*");
call mtr.add_suppression("Replica SQL for channel 'group_replication_applier': Relay log read failure: Could not parse relay log event entry.*");
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.");
SET SESSION sql_log_bin= 1;
#
# Create a table for testing on server 1
#
[connection server1]
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
include/rpl_sync.inc
[connection server2]
include/assert.inc [Server 2 has 4 transaction belonging to the group]
[connection server3]
include/assert.inc [Server 3 has 4 transaction belonging to the group]
#
# Step 1: Block the applier on server 2.
#
[connection server2]
SET @@GLOBAL.DEBUG='+d,block_applier_updates';
#
# Step 2: Insert some transaction and remove server 3
#
[connection server1]
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
include/sync_slave_sql_with_master.inc
include/assert.inc [Server 3 has 6 transaction belonging to the group]
include/stop_group_replication.inc
#
# Step 3: Insert more transactions. Assert that server 2 applied none
#
[connection server1]
INSERT INTO t1 VALUES (3);
INSERT INTO t1 VALUES (4);
[connection server2]
#
# Step 4: Stop group replication on server 1 and server 2
#
[connection server2]
SET DEBUG_SYNC = "now WAIT_FOR applier_read_blocked";
SET @@GLOBAL.DEBUG='-d,block_applier_updates';
SET @@GLOBAL.DEBUG='+d,force_sql_thread_error';
SET DEBUG_SYNC = "now SIGNAL resume_applier_read";
include/gr_wait_for_member_state.inc
SET @@GLOBAL.DEBUG='-d,force_sql_thread_error';
SET DEBUG_SYNC= 'RESET';
include/stop_group_replication.inc
[connection server1]
include/stop_group_replication.inc
#
# Step 5: Boot the group again with server 3
#
[connection server3]
include/start_and_bootstrap_group_replication.inc
#
# Step 6: Try to join server 2 that was less executed GTIDs
# The start should fail as server 2 has more transactions in total
#
[connection server2]
include/assert.inc [Server 2 has 4 transaction belonging to the group]
[connection server3]
include/assert.inc [Server 3 has 7 transaction belonging to the group]
[connection server_2]
LOCK TABLE t1 READ;
[connection server2]
SET GLOBAL group_replication_group_name= "ba8c9f00-ec68-11e5-a837-0800200c9a66";
START GROUP_REPLICATION;
[connection server_2]
UNLOCK TABLES;
[connection server2]
ERROR HY000: The server is not configured properly to be an active member of the group. Please see more details on error log.
[connection server3]
include/rpl_gr_wait_for_number_of_members.inc
#
# Step 7: Clean up
#
[connection server3]
include/stop_group_replication.inc
[connection server1]
include/start_and_bootstrap_group_replication.inc
[connection server2]
include/start_group_replication.inc
[connection server3]
include/start_group_replication.inc
DROP TABLE t1;
include/group_replication_end.inc
|