今天来总结下MySQL 5.7中的一些问题处理,相对来说常规一些。搭建的过程我就不用多说了,昨天的文章里面可以看到一个基本的方式,在测试环境很容易模拟,如果在多台物理机环境中搭建是不是也一样呢,答案是肯定的,我自己都一一试过了。

因为搭建的环境官方建议也是single_primary的方式,即一主写入,其它做读,也就是读写分离,当然支持multi_primary理论上也是可行的,但是还是有点小问题,我们就以single_primary来举例。

问题1:

读节点加入组的时候,start group_replication抛出了下面的错误。基本碰到这个错误,你离搭建成功就不远了。

2017-02-20T07:56:30.064556Z 0 [ERROR] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: 89328c79-f730-11e6-ab63-782bcb377193:1-2 > Group transactions: 7c744904-f730-11e6-a72d-782bcb377193:1-4'

2017-02-20T07:56:30.064580Z 0 [ERROR] Plugin group_replication reported: 'The member contains transactions not present in the group. The member will now exit the group.'

2017-02-20T07:56:30.064587Z 0 [Note] Plugin group_replication reported: 'To force this member into the group you can use the group_replication_allow_local_disjoint_gtids_join option'

可以很明显看到日志中已经提示了,需要设置参数,也就是兼容加入组。group_replication_allow_local_disjoint_gtids_join设置完成后运行start group_replication即可。

问题2:

如果碰到这个错误,也不用太担心,可以从日志看到是因为参数的不兼容性导致的。比如主写设置为multi-primary,读节点设置为single-primary,统一一下即可。

2017-02-21T10:20:56.324890+08:00 0 [ERROR] Plugin group_replication

reported: 'This member has more executed transactions than those present

in the group. Local transactions:

87b9c8fe-f352-11e6-bb33-0026b935eb76:1-5,

b79d42f4-f351-11e6-9891-0026b935eb76:1,

f7c7b9f8-f352-11e6-b1de-a4badb1b524e:1 > Group transactions: 87b9c8fe-f352-11e6-bb33-0026b935eb76:1-5,

b79d42f4-f351-11e6-9891-0026b935eb76:1'

2017-02-21T10:20:56.324971+08:00

0 [ERROR] Plugin group_replication reported: 'The member configuration

is not compatible with the group configuration. Variables such as

single_primary_mode or enforce_update_everywhere_checks must have the

same value on every server in the group. (member configuration option:

[], group configuration option:

[group_replication_single_primary_mode]).'

2017-02-21T10:20:56.325052+08:00 19 [Note] Plugin group_replication reported: 'Going to wait for view modification'

2017-02-21T10:20:56.325594+08:00 0 [Note] Plugin group_replication reported: 'getstart group_id 53d187f2'

问题3:

这个问题困扰了我很久,其实本质上就是节点的设置,里面有一个group_name, 这个名字可以不能设置为每个节点的uuid,比如节点1,2,3这几个节点,group_replication_group_name是需要一致的。之前每次失败都会认认真真拷贝uuid,发现适得其反。

2017-02-22T14:46:35.819072Z 0 [Warning] Plugin group_replication reported: 'read failed'

2017-02-22T14:46:35.851829Z 0 [ERROR] Plugin group_replication reported: '[GCS] The member was unable to join the group. Local port: 24902'

2017-02-22T14:47:05.814080Z 30 [ERROR] Plugin group_replication reported: 'Timeout on wait for view after joining group'

2017-02-22T14:47:05.814183Z 30 [Note] Plugin group_replication reported: 'Requesting to leave the group despite of not being a member'

2017-02-22T14:47:05.814213Z 30 [ERROR] Plugin group_replication reported: '[GCS] The member is leaving a group without being on one.'

2017-02-22T14:47:05.814567Z 30 [Note] Plugin group_replication reported: 'auto_increment_increment is reset to 1'

2017-02-22T14:47:05.814583Z 30 [Note] Plugin group_replication reported: 'auto_increment_offset is reset to 1'

2017-02-22T14:47:05.814859Z 36 [Note] Error reading relay log event for channel 'group_replication_applier': slave SQL thread was killed

