【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高 ...
随机推荐
- Centos Stream 10 测试版下载:未来的RHEL10&Rocky Linux 10
简介 最近发现Centos最放出了Stream 10 测试版本,应该是基于Fedora 40构建的.未来红帽会基于此版本构建RHEL 10. 内核版本:6.9.0 Python版本:3.12.2 RH ...
- 手机上玩 PC 游戏的开源项目「GitHub 热点速览」
上周国产 3A 大作<黑神话:悟空>开启预售,同时公布游戏将于北京时间 2024.8.20 正式上线.这是一款由「游戏科学」开发的西游题材单机·动作·角色扮演游戏,它采用「虚幻引擎5」制作 ...
- Java实际工作里用到的几种加密方式
1.Base64加密 最简单的加密方式,甚至可以说不是加密,只是一种用64个字符表示任意二进制数据的方法.Base64编码原理是将输入字符串按字节切分,取得每个字节对应的二进制值(若不足8比特则高位补 ...
- 《Android开发卷——自定义日期选择器(三)》
继 <Android开发卷--自定义日期选择器(一)>:http://blog.csdn.net/chillax_li/article/details/19047 ...
- 『手写Mybatis』实现映射器的注册和使用
前言 如何面对复杂系统的设计? 我们可以把 Spring.MyBatis.Dubbo 这样的大型框架或者一些公司内部的较核心的项目,都可以称为复杂的系统. 这样的工程也不在是初学编程手里的玩具项目,没 ...
- HBCK2修复hbase2的常见场景
上一文章已经把HBCK2 怎么在小于hbase2.0.3版本的编译与用法介绍了,解决主要场景 查看hbase存在的问题 一.使用hbase hbck命令 hbase hbck命令是对hbase的元数据 ...
- Ansible的常用模块
目录 ansible常用模块 1. file模块 1.1 file模块的选项 1.2 file模块的使用 1.2.1 使用file模块在远程主机创建文件 1.2.2 创建目录 1.2.3 删除文件/目 ...
- 掌握 Nuxt 3 中的状态管理:实践指南
title: 掌握 Nuxt 3 中的状态管理:实践指南 date: 2024/6/22 updated: 2024/6/22 author: cmdragon excerpt: 摘要:该文指南详述了 ...
- python提取特定格式的数据
Excel Grid Data Converter 知识点总结 本文档总结了 ExcelGridConverter.py 脚本所涉及的关键 Python 知识点.该脚本用于从多个 Excel 文件中提 ...
- nginx 添加 模块
--- title: nginx 添加 模块 date: 2019-10-31 11:21:46 categories: tags: - config - nginx --- 说明: 已经安装好的Ng ...