【MySQL】MGR高可用搭建
MySQL8.0.27如何安装
https://www.cnblogs.com/mindzone/p/15450312.html
部署过程中各种问题可参考的解决方案
我遇见的搭建问题,解决方案参考下面诸多博主的帖子
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
总结:
1、主机需要区分主机名,并且配置主机名和网络映射
vim /etc/sysconfig/network vim /etc/hosts
2、安装必要端口组件
yum install -y policycoreutils-python
semanage port -a -t mysqld_port_t -p tcp 33061
5.7版本要求的配置项更多,但是SQL开启副本同步的操作是一致的
参考:
https://www.cnblogs.com/sallyluo/p/11760304.html
主库MGR配置:
# MGR-CFG FOR MASTER
server_id = 1001
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format= ROW
transaction_write_set_extraction ="XXHASH64"
loose-group_replication_group_name = "b13df29e-90b6-11e8-8d1b-525400fc3996"
loose-group_replication_start_on_boot = off
loose-group_replication_local_address="centos6-1:33061"
loose-group_replication_group_seeds="centos6-1:33061,centos6-2:33061,centos6-3:33061"
loose-group_replication_bootstrap_group = off
group_replication_ip_whitelist = "centos6-1,centos6-2,centos6-3"
report_host="centos6-1"
log_timestamps="system"
plugin-dir=/usr/lib64/mysql/plugin
从库1 和 从库 2 的MGR配置:
server-id 和 地址 改成从库自己的
# MGR - CFG FOR SLAVE
server_id = 1002
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format= ROW
transaction_write_set_extraction = "XXHASH64"
loose-group_replication_group_name = "b13df29e-90b6-11e8-8d1b-525400fc3996"
loose-group_replication_start_on_boot = off
loose-group_replication_bootstrap_group = off
loose-group_replication_local_address="centos6-2:33061"
loose-group_replication_group_seeds="centos6-1:33061,centos6-2:33061,centos6-3:33061"
group_replication_ip_whitelist = "centos6-1,centos6-2,centos6-3"
report_host="centos6-2"
log_timestamps="system"
plugin-dir=/usr/lib64/mysql/plugin
【MySQL】MGR高可用搭建的更多相关文章
- 基于keepalived搭建MySQL的高可用集群
MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...
- 搭建MySQL MHA高可用
本文内容参考:http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/ MySQL MHA 高可用集群 环境: Linu ...
- (转)基于keepalived搭建MySQL的高可用集群
基于keepalived搭建MySQL的高可用集群 原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...
- Oracle Compute云快速搭建MySQL Keepalived高可用架构
最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...
- Mysql之MGR高可用实战案例
MGR高可用实战案例 1.环境准备 node1 rocky8.6 10.0.0.8 node2 rocky8.6 10.0.0.18 node3 rocky8.6 10.0.0.28 2.所有节点更改 ...
- Oracle和MySQL的高可用方案对比【转】
关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说.通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识.Oracle有一套很成熟的解决方案.用我在 ...
- Keepalived+MySQL实现高可用
MySQL的高可用方案有很多,比如Cluster,MMM,MHA,DRBD等,这些都比较复杂,我前面的文章也有介绍.最近Oracle官方也推出了Fabric.有时我们不需要这么复杂的环境,这些方案各有 ...
- 美团点评MySQL数据库高可用架构从MMM到MHA+Zebra以及MHA+Proxy的演进
本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新.同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望. MMM ...
- Galera Cluster 实现mysql的高可用 (Percona XtraDB Cluster)
Galera Cluster 实现mysql的高可用 (Percona XtraDB Cluster) # 基础搭建 # 设备:三台主机 192.168.47.101 192.168.47.102 1 ...
- MySQL MHA 高可用集群部署及故障切换
MySQL MHA 高可用集群部署及故障切换 1.概念 2.搭建MySQL + MHA 1.概念: a)MHA概念 : MHA(MasterHigh Availability)是一套优秀的MySQL高 ...
随机推荐
- (八十七)c#Winform自定义控件-朝上的瓶子
官网 http://www.hzhcontrols.com/ 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kw ...
- 升级babel7后,直接引用element-ui中没有暴露出来的组件image-viewer.vue导致的打包错误
问题 & 解决方案 升级babel7后,原先代码中像这样直接引用element-ui组件的地方,出现了报错 Module parse failed: Unexpected token (1:0 ...
- MoneyPrinterPlus:AI自动短视频生成工具,详细使用教程
MoneyPrinterPlus是一款使用AI大模型技术,一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上的轻松赚钱工具. 之前有出过一期基本的介绍,但是后台收 ...
- cuda性能优化-2.访存优化
简介 在CUDA程序中, 访存优化个人认为是最重要的优化项. 往往kernel会卡在数据传输而不是计算上, 为了最大限度利用GPU的计算能力, 我们需要根据GPU硬件架构对kernel访存进行合理的编 ...
- ESP8266串口WiFi模块 - WiFi杀手
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` ESP8266串口WiFi模块 - WiFi杀手 日期:2 ...
- getRefs is undefined html vue2项目 报错
vue2项目提示 getRefs is undefined 在div上面写了,ref,还写了v-if 然后再watch中操作了 ref 导致报错. 分析: 组件因为v-if 为 false 没有注册和 ...
- R语言求取大量遥感影像的平均值、标准差:raster库
本文介绍基于R语言中的raster包,批量读取多张栅格图像,对多个栅格图像计算平均值.标准差,并将所得新的栅格结果图像保存的方法. 在文章基于R语言的raster包读取遥感影像中,我们介绍了基 ...
- TCP,UDP,IP,数据链路层头部详解
UDP头部 可以看到UDP头部由(源端口).(目的端口).(长度)跟(校验和)组成,总共8字节. 源端口:发送方的端口号,16位,即2字节. 目的端口:接收方的端口号,16位,即2字节. 长度:头部+ ...
- 实验11.ACL实验
# 实验11.ACL实验 本实验用于测试ACL,类似于防火墙. 拓扑 要求阻塞PC1到PC2和server的全部协议,阻塞client1到server1的icmp协议 具体配置 首先利用ospf协议实 ...
- NB-IoT,LoRA,WIFI,蓝牙,Zigbee,MQTT,CoAP之间的关系
--- title: file_name date: 2020-06-22 07:26:20 categories: tags: - iot - wifi - Bluetooth - MQTT - c ...