MySQL GROUP_replication部署實施


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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM