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
|
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]
#
# Create t1 and t2 on both servers
# Start group replication on server 1 and insert data on t1
#
server1
SET SESSION sql_log_bin=0;
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t2 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
SET SESSION sql_log_bin=1;
include/start_and_bootstrap_group_replication.inc
INSERT INTO t1 VALUES (1);
server2
SET SESSION sql_log_bin=0;
CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t2 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
call mtr.add_suppression("It is not possible to ensure the execution of group*");
call mtr.add_suppression("Unable to ensure the execution of group*");
call mtr.add_suppression("Fatal error during the incremental recovery process of Group Replication.*");
call mtr.add_suppression("The member is leaving a group without being on one");
call mtr.add_suppression("The member is already leaving or joining a group.");
call mtr.add_suppression("Error leaving the group");
call mtr.add_suppression("Skipping leave operation: concurrent attempt to leave the group is on-going.");
call mtr.add_suppression("Can't evaluate the group replication applier execution status. Group replication recovery will shutdown to avoid data corruption.");
call mtr.add_suppression("The server was automatically set into read only mode after an error was detected.");
SET SESSION sql_log_bin=1;
#
# Change recovery policy on server 2 to wait for transaction execution.
#
server2
SET @configured_rec_policy= @@GLOBAL.group_replication_recovery_complete_at;
SET GLOBAL group_replication_recovery_complete_at= "transactions_applied";
Warnings:
Warning 1681 'group_replication_recovery_complete_at' is deprecated and will be removed in a future release.
#
# Lock table t1 on server 2
# Table t1: Blocks first phase of recovery
#
server_2 (server2)
LOCK TABLE t1 READ;
#
# Start group replication on server 2 and check it is stuck on recovery
#
server2
include/start_group_replication.inc
#
# Insert some transaction on server 1 that will be cached on server 2
#
server1
INSERT INTO t2 VALUES (1);
#
# Wait for the transactions to be cached on server 2
#
server2
#
# Fake a stopped applier thread during recovery.
#
server2
SET @@GLOBAL.DEBUG= '+d,group_replication_wait_for_gtid_execution_force_error';
#
# UnLock table t1: First phase of recovery can carry on.
# Member 2 will error out as it can't wait for data execution
#
server_2 (server2)
UNLOCK TABLES;
include/gr_wait_for_member_state.inc
SET @@GLOBAL.DEBUG= '-d,group_replication_wait_for_gtid_execution_force_error';
#
# Test cleanup
#
server1
include/rpl_gr_wait_for_number_of_members.inc
server2
include/stop_group_replication.inc
include/start_group_replication.inc
DROP TABLE t1;
DROP TABLE t2;
SET GLOBAL group_replication_recovery_complete_at= @configured_rec_policy;
Warnings:
Warning 1681 'group_replication_recovery_complete_at' is deprecated and will be removed in a future release.
include/group_replication_end.inc
|