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
|
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. Bootstrap group with server1
[connection server1]
set session sql_log_bin=0;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY , b INT);
set session sql_log_bin=1;
include/start_and_bootstrap_group_replication.inc
INSERT INTO test.t1 (b) VALUES (1);
# 2. Lock server2 on recovery and join it to the group
[connection server2]
set session sql_log_bin=0;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY , b INT);
set session sql_log_bin=1;
[connection server_2]
LOCK TABLES t1 READ;
[connection server2]
include/start_group_replication.inc
# 3. Establish managed connection between server3 and server2 secondary
# and locked on recovery. Secondaries priority is higher than primary
[connection server3]
set session sql_log_bin=0;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY , b INT);
set session sql_log_bin=1;
SELECT asynchronous_connection_failover_add_managed('ch1_3', 'GroupReplication', 'FAILOVER_GROUP_NAME', '127.0.0.1', SERVER_MYPORT_2, '', 60, 80);;
asynchronous_connection_failover_add_managed('ch1_3', 'GroupReplication', 'FAILOVER_GROUP_NAME', '127.0.0.1', SERVER_MYPORT_2, '', 60, 80)
The UDF asynchronous_connection_failover_add_managed() executed successfully.
# 4. Create and start new channel ch1_3: server2(source),
# server3(replica)
CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.0.0.1', SOURCE_USER='root', SOURCE_AUTO_POSITION=1, SOURCE_CONNECTION_AUTO_FAILOVER=1, SOURCE_PORT=SERVER_2_PORT, SOURCE_CONNECT_RETRY=1, SOURCE_RETRY_COUNT=1 FOR CHANNEL 'ch1_3';
Warnings:
Note 1759 Sending passwords in plain text without SSL/TLS is extremely insecure.
Note 1760 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.
include/start_slave.inc [FOR CHANNEL 'ch1_3']
# 5. Confirm server1 and server2 members of group are added to
# performance_schema.replication_asynchronous_connection_failover.
# 6. Confirm connection is done with server1 due to server2 being on
# recovery.
# 7. Wait 30 seconds and validate that replica is still connected
# to server1.
include/assert.inc [Verify server1 is on replication_asynchronous_connection_failover]
# 8. After UNLOCK tables it shall reconnect to server2
[connection server_2]
UNLOCK TABLES;
include/gr_wait_for_member_state.inc
[connection server3]
# 9. Cleanup
SET SESSION sql_log_bin = 0;
call mtr.add_suppression("The source .* for channel 'ch1_3' has joined the group .*, and so added its entry into replication_asynchronous_connection_failover table.");
call mtr.add_suppression("The IO thread detected that the source .* does not belong to the group majority, thence the channel .* will try to connect to another source.");
call mtr.add_suppression("The group .* for the channel .* has been removed, and so removed its entry from replication_asynchronous_connection_failover_managed and all the group members from replication_asynchronous_connection_failover table.");
call mtr.add_suppression("The group .* for the channel .* has been added, and so added its entry in replication_asynchronous_connection_failover_managed and source to replication_asynchronous_connection_failover table.");
SET SESSION sql_log_bin = 1;
include/stop_slave.inc [FOR CHANNEL 'ch1_3']
include/rpl_reset_slave.inc
SELECT asynchronous_connection_failover_delete_managed('ch1_3', 'GROUP_NAME');
asynchronous_connection_failover_delete_managed('ch1_3', 'GROUP_NAME')
The UDF asynchronous_connection_failover_delete_managed() executed successfully.
DROP TABLE t1;
[connection server1]
DROP TABLE t1;
include/group_replication_end.inc
|