ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【MySQL】MGR高可用搭建

2022-03-09 11:33:25  阅读:213  来源: 互联网

标签:33061 group PLUGIN replication loose 192.168 MGR MySQL 搭建


 

 

部署过程中各种问题可参考的解决方案

我遇见的搭建问题,解决方案参考下面诸多博主的帖子

 

1、MGR部署后如何测试单点故障情况

https://www.cnblogs.com/diantong/p/11048767.html

 

2、找不到Group组端口如何解决

https://www.cnblogs.com/naocanzhishen/p/13540861.html

服务日志描述:

2022-03-08T16:22:11.029417Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] Error testing to the local group communication engine instance.'
2022-03-08T16:22:11.089494Z 0 [ERROR] [MY-011735] [Repl] Plugin group_replication reported: '[GCS] The member was unable to join the group. Local port: 33061'

 

3、使用已经安装MYSQL的克隆虚拟机,导致实例ID一致问题

https://blog.csdn.net/fly43108622/article/details/86089449

服务日志描述:

'There is already a member with server_uuid a655ee5b-9ee6-11ec-b685-000c290bdef1. The member will now exit the group.'

 

4、节点Recovering状态如何解决

https://blog.csdn.net/heroicpoem/article/details/106340155

 

MGR搭建流程

集群的机器需要配置区分的主机名,并且在Host配置对应的映射

1、配置主机名

# 一号机器
echo centos7-1 > /etc/hostname

# 二号机器
echo centos7-2 > /etc/hostname

# 三号机器
echo centos7-3 > /etc/hostname

 

2、配置域名映射(所有机器配置)

vim /etc/hosts

# 根据自己的机器IP进行设定
192.168.177.11 centos7-1
192.168.177.12 centos7-2
192.168.177.13 centos7-3

 

上述步骤完成后,使用ping命令测试一下是否能够ping通

以此检查网路状态和配置是否生效

 

确认主从关系

主从架构
centos7-1 主库 - A
centos7-2 从库 - B
centos7-3 从库 - C

 

 

然后以此配置各自的MYSQL配置文件(my.cnf)

 

1、主库配置追加这些配置项

MGR需要一个组群端口,所以这里使用的是33061端口

下面一项是加上了从库的地址和端口一起配置

# - - - - - - - - -[ 主库追加配置 ] - - - - - - - - - - - # 
server_id=1 
gtid_mode=ON 
enforce_gtid_consistency=ON 
binlog_checksum=NONE 
transaction_write_set_extraction=XXHASH64 
default_authentication_plugin=mysql_native_password 
plugin_dir=/usr/lib64/mysql/plugin 
loose-group_replication_recovery_use_ssl=ON 
loose-group_replication_group_name="ce9be252-2b71-11e6-b8f4-00212844f856"
loose-group_replication_start_on_boot=OFF 
loose-group_replication_local_address="192.168.177.11:33061" 
loose-group_replication_group_seeds="192.168.177.11:33061,192.168.177.12:33061,192.168.177.13:33061" 
loose-group_replication_bootstrap_group=OFF 

2、从库1的配置项

# - - - - - - - - -[ 从库1追加配置 ] - - - - - - - - - - - # 
server_id=2
plugin_dir=/usr/lib64/mysql/plugin 
default_authentication_plugin=mysql_native_password
gtid_mode=ON 
enforce_gtid_consistency=ON
binlog_checksum=NONE
loose-group_replication_recovery_get_public_key=ON 
loose-group_replication_recovery_use_ssl=ON 
loose-group_replication_group_name="ce9be252-2b71-11e6-b8f4-00212844f856"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address="192.168.177.12:33061" 
loose-group_replication_group_seeds="192.168.177.11:33061,192.168.177.12:33061,192.168.177.13:33061" 
loose-group_replication_bootstrap_group=OFF

3、从库2的配置项

# - - - - - - - - -[ 从库2追加配置 ] - - - - - - - - - - - # 
# 设置唯一的服务器编号
server_id=3
plugin_dir=/usr/lib64/mysql/plugin 
default_authentication_plugin=mysql_native_password
gtid_mode=ON 
enforce_gtid_consistency=ON
binlog_checksum=NONE

# 这个参数决定primary节点到secondary节点的请求是否为基于 RSA 密钥对的密码交换所需的公钥 
loose-group_replication_recovery_get_public_key=ON 
loose-group_replication_recovery_use_ssl=ON 
loose-group_replication_group_name="ce9be252-2b71-11e6-b8f4-00212844f856"
loose-group_replication_start_on_boot=OFF

# 设置本机地址
loose-group_replication_local_address="192.168.177.13:33061" 
loose-group_replication_group_seeds="192.168.177.11:33061,192.168.177.12:33061,192.168.177.13:33061" 
loose-group_replication_bootstrap_group=OFF

 

各个配置参数说明:

# 使用mysql_native_password密码策略,防止navicat连不上mysql8  
default_authentication_plugin=mysql_native_password 

# 设置MySQL插件所在目录,因为MGR基于插件,所以必须设置插件路径  
plugin_dir=/usr/lib64/mysql/plugin 

# 服务器编号,Master=1 
server_id=1 

# 开启binlog的GTID模式
gtid_mode=ON 

# 开启后MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行 
enforce_gtid_consistency=ON 

# 关闭binlog校验 
binlog_checksum=NONE 

# 定义用于事务期间哈希写入提取的算法,组复制模式下必须设置为 XXHASH64。 17
transaction_write_set_extraction=XXHASH64 

