您的位置:

包含mysqlmgr的词条

本文目录一览:

MySQL之MGR成员故障导致整个集群不可用的问题排查分析

2020-08-14

集群有三个成员memberA、B、C成,其中memberB意外故障停掉了,然后memberA 执行stop group_replication退去集群.此时整个集群不可用了(不能更新数据)。

集群中唯一剩余的成员memberC上看到的成员状态为:

但是memberA看到的状态为:

查看最后的存活的memberC的错误日志发现:

"Plugin group_replication reported: 'This server is not able to reach a majority of members in the group. This server will now block all updates. The server will remain blocked until contact with the majority is restored. It is possible to use group_replication_force_members to force a new group membership.' "

大概意思是当前的服务没法获取到成员的投票数,当前服务将会阻塞所有的更新,直到能够获取到投票数。可以使用group_replication_force_members 来强制组成一个新的组。

开始认为这是MGR功能的一个bug,不过后来想想这样的设定也是合理的,因为如果是当前的服务成员自身网络或其他问题导致的无法与其他成员的通信成功,那么这样的情况下这种设定也是合理的,因为不能让它自动重新组成一个组,否则就会可能出现多个重复的组。对于为什么组成员A执行stop group_replication后,剩余的memberC的视图中memberA还是online状态,可能是因为memberB已经unreachable,所以memberC去请求是否同意memberA退去时没有得到结果,一直阻塞等待造成的。此时,memberA的退出结果应该是无法多数投票通过的,因此memberA的退出结果应该是失败的。查看memberA的error日志,结果确实如此:

解决的方法是memberC也执行stop group_replication停掉这个组,再重新组成一个新的组。

此时memberA再重新加入就成功了:

结果:

以此类推,当有多个server组成的group而有多数成员已经意外故障时,导致整个组的停止更新,目前想到的解决的方法就是停掉现在的组,重新组成新的组。

ps:

增加Group Replication System Variables中group_replication_member_expel_timeout的大小,可以避免网络问题或执行事务慢造成的错误驱逐。

(16)mysql瓶颈 & MGR和一致性读 性能测试

容量: 看硬件

     InnoDB 最大容量64TB ,存储引擎将 InnoDB 表 保存在一个 表空间内( 原始磁盘分区,由数个文件创建)。这样, 表大小 能超过 单独文件最大容量 。

    MySQL 3.22( MyISAM )限制表大小 4GB ,最大表尺寸增加到65536TB(2567 – 1字节)。最大有效表尺寸通常是由 操作系统 对 文件大小限制 决定的, 不是 由MySQL内部限制决定。

最多 20亿个表 ,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度);

阿里《Java 开发手册》提出 单表行 500w 容量2GB ,才分库分表

与 MySQL 配置及硬件 有关,实际记录的条数无关。因为表 索引 装载 到内存,InnoDB buffer size 足够 ,才能全加载进内存,查没问题。达量级限时,导致 内存无法存储索引 ,产生磁盘 IO,性能下降。增加硬件配置解决。500w算折中

QPS在8400左右 :400个线程并发,插入100万条记录(4核2.33G、3G内存、SATA硬盘)

写: 90-100M/S(机械硬盘,7200转)预计kB_wrtn/s在90M左右

show variables like 'max_connections'  mysql当前最大连接数

set global max_connections=1000;  设置当前最大连接数为1000;mysql重启时失效,需要长期生效在my.ini 添加 max_connections=1000

从业务使用场景出发,根据RDS套餐类型和线上实际访问流量,来衡量性能指标,以便方便对标实际业务场景。

MySQL 5.7.21 Group Replication

MySQL 5.7.21 Group Replication with Consistent Read

同机房3节点、跨机房3节点

网络异常:长时间延时0.5ms,长时间延时2ms,丢包0.01%

场景1、2的差异可以衡量 跨机房网络 带来的 性能损耗

场景3关注在 网络质量变化 时带来的 性能变化

同机房3节点为 05 06 03    跨机房3节点为 05 06 01

机器部署:同IDC3台(永顺ys 03 05 06),跨IDC1台(广州gz 01)

同IDC RTT(06-05):RTT min/avg/max/mdev = 0.051/0.059/0.070/0.010 ms

跨IDC RTT(01-05):RTT min/avg/max/mdev = 0.739/0.749/0.810/0.027

    跨IDC的网络耗时是同 IDC的1.3倍 ,在设置 延迟0.5ms后 的网络质量:

同IDC RTT(06-05):RTT min/avg/max/mdev = 0.507/0.564/0.617/0.037

跨IDC RTT(01-05):RTT min/avg/max/mdev = 1.199/1.248/1.315/0.046

    跨IDC的网络耗时是 同IDC的2.2倍 ,在设置 延迟2ms后 的网络质量:

同IDC RTT(06-05):RTT min/avg/max/mdev = 1.963/2.054/2.161/0.064 ms

跨IDC RTT(01-05):RTT min/avg/max/mdev = 2.642/2.732/2.835/0.076 ms

参考:;aliyun

mysql MGR只能在同一内网吗?

这跟MySQL无关,看你们内网的网络拓扑以及网管进行的安全性管理了。

MySQL只是设置访问协议以及对应的端口等信息,跟网络无关。

1. MGR简介 | 深入浅出MGR

MGR是MySQL Group Replication的缩写,即MySQL组复制。

在以往,我们一般是利用MySQL的主从复制或半同步复制来提供高可用解决方案,但这存在以下几个比较严重的问题:

因为上述几个明显的缺点,因此MySQL推出了全新的高可用解决方案 -- 组复制,这是本系列文章要着重介绍的新特性。

MGR是MySQL 5.7.17开始引入的,但随着5.7版本逐渐退出历史舞台(MySQL 5.7已于2020年10月起不再做大的功能更新,只有修修补补以及针对安全更新),更多MGR相关特性都只在MySQL 8.0上才有。

因此,如果线上还有基于MySQL 5.7版本的MGR环境的话,建议尽快升级、迁移到MySQL 8.0版本。进一步提醒,推荐MySQL 8.0.22及之后的版本,整体会更稳定可靠,也有些很不错的新功能(不只是MGR方面的)。

MGR具备以下几个特点:

MGR可以选择单主(Single-Primary)模式

如上图所示,一开始S1节点是Primary角色,提供读写服务。当它发生故障时,剩下的S2-S5节点会再投票选举出S2作为新的Primary角色提供读写服务,而S1节点再达到一定超时阈值后,就会被踢出。

亦可选择多主(Multi-Primary)模式(再次 强烈建议选用单主模式 )

如上图所示,一开始S1-S5所有节点都是Primary角色,都可以提供读写服务,任何一个节点发生故障时,只需要把指向这个节点的流量切换下就行。

上述两种架构模式下,应用端通过MySQL Router连接后端在MGR服务,当后端节点发生切换时,Router会自动感知,对应用端来说几乎是透明的,影响很小,架构上也更灵活。

首先来个MGR的技术架构图:

MGR是以Plugin方式嵌入MySQL,部署更灵活方便。

事务从Server层通过钩子(hook)进入MGR API接口层,再分发到各组件层,在组件层完成事务Capture/Apply/Recover,通过复制协议层(Replication Protocol Logics)传输事务,最后经由GCS协调事务在各节点的最终一致性。

MGR节点间由组通信系统(GCS)提供支持,它提供了故障检测机制、组成员角色管理,以及安全且有序的消息传递,这些机制可确保在各节点间一致地复制数据。这项技术的核心是Paxos算法的实现,在MySQL里称之为XCom,由它充当MGR的通信引擎。

对于要提交的事务,组中的多数派节点必须就全局事务序列中给定的事务顺序达成一致。各节点做出决定提交或中止事务的选择,但所有节点都要做出相同的决定。如果发生网络分区,导致节点间无法达成一致决定,则在网络恢复前,MGR无法工作。

MGR支持单主和多主两种模式,在单主模式下,各节点会自动选定主节点,只有该主节点能同时读写,而其他(从)节点只能只读。在多主模式下,所有节点都可以进行读写。

相对于MariaDB Galera Cluster(以及基于此技术的Percona XtraDB Cluster,下面为了书写方便,都统称为PXC),个人认为MGR具备以下几个优势:

相对于传统主从复制(Replication),我认为MGR的优势有以下几点:

以上是我根据MySQL、MariaDB、Percona的资料整理得到的观点,不一定准确和全面,有不完善的地方还请留言指正。

本节主要介绍了什么是MGR,MGR的技术架构概要,以及MGR相对PXC的几个技术优势。

MGR是MySQL四部战略走的关键一环,依靠MGR和MySQL Shell、MySQL Router已实现了读节点扩展,以及写节点扩展(MGR多主模式),下一步预计实现sharding,让我们拭目以待。

相信MGR也是MySQL未来几年的重头戏,建议跟紧方向,不要错过这班列车。

因个人水平有限,专栏中难免存在错漏之处,请勿直接复制文档中的命令、方法直接应用于线上生产环境。请读者们务必先充分理解并在测试环境验证通过后方可正式实施,避免造成生产环境的破坏或损害。

