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高可用搭建的更多相关文章

  1. 基于keepalived搭建MySQL的高可用集群

    MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...

  2. 搭建MySQL MHA高可用

    本文内容参考:http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/ MySQL MHA 高可用集群 环境: Linu ...

  3. (转)基于keepalived搭建MySQL的高可用集群

    基于keepalived搭建MySQL的高可用集群  原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...

  4. Oracle Compute云快速搭建MySQL Keepalived高可用架构

    最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...

  5. 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.所有节点更改 ...

  6. Oracle和MySQL的高可用方案对比【转】

    关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说.通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识.Oracle有一套很成熟的解决方案.用我在 ...

  7. Keepalived+MySQL实现高可用

    MySQL的高可用方案有很多,比如Cluster,MMM,MHA,DRBD等,这些都比较复杂,我前面的文章也有介绍.最近Oracle官方也推出了Fabric.有时我们不需要这么复杂的环境,这些方案各有 ...

  8. 美团点评MySQL数据库高可用架构从MMM到MHA+Zebra以及MHA+Proxy的演进

    本文介绍最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新.同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的一些规划和展望. MMM ...

  9. Galera Cluster 实现mysql的高可用 (Percona XtraDB Cluster)

    Galera Cluster 实现mysql的高可用 (Percona XtraDB Cluster) # 基础搭建 # 设备:三台主机 192.168.47.101 192.168.47.102 1 ...

  10. MySQL MHA 高可用集群部署及故障切换

    MySQL MHA 高可用集群部署及故障切换 1.概念 2.搭建MySQL + MHA 1.概念: a)MHA概念 : MHA(MasterHigh Availability)是一套优秀的MySQL高 ...

随机推荐

  1. Centos Stream 10 测试版下载:未来的RHEL10&Rocky Linux 10

    简介 最近发现Centos最放出了Stream 10 测试版本,应该是基于Fedora 40构建的.未来红帽会基于此版本构建RHEL 10. 内核版本:6.9.0 Python版本:3.12.2 RH ...

  2. 手机上玩 PC 游戏的开源项目「GitHub 热点速览」

    上周国产 3A 大作<黑神话:悟空>开启预售,同时公布游戏将于北京时间 2024.8.20 正式上线.这是一款由「游戏科学」开发的西游题材单机·动作·角色扮演游戏,它采用「虚幻引擎5」制作 ...

  3. Java实际工作里用到的几种加密方式

    1.Base64加密 最简单的加密方式,甚至可以说不是加密,只是一种用64个字符表示任意二进制数据的方法.Base64编码原理是将输入字符串按字节切分,取得每个字节对应的二进制值(若不足8比特则高位补 ...

  4. 《Android开发卷——自定义日期选择器(三)》

                 继 <Android开发卷--自定义日期选择器(一)>:http://blog.csdn.net/chillax_li/article/details/19047 ...

  5. 『手写Mybatis』实现映射器的注册和使用

    前言 如何面对复杂系统的设计? 我们可以把 Spring.MyBatis.Dubbo 这样的大型框架或者一些公司内部的较核心的项目,都可以称为复杂的系统. 这样的工程也不在是初学编程手里的玩具项目,没 ...

  6. HBCK2修复hbase2的常见场景

    上一文章已经把HBCK2 怎么在小于hbase2.0.3版本的编译与用法介绍了,解决主要场景 查看hbase存在的问题 一.使用hbase hbck命令 hbase hbck命令是对hbase的元数据 ...

  7. Ansible的常用模块

    目录 ansible常用模块 1. file模块 1.1 file模块的选项 1.2 file模块的使用 1.2.1 使用file模块在远程主机创建文件 1.2.2 创建目录 1.2.3 删除文件/目 ...

  8. 掌握 Nuxt 3 中的状态管理:实践指南

    title: 掌握 Nuxt 3 中的状态管理:实践指南 date: 2024/6/22 updated: 2024/6/22 author: cmdragon excerpt: 摘要:该文指南详述了 ...

  9. python提取特定格式的数据

    Excel Grid Data Converter 知识点总结 本文档总结了 ExcelGridConverter.py 脚本所涉及的关键 Python 知识点.该脚本用于从多个 Excel 文件中提 ...

  10. nginx 添加 模块

    --- title: nginx 添加 模块 date: 2019-10-31 11:21:46 categories: tags: - config - nginx --- 说明: 已经安装好的Ng ...