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 master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information. [connection server1] ############################################################ # 1. Install the clone plugin and bootstrap group # replication on server1. [connection server1] INSTALL PLUGIN clone SONAME 'CLONE_PLUGIN'; include/start_and_bootstrap_group_replication.inc CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (0); ############################################################ # 2. Start group replication on server3. [connection server3] include/start_group_replication.inc ######################################################################## # 3. Restart server 2 with a monitoring process (mysqld_safe) if needed [connection server2] include/spawn_monitoring_process.inc ############################################################ # 4. Install the clone plugin on server 2 # Setup the server so group replication starts on boot INSTALL PLUGIN clone SONAME 'CLONE_PLUGIN'; ############################################################ # 5. Start group replication on server 2 # Set a debug point so it blocks during clone. SET GLOBAL group_replication_clone_threshold= 1; SET GLOBAL clone_autotune_concurrency = OFF; SET GLOBAL clone_max_concurrency = 1; SET @@GLOBAL.DEBUG='+d,gr_clone_wait'; START GROUP_REPLICATION; SET DEBUG_SYNC = 'now WAIT_FOR gr_clone_paused'; ############################################################ # 6. Assert COUNT_TRANSACTIONS_ROWS_VALIDATING and # TRANSACTIONS_COMMITTED_ALL_MEMBERS values on all servers. [connection server3] include/gr_stop_applier_sql_thread.inc STOP REPLICA SQL_THREAD FOR CHANNEL "group_replication_applier"; [connection server1] include/assert.inc ['Count_transactions_rows_validating must be equal to 10 on server1'] include/assert.inc ['Transactions_committed_all_members must be equal to aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-4 on server1'] [connection server2] include/assert.inc ['Count_transactions_rows_validating must be equal to 0 on server2'] include/assert.inc ['Transactions_committed_all_members must be equal to "" on server2'] [connection server3] include/assert.inc ['Count_transactions_rows_validating must be equal to 10 on server3'] include/assert.inc ['Transactions_committed_all_members must be equal to aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-4 on server3'] include/gr_start_applier_sql_thread.inc START REPLICA SQL_THREAD FOR CHANNEL "group_replication_applier"; ############################################################ # 7. Assert COUNT_TRANSACTIONS_ROWS_VALIDATING and # TRANSACTIONS_COMMITTED_ALL_MEMBERS values on all servers # after a garbage collection round. [connection server1] 'Count_transactions_rows_validating must be equal to 1 on server1' 'Transactions_committed_all_members must be equal to aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-15 on server1' [connection server2] include/assert.inc ['Count_transactions_rows_validating must be equal to 0 on server2'] include/assert.inc ['Transactions_committed_all_members must be equal to "" on server2'] [connection server3] 'Count_transactions_rows_validating must be equal to 1 on server3' 'Transactions_committed_all_members must be equal to aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-15 on server3' ############################################################ # 8. Resume clone. # Check process finished and server2 is online [connection server2] SET DEBUG_SYNC = 'now SIGNAL gr_clone_continue'; SET @@GLOBAL.DEBUG = '-d,gr_clone_wait'; include/rpl_reconnect.inc include/gr_wait_for_member_state.inc include/assert.inc [Clone must be completed] ############################################################ # 9. Assert COUNT_TRANSACTIONS_ROWS_VALIDATING and # TRANSACTIONS_COMMITTED_ALL_MEMBERS values on all servers # once all members are ONLNE. [connection server1] 'Count_transactions_rows_validating must be equal to 0 on server1' 'Transactions_committed_all_members must be equal to aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-16 on server1' [connection server2] 'Count_transactions_rows_validating must be equal to 0 on server2' 'Transactions_committed_all_members must be equal to aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-16 on server2' [connection server3] 'Count_transactions_rows_validating must be equal to 0 on server3' 'Transactions_committed_all_members must be equal to aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:1-16 on server3' ############################################################ # 10. Cleanup [connection server1] DROP TABLE t1; include/rpl_sync.inc include/stop_group_replication.inc UNINSTALL PLUGIN clone; [connection server3] include/stop_group_replication.inc [connection server2] SET DEBUG_SYNC = 'RESET'; include/stop_group_replication.inc UNINSTALL PLUGIN clone; SET GLOBAL group_replication_clone_threshold= GROUP_REPLICATION_CLONE_THRESHOLD; RESET PERSIST group_replication_group_name; RESET PERSIST group_replication_local_address; RESET PERSIST group_replication_group_seeds; RESET PERSIST group_replication_start_on_boot; SET GLOBAL group_replication_start_on_boot= GROUP_REPLICATION_START_ON_BOOT; 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 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"); call mtr.add_suppression("Internal query: CLONE INSTANCE FROM 'root'@'127.0.0.1':.* Error number: 3862"); call mtr.add_suppression("There was an issue when cloning from another server: Error number: 3862 Error message: Clone Donor Error: 1524 : Plugin 'clone' is not loaded."); SET SESSION sql_log_bin=1; include/clean_monitoring_process.inc include/group_replication_end.inc