Problems with MMM for mysql(译文)
Problems with mmm for mysql
posted in MySQL by shlomi
原文:http://code.openark.org/blog/mysql/problems-with-mmm-for-mysql
出于兴趣和研究目的翻译了此文,最近也看了大众点评关于后台使用MMM来做高可用的一些信息(貌似2014年开始转用MHA来做HA),想评估下下MMM在实际生产环境当中的可用性。
正文:
我最近在部署MMM for MySQL的时候遭遇到了一些问题,这使我决定不把它应用到生产环境上。
就在我开始写下这篇文章的同一天,Baron 发表了What's wrong with MMM?.而我也发现MMM存在缺陷所以希望把我遭遇到的问题都呈现出来,在过去的两周中,
我做了两次不同的部署,在3个不同应用场景下遇到了4次故障。
在下面的所有场景中,都部署了一个活动/被动的MySQL双主同步,一个写入VIP,一个读VIP
问题1:(unjustified failover)非常规的failover操作会破坏MySQL复制
(unjustified failover)非常规的failover是很正常的操作,我可以忍受在数月中有几秒钟的宕机情况
但是在这两个不同的应用部署中,才间隔几天,就发生了两次让人闹心的unjustified failover非常规failover:MySQL复制故障
故障是怎么发生的?之前的活动Master,现在变成非活动的,并且日志position回到大概10天之前,我没有把日志保留10天那么多,所以这就是个突然的复制失败
到现在我还不能在MMM中定位原因,但是
1、没有电源故障
2、MySQL实例没有停掉
3、在发生Failover时复制还都是正常的
4、没有人工干预(我自己或别人使用过)
我明白在上面的情况发生时我没有把所有的都监控到,所以我不能责怪说“当电源关闭时Replication没有把主库信息发送到磁盘”。
我认为这非常可疑;但是,发生了两次,在两个不同的环境部署中。。。
这么多疑点,足以证明了!
说实话,这段我看的不是很明白,这个场景很奇怪
问题2:Master Hanging,没有failover
活动的Master宕机,可能是任何一个硬件或者软件原因引起的,它不执行任何任务工作,TCP/IP链接不上
但不仅仅只是链接不上:是停住不动了。如果尝试用ssh来连,链接会hang住:没有被拒绝链接。SSH客户端没有在合理的时间内终止链接。
嗯哼,是时候做故障转移了吧?
显然还是没有。告警的电话响了,邮件也发过来了。然后开始人工介入,这时候MMM 监控怎么说的呢?什么也没说!It's frozen。现在我没有去
读源码,我不会PERL!但是在我看来这个监控守护进程只是运行了一个单一的线程,它用这一个线程去连所有的主机,在链接活动Master时hang住了,
所以整个monitor都停了,没办法,我只好kill掉,我可以选择重现配置去忽略掉原活动Master,但是我还是决定让它重新工作,让它继续回复原装我
必须操作两次,我意识到该做Failover了。
为什么失败了?假设我的分析正确,这是一个重要的设计缺陷,绝不应该用一个单一进程去监控多路主机环境
这个问题倒是比较大,但我也不会PERL,不好下结论
问题3:no servers
系统挂了,不能操作数据库,这时候MMM监控会告诉我们什么呢?
两台机器都是HARD_OFFLINE。
嗯哼,两台机器都出于运行状态时,它们互相同步复制。并且都可以连接操作,MySQL是这样的。
但是没有一台机器是通过VIP来关联的
假如两台Agent 都未能意识到到它们的MYSQL服务器处于运行状态或者Monitor线程都没有接收到信息,这两种情况有问题吗?没有
MMM不会移走所有的VIP。那行,假如MMM确信两台都挂掉了,会怎样?MMM要把所有的VIP丢到其中的一台机器上,所以问题来了,
没有机器了,哪里出错了?
需要有机器来安置这些VIPs.
作者模拟出两台server都挂掉,这种情况出现的几率......
上面列出来的这些不意味这我对MMM的作者反感,我很尊敬他,这些不是容易解决的问题,显然也没有100%的解决方案,只是我不会再用MMM了。
Problems with MMM for mysql(译文)的更多相关文章
- MMM实现Mysql高可用
MySQL主主同步方案 l MySQL主主+Keepalived l MySQL+DRBD+Heartbeat 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主主方案, ...
- MySQL高可用性大杀器之MHA
MySQL高可用性大杀器之MHA 提到MySQL高可用性,很多人会想到MySQL Cluster,亦或者Heartbeat+DRBD,不过这些方案的复杂性常常让人望而却步,与之相对,利用MySQL ...
- MySQL集群搭建(3)-MMM高可用架构
1 MMM 介绍 1.1 简介 MMM 是一套支持双主故障切换以及双主日常管理的第三方软件.MMM 由 Perl 开发,用来管理和监控双主复制,虽然是双主架构,但是业务上同一时间只允许一个节点进行写入 ...
- 【mysql】高可用集群之MMM
一.复制的常用拓扑结构 复制的体系结构有以下一些基本原则: (1) 每个slave只能有一个master: (2) 每个slave只能有一个唯一的服务器ID: (3) 每个maste ...
- CentOS系统MySQL双机热备配置
1 概述 在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux.Windows以及UNIX.其中Linux备受青睐的主要原因有两个: 首先,Linux作为自由软件有两个 ...
- 常见的高可用MySQL解决方案
MySQL数据库作为最基础的数据存储服务之一,在整个系统中有着非常重要的地位,因此要求其具备高可用性是无可厚非的.有很多解决方案能实现不同的SLA(服务水平协定),这些方案可以保证数据库服务器在硬件或 ...
- MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的真正原因
在博客Linux mysql 5.6: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: N ...
- linux 安装mysql两种方式
yum -y install gcc gcc-c++ ncurses-devel cmake bison zlib zlib-devel libxml openssl dtrace ...
- mysql安装方法
Window版本 1.下载 MySQL Community Server 5.7.16 http://dev.mysql.com/downloads/mysql/ 2.解压 如果想要让MySQL安装在 ...
随机推荐
- 2016huasacm暑假集训训练四 数论_B
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/G 题意:求有多少x(1<=x<=n),使得gcd(x,n)>=m ...
- 使用TouchScript做2D按钮实现长按功能
导入TouchScript 下载地址:https://www.assetstore.unity3d.com/#/content/7394 把TouchScript和Touch Debugger两个预设 ...
- Twentydaysgone
这个暑假,在学校呆了一个月,考了两次科目二,被驾校坑了五百块,四级又挂了,段位差点掉到白银 参加二十多天工作室的培训,学长直接带着做itheima的某某安全卫士,跟着视频也迷迷瞪瞪敲完了代码,一知半解 ...
- matlab处理图像代码
1.图像的读取MATLAB中从图像文件中读取数据用函数imread(),这个函数的作用就是将图像文件的数据读入矩阵中,此外还可以用imfinfo()函数查看图像文件的信息(见例1)%例1:图像数据及图 ...
- EMF学习,为了实现可扩展可自定义的模型验证 - emf quary 与 OCL
http://blog.csdn.net/javaman_chen/article/details/6020050 //这里的验证强调的是condition的构造,基于查找来判断验证结果.支持OCL也 ...
- PHP调用MYSQL存储过程实例
PHP调用MYSQL存储过程实例 标签: mysql存储phpsqlquerycmd 2010-09-26 11:10 11552人阅读 评论(3) 收藏 举报 实例一:无参的存储过程$conn = ...
- Yii源码阅读笔记(三十)
Widget类是所有小部件的基类,开始,结束和渲染小部件内容的方法的注释: namespace yii\base; use Yii; use ReflectionClass; /** * Widget ...
- SYMMETRIC MULTIPROCESSORS
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION As demands for perfor ...
- Hibernate 异常提示_1
INFO: HHH000041: Configured SessionFactory: null九月 15, 2016 12:29:35 上午 org.hibernate.engine.jdbc.co ...
- linux下文件搜索命令学习笔记
1. locate:按照文件名搜索文件 locate filename 与find在整个操作系统中遍历搜索不同,locate命令在/var/lib/mlocate这个后台数据库中按照文件名搜索,所以优 ...