2017-02-22T14:47:05.815720Z 33 [Note] Plugin group_replication reported: 'The group replication applier thread was killed'统一之后,启动的过程其实很快。

mysql> start group_replication;

Query OK, 0 rows affected (1.52 sec)

基本上搭建过程就这几类问题,还有主机名类的问题,这方面还有一些小的bug,如果需要特别设置,还可以指定report_host来完成。

问题4:

环境搭建好之后,我们来创建一个普通的表,有时候好的习惯和规范在这种时候就尤其重要。

创建表test_tab

create table test_tab (id int,name varchar(30));然后插入一条数据,看起来这是一个再正常不过的操作,但是在MGR里面就会有错误,因为一个基本要求就是表中含有主键。

mysql> insert into test_tab values(1,'a');

ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.修复的方式就是添加主键:

mysql> alter table test_tab add primary key(id);

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

问题5(模拟灾难):

我们目前搭建的是single-primary的模式。如果主写节点发生故障,整个group该怎么处理呢,就会优先把第二个节点S2省纪委主写。

要测试的话还是很简单的。我们把节点1的服务直接kill掉。看看主节点会漂移到哪里。

首先是组复制的基本情况,目前存在5个节点,我们直接kill节点1,即端口为24801的。

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| group_replication_applier | 52d26194-f90a-11e6-a247-782bcb377193 | grtest      |       24801 | ONLINE       |

| group_replication_applier | 5abaaf89-f90a-11e6-b4de-782bcb377193 | grtest      |       24802 | ONLINE       |

| group_replication_applier | 655248b9-f90a-11e6-86b4-782bcb377193 | grtest      |       24803 | ONLINE       |

| group_replication_applier | 6defc92c-f90a-11e6-990c-782bcb377193 | grtest      |       24804 | ONLINE       |

| group_replication_applier | 76bc07a1-f90a-11e6-ab0a-782bcb377193 | grtest      |       24805 | ONLINE       |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

节点2会输出下面的日志,意味值这个节点正式上岗了。

2017-02-22T14:59:45.157989Z 0 [Note] Plugin group_replication reported: 'getstart group_id 98e4de29'

2017-02-22T14:59:45.434062Z 0 [Note] Plugin group_replication reported: 'Unsetting super_read_only.'

2017-02-22T14:59:45.434130Z

40 [Note] Plugin group_replication reported: 'A new primary was elected, enabled conflict detection until the new primary applies all

relay logs'然后就会看到组复制的情况成了下面的局面,毫无疑问,第一个节点被剔除了。

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| group_replication_applier | 5abaaf89-f90a-11e6-b4de-782bcb377193 | grtest      |       24802 | ONLINE       |

| group_replication_applier | 655248b9-f90a-11e6-86b4-782bcb377193 | grtest      |       24803 | ONLINE       |

| group_replication_applier | 6defc92c-f90a-11e6-990c-782bcb377193 | grtest      |       24804 | ONLINE       |

| group_replication_applier | 76bc07a1-f90a-11e6-ab0a-782bcb377193 | grtest      |       24805 | ONLINE       |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

从日志我们可以看到是第二个节点升为主写了,那么问题来了。

问题6:

怎么判断一个复制组中哪个是主节点,不能完全靠猜或者翻看日志来判断吧。

我们用下面的语句来过滤得到。

mysql> select *from  performance_schema.replication_group_members

where member_id =(select variable_value from

performance_schema.global_status WHERE VARIABLE_NAME=

'group_replication_primary_member');

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

| group_replication_applier | 5abaaf89-f90a-11e6-b4de-782bcb377193 | grtest      |       24802 | ONLINE       |

+---------------------------+--------------------------------------+-------------+-------------+--------------+

1 row in set (0.00 sec)