# 确定组复制恢复时是否应该应用 SSL,通常设置为“开”,但默认设置为“关”。 
loose‐group_replication_recovery_use_ssl=ON 

# 该服务器的实例所在复制组的名称,必须是有效的 UUID,所有节点必须相同。 
loose‐group_replication_group_name="bbbbbbbb‐bbbb‐cccc‐dddd‐eeeeeeeeeeee" 

# 确定服务器是否应该在服务器启动期间启动组复制。 
loose‐group_replication_start_on_boot=OFF 2425 

# 大坑2:
# 为复制组中其他的成员提供的网络地址,指定为“主机:端口”的格式化字符串。 
# 很多人想当然认为端口应该是3306,起始不然,MGR需要开启新端口24901同步交换 
# 所以这里不要写错,同时,前面我们配置了hosts文件做了主机名与IP的映射,这里直接写主机名即可 
loose‐group_replication_local_address="n0:24901" 

# 用于建立新成员到组的连接组成员列表。 
# 这个列表指定为由分隔号间隔的组成员网络地址列表,类似 host1:port1、host2:port2 的格式。 
# 同样采用n0~n2的主机名替代 
loose‐group_replication_group_seeds="n0:24901,n1:24901,n2:24901" 

# 配置此服务器为引导组,这个选项必须仅在一台服务器上设置, 
# 并且仅当第一次启动组或者重新启动整个组时。成功引导组启动后,将此选项设置为关闭。 
loose‐group_replication_bootstrap_group=OFF 

 

配置完成后重启各自的服务

# 所有配置完成后重启服务
systemctl restart mysqld

 

关闭Linux安全服务(全部机器执行)

# 关闭SELinux
setenforce 0

# 重启
reboot

 

安装此依赖,并开发声明的33061端口(全部机器执行)

yum install -y policycoreutils-python
semanage port -a -t mysqld_port_t -p tcp 33061

 

登录每一个库实例,执行下列SQL

-- 创建副本账号
CREATE USER 'REPL'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 

-- 赋予所有库的主从同步副本权限
GRANT REPLICATION SLAVE ON *.* TO 'REPL'@'%';

-- 清空BIN日志
RESET MASTER;

-- 安装MGR插件
INSTALL PLUGIN group_replication SONAME 'group_replication.so';

-- 检查是否安装成功
SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'group_replication';
+-------------------+----------------+---------------+-------------------+---------------------+----------------------+------------------------+--------------------+---------------------------+----------------+-------------+
| PLUGIN_NAME       | PLUGIN_VERSION | PLUGIN_STATUS | PLUGIN_TYPE       | PLUGIN_TYPE_VERSION | PLUGIN_LIBRARY       | PLUGIN_LIBRARY_VERSION | PLUGIN_AUTHOR      | PLUGIN_DESCRIPTION        | PLUGIN_LICENSE | LOAD_OPTION |
+-------------------+----------------+---------------+-------------------+---------------------+----------------------+------------------------+--------------------+---------------------------+----------------+-------------+
| group_replication | 1.1            | ACTIVE        | GROUP REPLICATION | 1.4                 | group_replication.so | 1.10                   | Oracle Corporation | Group Replication (1.1.0) | GPL            | ON          |
+-------------------+----------------+---------------+-------------------+---------------------+----------------------+------------------------+--------------------+---------------------------+----------------+-------------+
1 row in set (0.02 sec)

 

进行组网数据同步

首先主库开始进行副本组初始化

# - - - - - - - - -[ 主库操作 ] - - - - - - - - - - - # 
# 我们在 primary.cnf 配置文件中
# 把 group_replication_bootstrap_group 参数设置成 OFF,
# 在 primary 服务器启动时并不会直接启动复制组,
# 通过下面的命令动态的开启复制组是我们的集群更安全。

-- 开启复制组
SET GLOBAL group_replication_bootstrap_group=ON; 
START GROUP_REPLICATION; 
SET GLOBAL group_replication_bootstrap_group=OFF;

注意开启组副本SQL后的返回信息

检查服务是否报错

-- 检查日志
tail ‐f /var/log/mysqld.log

 

然后从库开始加入到 主库初始化的副本中

# - - - - - - - - -[ 从库1 & 从库2 操作 ] - - - - - - - - - - - # 
#指定主从账户与指定通信频道 
CHANGE MASTER TO 
    MASTER_USER="REPL", 
    MASTER_PASSWORD="123456" 
FOR CHANNEL 'group_replication_recovery'; 

#开启组网数据同步 
START GROUP_REPLICATION;

 

检查组副本的状态:

# 验证是否加入, 当所有节点为ONLINE状态时,才算成功
SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | a655ee5b-9ee6-11ec-b685-000c290bdef1 | centos7     |        3306 | ONLINE       | PRIMARY     | 8.0.27         | XCom                       |
| group_replication_applier | b1ae5b39-9efd-11ec-b67d-000c29dd2622 | centos7     |        3306 | RECOVERING   | SECONDARY   | 8.0.27         | XCom                       |
| group_replication_applier | b552f59c-9efd-11ec-b52d-000c29eb138a | centos7     |        3306 | RECOVERING   | SECONDARY   | 8.0.27         | XCom                       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.02 sec)

所有节点成员均为ONLINE状态才表示MGR部署成功

像上面的RECOVERING状态,需要翻看该节点的服务日志,检查错误原因

-- 检查日志
tail ‐f /var/log/mysqld.log

 

标签:33061,group,PLUGIN,replication,loose,192.168,MGR,MySQL,搭建
来源: https://www.cnblogs.com/mindzone/p/15984245.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有