1、組Replication Server設置
[mysqld]
# server configuration
datadir=<full_path_to_data>/data/s1
basedir=<full_path_to_bin>/mysql-8.0/
port=24801
socket=<full_path_to_sock_dir>/s1.sock
注意
使用非默認端口24801是因為在本教程中,三個服務器實例使用相同的主機名。在具有三台不同機器的設置中,這不是必需的。
2、復制框架配置
在my.cnf中的[mysqld]下添加以下信息
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_checksum=NONE
log_bin=binlog
log_slave_updates=ON
binlog_format=ROW
master_info_repository=TABLE
relay_log_info_repository=TABLE
3、組復制設置
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "188.102.17.179:2525"
loose-group_replication_group_seeds= "188.102.17.179:2525,188.102.17.180:2525,188.102.4.131:2525"
loose-group_replication_bootstrap_group=off
注意:
如果在啟動服務器時尚未加載組復制插件,則上述變量loose-使用 的前綴 group_replication指示服務器繼續啟動。
配置 transaction_write_set_extraction
指示服務器對於每個事務,它必須收集寫集並使用XXHASH64散列算法將其編碼為散列。從MySQL 8.0.2開始,此設置是默認設置,因此可以省略此行。
配置 group_replication_group_name
必須是有效的UUID。在二進制日志中為組復制事件設置GTID時,將在內部使用此UUID。使用SELECT UUID()生成一個UUID。
配置 group_replication_start_on_boot
指示插件在服務器啟動時不自動啟動操作。這在設置組復制時很重要,因為它確保您可以在手動啟動插件之前配置服務器。
配置成員后,可以設置 group_replication_start_on_boot 為on,以便在服務器引導時自動啟動Group Replication。
配置 group_replication_local_address
告訴插件本機使用網絡地址127.0.0.1和端口24901與組中的其他成員進行內部通信。
重要
組復制使用此地址進行使用XCom的內部成員到成員連接。此地址必須與用於SQL的主機名和端口不同,並且不得用於客戶端應用程序。
在運行組復制時,必須為組成員之間的內部通信保留它。
配置的網絡地址 group_replication_local_address
必須可由所有組成員解析。例如,如果每個服務器實例位於具有固定網絡地址的其他計算機上,則可以使用計算機的IP,例如10.0.0.1。
如果使用主機名,則必須使用完全限定名稱,並確保它可通過DNS,正確配置的/etc/hosts 文件或其他名稱解析過程進行解析。
建議的端口 group_replication_local_address 是33061.在本教程中,我們使用在一台計算機上運行的三個服務器實例,因此端口24901到24903用於內部通信網絡地址。
配置 group_replication_group_seeds
設置組成員的主機名和端口,新成員使用它們建立與組的連接。這些成員稱為種子成員。建立連接后,將列出組成員身份信息 performance_schema.replication_group_members。
通常,group_replication_group_seeds 列表包含hostname:port每個組成員的列表 group_replication_local_address,但這不是強制性的,可以選擇組成員的子集作為種子。
重要,該hostname:port列在 group_replication_group_seeds 是種子構件的內部網絡地址,由被配置 group_replication_local_address ,
而不是SQL hostname:port用於客戶端連接,並且例如在顯示 performance_schema.replication_group_members 表中。
4、具體部署操作
1)、創建復制賬號
(可在加入組復制前,各節點先創建賬號,就無需關閉打開日志)
SET SQL_LOG_BIN=0;(可無)
CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;(可無)
CHANGE MASTER TO MASTER_USER='repli', MASTER_PASSWORD='repli@%' FOR CHANNEL 'group_replication_recovery';
2)、安裝組插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
3)、查看安裝情況及設置白名單
SHOW PLUGINS;
show global variables like 'group_replication_ip_whitelist';
SET GLOBAL group_replication_ip_whitelist="188.102.17.179,188.102.17.180,188.102.4.131";
(成功后在添加到配置文件中,永久生效)
4)、啟動同步復制
SET GLOBAL group_replication_bootstrap_group=ON; (主節點必須執行,其他節點不需要執行)
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group = OFF; (主節點必須執行,其他節點不需要執行)
查看集群節點情況:
SELECT * FROM performance_schema.replication_group_members;
查看事務復制信息:
select * from performance_schema.replication_connection_status\G
5、測試
主節點:
CREATE DATABASE test;
USE test;
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
INSERT INTO t1 VALUES (1, 'Luis');
SELECT * FROM t1;
SHOW BINLOG EVENTS;
從節點:
show databases;
use test
show tables;
select * from t1;