mysql5.730_MySQL 5.7 Group Replication错误总结(r11笔记第84天)相关推荐

  1. 动态创建MySQL Group Replication的节点(r11笔记第84天)

    前几天分享了下搭建MySQL Group Replication的脚本,其实感觉还是不太踏实,虽然我成功搭建了3个节点的环境,但是有不少问题还没有解决,甚至是特意避开了. 1.节点数都是在脚本里固定的 ...

  2. MySQL group replication

    本篇文章主要讲解MySQL group replication介绍,文中有关MySQL,group的内容,希望对大家有所帮助. "MySQL group replication" ...

  3. MySQL Group Replication调研剖析

    以下转自 http://www.iteye.com/news/32090 MySQL Group Replication调研剖析 引用 作者简介:王伟,京东基础平台数据库工程师,京东商城基础平台部门包 ...

  4. MySQL Group Replication 学习(部署篇)

    MySQL5.7版本出来有很长时间了,之前也装了玩了下,大概了解了部分功能和特性,但没有系统的学习和测试其主要新增功能,最近也特意抽出时间想去多了解了解,学习学习5.7的主要新特性,这里主要是针对其最 ...

  5. Mysql 8 group replication组复制集群单主配置图解

    Mysql 8 MGR集群单主配置图解 声明与简介 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的MGR集群的配置. ...

  6. mysql group replication 安装配置详解

    一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...

  7. MySQL Group Replication 介绍

    2016-12-12,一个重要的日子,mysql5.7.17 GA版发布,正式推出Group Replication(组复制) 插件,通过这个插件增强了MySQL原有的高可用方案(原有的Replica ...

  8. mysql mgr简介_MySQL Group Replication(MGR)使用简介与注意事项

    MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供.MGR基于分布式paxos协议,实现组复制,保证数据 ...

  9. MySQL Group Replication数据安全性保障

    本文来自数据库内核专栏 在之前的文章中,介绍了MGR对数据可靠性.可用性和一致性的实现方案.简单来说,MGR通过基于paxos协议的多副本来实现数据的可靠性,通过多副本上的majority机制来实现可 ...

  10. 从源码分析 MySQL Group Replication 的流控机制

    Group Replication 是一种 Shared-Nothing 的架构,每个节点都会保留一份数据. 虽然支持多点写入,但实际上系统的吞吐量是由处理能力最弱的那个节点决定的. 如果各个节点的处 ...

最新文章

  1. 烽火18台系列之十一:刚需中的刚需——网站篡改监控
  2. Weblogic集群配置__部署润乾应用
  3. 数据库--循环语句:loop exit when/ end loop
  4. ABAP取字符串中的连续数字
  5. qt mysql 注册码_QT连接Oracle数据库并实现登录验证的操作步骤
  6. .net core 不启用 https_.NET 应用如何优雅的做功能开关(Feature Flag)
  7. Java面向对象(4)--封装和隐藏
  8. 搜索引擎基础概念(1)—— 倒排索引
  9. linux差分包升级流程,OTA 差分升级包的制作
  10. JavaScript异步编程原理
  11. android google地图点聚合样式修改
  12. 网页播放 .m3u8 视频文件
  13. 经典论文之OverFeat
  14. 独家对话 RT-Thread 创始人熊谱翔:国产操作系统厚积而薄发 | 人物志
  15. 模糊数学在计算机方面的应用,模糊数学理论在图像处理中的应用
  16. AP学科介绍|AP艺术与设计(2D/3D艺术与设计、绘画)
  17. 开源版本_开源绘画应用 Pinta 在 5 年后迎来新版本 | Linux 中国
  18. 知网、万方paperfree 查重的区别
  19. 经典的卷积网络架构(二)——GoogLeNet [inception v1] 详解
  20. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?

热门文章

  1. OSAL工作机制分析
  2. Maven 安装教程
  3. xci转nsp工具_【ns新系统11.0.0发布】安装工具已经更新至4.2【后面附上批处理内容修改】...
  4. TeeChart Pro FOR delphi 年底稳定版
  5. 用友畅捷通T+漏洞学习——DownloadProxy.aspx 任意文件读取漏洞
  6. 2014年南京航空航天大学计算机学院推荐研究生公示,2014年南航计算机科学与技术学院考研分数线及复试调剂办法...
  7. bpsk调制rician_fading信道的simulink仿真
  8. 论文学习13Reconstructing the house from the ad: Structured prediction on real estate classifieds(实体关系抽取)
  9. VCF vs Maf | 变异注释及整理为Maf格式
  10. 【研发管理】质量管理之约瑟夫·M.朱兰