Enjoy GreatSQL :)

包含mysqlmgr的词条

2022-11-25
包含chinesejstrucchem的词条

本文目录一览: 1、关于一个叫Chemene JSDraw for ipad的化学结构画图软件如何安装、使用? 关于一个叫Chemene JSDraw for ipad的化学结构画图软件如何安装、使用

2023-12-08
包含extjs6.0的词条

本文目录一览: 1、extjs6.0数据表格(带复选框) 2、谁能帮忙用EXTJS6.0 做出一份图表,里面要一个曲线图,一个饼状图,相互关联 3、在eclipse里使用extjs6.0版本应该引用哪

2023-12-08
包含cqm360omegajshdcq的词条

本文目录一览: 1、js 下载文件 不提示保存 直接下载 2、电影《冰封:永恒之门》完整版高清HD迅雷下载? 3、求一个免费升级的杀毒软件? 4、js中弹出对话框并下载文件 5、为什么360安全卫士提

2023-12-08
包含extjs定义关闭按钮的词条

本文目录一览: 1、extjs 定义window的时候有一个右上角有一个关闭按钮,点击时是隐藏操作,如何让它做关闭操作 2、Extjs 怎样关闭当前窗口 3、extjs 获取一个panel 如何禁用b

2023-12-08
包含golangbreak的词条

2022-11-26
包含cqm360longinesjshdcq的词条

本文目录一览: 1、求卡巴斯基6.0注册码,真诚跪求,骗人的和过期的不要来1 2、卡巴斯基的问题 3、卡巴基斯病毒库过期怎么办啊 求卡巴斯基6.0注册码,真诚跪求,骗人的和过期的不要来1 你先下载一个

2023-12-08
包含imgolang的词条

2022-11-27
包含cojsiderate的词条

本文目录一览: 1、considerate是什么意思 2、considerate和considerable的区别是什么? 3、Considerate是什么意思 4、单词considerate 和 co

2023-12-08
包含cjs.is.my.boy.的词条

本文目录一览: 1、自我介绍英语作文 2、is,my,baother,baby,boy,this连词成句? 3、MY BOY怎么用 4、我的男孩英语怎么写 自我介绍英语作文 英语的自我介绍主要是对自己

2023-12-08
包含asp.netvue.js的词条

本文目录一览: 1、在.net开发中,vue.js怎样融合进去,如何不与.net冲突并构建应用 2、ASP.net MVC视图文件中的{{item.text}}是什么意思,用法是什么样的 3、女生软件

2023-12-08
包含cutocad2014mjs插件的词条

本文目录一览: 1、cutocad2010中出现记事本,咋回事 2、用cutoCAD画图如何使标注的文字变大小? 3、电脑打开cutocad2014黑屏怎么回事 4、AUCUTOCAD 2014使用注

2023-12-08
包含config.json门罗币的词条

本文目录一览: 1、xml币怎么挖 2、config.json是什么文件 3、如何修改游戏mod中后缀为json的文件? xml币怎么挖 具体步骤如下:门罗币xmr挖矿需要准备两个软件:一个是门罗币钱

2023-12-08
包含stormgolang的词条

本文目录一览: 1、2017年,Web 后端出现了哪些新的思想和技术 2、webstorm 怎么添加 golang 求助 3、phpstorm golang开发环境如何配置 4、golang ide

2023-12-08
包含chenfjs4113的词条

本文目录一览: 1、@163.com邮箱怎么登录 2、wifi:T:WPA;S:WSJzxm;P:WSJ880303zxm;H:false是什么意思? 3、法士特小8档 型号为8JS85A.8JS85

2023-12-08
包含content报错js的词条

本文目录一览: 1、JS调用C#.net的webservice,使用"application/json"的ContentType出500错误 2、网页 js错误问题(null为空或不是对象) 3、网页

2023-12-08
包含python相关的函数知识的词条

2022-11-10
包含cocojs2d的词条

本文目录一览: 1、cocos2d 跟 cocos creator有什么区别吗 2、怎样看待越来越多cocos2dx程序员转unity3d,unity是否是大势所趋 3、一文秒懂厂商推送 4、目前做2

2023-12-08
包含gjm7ry的词条

2023-01-09
包含cdnbootstrap.min.js的词条

本文目录一览: 1、Bootstrap免费 CDN 加速服务/Bootstrap文件怎么引入 2、bootstrap怎么快速使用 3、bootstrap 导航条下拉菜单点击无反应? 4、怎么在页面里引

2023-12-08