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;

猜你喜欢

转载自www.cnblogs.com/mysql-hongling/p/9556679.html