標籤:編碼 tran sql 開始 global server replicat bootstra 17.
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 [email protected]‘%‘ IDENTIFIED BY ‘password‘;
GRANT REPLICATION SLAVE ON *.* TO [email protected]‘%‘;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;(可無)
CHANGE MASTER TO MASTER_USER=‘repli‘, MASTER_PASSWORD=‘[email protected]%‘ 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;
MySQL GROUP_replication部署實施