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
|
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. Install clone plugin on server1.
[connection server1]
INSTALL PLUGIN clone SONAME 'CLONE_PLUGIN';
############################################################
# 2. Bootstrap server1 and add some data
include/start_and_bootstrap_group_replication.inc
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2);
#################################################################
# 3. Install the clone plugin and start GR on server3
[connection server3]
INSTALL PLUGIN clone SONAME 'CLONE_PLUGIN';
include/start_group_replication.inc
##############################################################
# 4. Restart server 2 with a monitoring process (mysqld_safe)
[connection server2]
SET PERSIST local_infile= ON;
include/spawn_monitoring_process.inc
############################################################
# 5. Setup server2 so group replication starts on boot
# Install the Clone plugin
INSTALL PLUGIN clone SONAME 'CLONE_PLUGIN';
############################################################
# 6. On a empty server2 start group replication
# Wait for it to restart and come back
# Check clone was completed
SET GLOBAL group_replication_clone_threshold= 1;
START GROUP_REPLICATION;
include/rpl_reconnect.inc
include/gr_wait_for_member_state.inc
include/assert.inc [Clone must be completed]
include/diff_tables.inc [server1:test.t1, server2:test.t1, server3:test.t1]
############################################################
# 7. Get server2 expelled
[connection server2]
SET @debug_saved = @@GLOBAL.DEBUG;
SET @@GLOBAL.DEBUG='+d,group_replication_stop_before_rejoin';
SET GLOBAL group_replication_autorejoin_tries = 1;
include/gr_expel_member_from_group.inc
SET SESSION sql_log_bin = 0;
CREATE TABLE pid_table(pid_no INT PRIMARY KEY);
LOAD DATA LOCAL INFILE 'pid_file' INTO TABLE pid_table;
DROP TABLE pid_table;
SET SESSION sql_log_bin = 1;
SET DEBUG_SYNC = "now WAIT_FOR signal.autorejoin_waiting";
include/assert.inc [Auto-rejoin should be running]
############################################################
# 8. Add more data to server 1 before server2 rejoins
[connection server1]
INSERT INTO t1 VALUES (3);
INSERT INTO t1 VALUES (4);
include/rpl_sync.inc
############################################################
# 9. Unblock the rejoin, another clone should happen
[connection server2]
SET GLOBAL group_replication_clone_threshold= 1;
SET DEBUG_SYNC = "now SIGNAL signal.autorejoin_continue";
include/rpl_reconnect.inc
include/gr_wait_for_member_state.inc
include/assert.inc [Clone must be completed]
include/diff_tables.inc [server1:test.t1, server2:test.t1, server3:test.t1]
############################################################
# 10. Cleanup
[connection server1]
DROP TABLE t1;
UNINSTALL PLUGIN clone;
[connection server3]
UNINSTALL PLUGIN clone;
[connection server2]
RESET PERSIST IF EXISTS group_replication_group_name;
RESET PERSIST IF EXISTS group_replication_local_address;
RESET PERSIST IF EXISTS group_replication_group_seeds;
RESET PERSIST IF EXISTS group_replication_start_on_boot;
RESET PERSIST IF EXISTS local_infile;
RESET PERSIST IF EXISTS group_replication_communication_stack;
UNINSTALL PLUGIN clone;
SET GLOBAL group_replication_clone_threshold= 9223372036854775807;
set session sql_log_bin=0;
call mtr.add_suppression("This member will start distributed recovery using clone. It is due to the number of missing transactions being higher than the configured threshold of*");
call mtr.add_suppression("Member was expelled from the group due to network failures, changing member status to ERROR.");
call mtr.add_suppression("The server was automatically set into read only mode after an error was detected.");
call mtr.add_suppression("Started auto-rejoin procedure attempt*");
call mtr.add_suppression("Auto-rejoin procedure attempt 1 of 1");
call mtr.add_suppression("Clone removing all user data for provisioning: Started");
call mtr.add_suppression("Clone removing all user data for provisioning: Finished");
set session sql_log_bin=1;
include/clean_monitoring_process.inc
include/group_replication_end.inc
|