MGR集群从库出现RECOVERING

一、MGR集群问题

说明:
1、启动MGR集群,发现从库转态是:RECOVERING,导致数据不同步。
2、查看MGR日志报错信息,发现提示从库以存在数据库linux,导致无法创建。
3、报错信息如下图所示:

在这里插入图片描述
在这里插入图片描述

二、解决方法

1、配置文件添加
vim /etc/my.cnf
[mysqld]
slave_skip_errors=all
slave_skip_errors=ddl_exist_errors

2、重启mysql数据库
service mysqld restart

3、启动mgr服务
a、master主库启动mgr服务
set global group_replication_bootstrap_group=on;
start group_replication;
select * from performance_schema.replication_group_members;
set global group_replication_bootstrap_group=off;

b、slave从库启动mgr服务
start group_relpication;

c、查看mgr集群状态
select * from performance_schema.replication_group_members;

d。查看哪个是主库
select variable_value from performance_schema.global_status where variable_name='group_replication_primary_member';

在这里插入图片描述

三、参数说明

slave_skip_errors选项有四个可用值,分别为: off,all,ErorCode,ddl_exist_errors 。
默认情况下该参数值是off,我们可以列出具体的error code,也可以选择all,mysql5.6及MySQL Cluster NDB 7.3以及后续版本增加了参数ddl_exist_errors,
该参数包含一系列error code(1007,1008,1050,1051,1054,1060,1061,1068,1094,1146)
一些error code代表的错误如下:
1007: 数据库已存在,创建数据库失败
1008: 数据库不存在,删除数据库失败
1050: 数据表已存在,创建数据表失败
1051: 数据表不存在,删除数据表失败
1054: 字段不存在,或程序文件跟数据库有冲突
1060: 字段重复,导致无法插入
1061: 重复键名
1068: 定义了多个主键
1094: 位置线程ID
1146: 数据表缺失,请恢复数据库
1053: 复制过程中主服务器宕机
1062: 主键冲突 Duplicate entry '%s' for key %d

**注意:对于数据一致性要求不高可以用,否则视具体情况具体使用。**
MGRMySQL Group Replication)是MySQL 5.7中新增的高可用性解决方案,它基于Paxos协议实现了多主复制,并且支持自动故障检测和自动故障转移。以下是MGR集群搭建的详细步骤: 1. 确定集群的节点数和角色,至少需要3个节点。其中,至少需要一个节点作为主节点,其他节点作为从节点。 2. 在每个节点上安装MySQL 5.7及以上版本,并且确保每个节点的MySQL配置文件中启用了MGR插件。 3. 在主节点上创建一个新的MGR组,并且将从节点添加到组中。可以使用以下命令: ``` mysql> SET GLOBAL group_replication_bootstrap_group=ON; mysql> CREATE USER 'mgr_user'@'%' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'mgr_user'@'%'; mysql> START GROUP_REPLICATION; mysql> SET GLOBAL group_replication_bootstrap_group=OFF; ``` 其中,mgr_user是用于MGR组内节点之间的通信的用户名,password是密码。 4. 在从节点上启动MGR组,并且加入到主节点所在的组中。可以使用以下命令: ``` mysql> SET GLOBAL group_replication_bootstrap_group=OFF; mysql> CHANGE MASTER TO MASTER_USER='mgr_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery'; mysql> START GROUP_REPLICATION; ``` 其中,mgr_user和password应该与主节点上设置的相同。 5. 在每个节点上配置MGR的一些参数,比如MGR组的名称、通信端口等等。可以使用以下命令: ``` mysql> SET GLOBAL group_replication_group_name='my_group'; mysql> SET GLOBAL group_replication_local_address='127.0.0.1:33061'; mysql> SET GLOBAL group_replication_group_seeds='127.0.0.1:33061,127.0.0.1:33062,127.0.0.1:33063'; ``` 其中,my_group是MGR组的名称,127.0.0.1:33061是节点的通信地址和端口,group_replication_group_seeds是所有节点的通信地址和端口。 6. 测试MGR集群的可用性。可以通过在主节点上执行一些数据操作,然后在从节点上查看是否同步了这些操作来进行测试。 以上就是MGR集群搭建的详细步骤。需要注意的是,在实际应用中,还需要考虑一些高可用性和安全性方面的问题,比如如何自动故障转移、如何进行备份和恢复、如何保护敏感数据等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋天枫叶35

希望能帮到你,谢谢你能阅读~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值