drbd heartbeat mysql_Heartbeat+DRBD+MySQL Replication故障处理
不久前的一次机房网络故障,再一次对我们在Heartbeat+DRBD+MySQL数据库架构运维水平的一个考验,之前不止一次的测试与线上部署,还有之后大言不惭的关于该架构组件的所谓深入理解,在这一次不经意的意外面前又是“很囧”的收场,慌张呀!这次断网导致H-D-M全线异常,真是千载难逢,都让我们赶上啦lol: 下面就把这次的小幸运小幸福和大家分享下,以下是按照问题处理的先后顺序依次讲述。
- MySQL Replication同步异常
当发生网络故障一个小时后,从库io_thread和主库的连接被中断,抛出错误提示:[ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236),没想到竟遇到了一个古董级的Bug,有点喜出望外了(心想,我也能遇到bug)。最后解决办法,只能拿备份重新做一遍主从。后来,好奇想查查,究竟是怎么导致这个问题,竟发现,从库relay log中的记录比主库binlog中的记录多了2条insert和1条update(0_0!!!…不合逻辑呀?!!)。
- DRBD状态异常
处理完数据库同步问题后,当时并没有去查看DRBD的状态,直到周一才发现出问题了,简单地通过命令cat /proc/drbd就可以查看,DRBD的状态是否正常。查看/var/log/messages知道网络故障导致DRBD发生脑裂,彼此都认为对方已经死了,然后自己都将角色作为Primary,并积极获取资源,当时的两端的连接状态都为StandAlone,角色都为Primary。在发生脑裂不久后原active node被heartbeat强制将系统重启,最后,原active node角色变为Secondary/Unknown,原standby node角色依然是脑裂时的Primary/Unknown,两端的连接状态,分别为WFConnection和StandAlone。解决方法如下:
Step 1 - On New Secondary:
# service heartbeat stop
# service drbd stop
# drbdadm create-md r0
# service drbd start
# service heartbeat start
Step 2 – On New Primary:
# service drbd reload
之后就进入漫长数据同步阶段,重新将Primary上的数据块文件拷贝到Secondary上,最后完成同步。
- Heartbeat通信异常
通过查看/var/log/ha-dug日志,发现在出现网络故障后4分钟内,Heartbeat服务在active node与standby node间反复做资源释放与获取的操作,最后资源被之前的standby node获得,而之前的active node因为DRBD资源的问题,请求系统重启“CRIT: Resource STOP failure. Reboot required!”。系统重启后,Heartbeat服务并没有被开启,chkconfig里面没有把heartbeat设置为开机自启动,drbd是被设置开启自启的。其实,周日在处理问题时,没有考虑到heartbeat问题,理所当然的人为,资源是被正常切换,而认为heartbeat当时是正常(~脸红~:
# less /var/log/ha-dug — 发现问题
On Active Node(之前的standby–>切换后active):
WARN: Gmain_timeout_dispatch: Dispatch function for retransmit request took too long to execute: 390 ms (> 10 ms)
ERROR: Message hist queue is filling up (500 messages in queue)
On Standby Node(之前的active–>切换后standby):
WARN: Rexmit of seq 17224382 requested. 41 is max.
在当前的active node上执行如下命令:
# top — 注意有4个僵尸进程(zombie),同时会发现heartbeat的cpu使用达到100%左右
Tasks: 245 total, 2 running, 239 sleeping, 0 stopped, 4 zombie
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2106 root -2 0 422m 376m 4788 R 100.1 1.6 5002:17 heartbeat
# ps aux |grep defunct |grep -v grep — 找出是哪4个僵尸进程
root 15678 0.0 0.0 0 0 ? Z 10:57 0:00 [heartbeat]
root 17932 0.0 0.0 0 0 ? Z 13:48 0:00 [heartbeat]
root 19176 0.0 0.0 0 0 ? Z Jul11 0:00 [status]
root 19626 0.0 0.0 0 0 ? Z Jul11 0:00 [heartbeat]
既然,heartbeat服务有问题,那么很自然的就想到重启该服务,重启heartbeat是也会释放掉所有的资源的,会影响到正常业务,所以,选择到晚上闲时操作。出于安全为了不让资源切换到standby node上(其实,当时的情况heartbeat以及不能工作),我先停掉了standby node上的heartbeat,接着去停止active node上的服务,但是过了几分钟都没有相应,事实上,heartbeat的主进程已经僵死了,最后我“鼓足勇气”—kill -9 heartbeat-PID,然后先重启active node,再重启standby node,最后,查看日志一切都恢复正常了。之前,在做kill操作后,active node上的资源并没有释放,依然正常运行。
– — – END — – –
即便这次飞不小的劲,看似把问题都依依解决了,但心里依然没谱,对于之后可能发生的问题还是没有十足的把握;事实上,还是对于Heartbeat和DRBD技术本身,理解的不够透彻,Heartbeat对于资源的切换、检测后的判断以及对于日志输出的理解都还有很多疑惑,DRBD发生脑裂时资源争夺,会对数据块有多大影响,等等,所以就像田老师的感慨说的,我们之前做的仅仅就是能够把这个架构简单的打起来而已,根本谈不上专业的运维。
觉得文章有用?立即:
和朋友一起 共学习 共进步!
猜您喜欢
drbd heartbeat mysql_Heartbeat+DRBD+MySQL Replication故障处理相关推荐
- V 8 nfs+drbd+heartbeat
V 8 nfs+drbd+heartbeat nfs+drbd+heartbeat,nfs或分布式存储mfs只要有单点都可用此方案解决 在企业实际生产场景中,nfs是中小企业最常用的存储架构解决方案之 ...
- IV 12 MySQL+drbd+heartbeat
一主多从是最常用的DB架构方案,该架构部署简单.维护方便,通过代理或程序的方式可实现rw splitting,且多个从库通过LVS或haproxy实现LB分担r的压力,排除了r的单点问题,但仅有一个主 ...
- centos6 drbd heartbeat mysql高可用搭建与压测
centos6.8+drbd8.4.6+heartbeat3.0.4+mysql5.6.33 该方案不是性能最好的一个,但一定是在同等性能指标条件下,成本最低的方案之一.而且本方案所提供的架构上的高可 ...
- mysql+drbd+heartbeat高可用配置说明
环境描述: 系统版本:Red Hat Enterprise Linux Server release 5.5 (Tikanga)x86_64 2.6.18-164.el5 mysql版本:mysql- ...
- mysql heartbeat keepalived_LVS+keepalived+DRBD+heartbeat+mysql
wKiom1XQKIaC4YcsAAH6io_UKl8752.jpg IP地址规划: LVS: 10.1.1.23 主LVS+keepalived 10.1.1.22 备LVS+keepalived ...
- Centos 7 下 Corosync + Pacemaker + DRBD + psc + crmsh 实现 mysql 服务高可用
一.介绍 高可用,大家可能会想到比较简单的Keepalived,或者更早一点的 heartbeat,也可能会用到 Corosync+Pacemaker,那么他们之间有什么区别. Heartbeat到了 ...
- Keepalived+LVS+Nginx+DRBD+Heartbeat+Zabbix集群架构
2019独角兽企业重金招聘Python工程师标准>>> 本文由阿呆&zhdy合作完成! 一.准备工作: 1.1 6台模拟服务器: 确保每台机器 全部关闭 firewall 以 ...
- Centos6.3下DRBD+HeartBeat+NFS配置笔记
--------------闲 扯------------------ 这里首先感谢酒哥的构建高可用的Linux服务器的这本书,看了这本书上并参考里面的配置让自己对DRBD+HeartBeat+N ...
- Centos5.6 x86_64下安装DRBD+Heartbeat+NFS
Centos5.6 x86_64下安装DRBD+Heartbeat+NFS 2012-08-29 10:49:01 转载http://andrewyu.blog.51cto.com/1604432/9 ...
最新文章
- clion 工程打开选项 安全模式预览 Preview in Safe Mode 信任工程 Trust Project 简介
- c# hash 泛型_C# 泛型Dictionary (Hashtable)
- Java学习----方法的重载
- 深度剖析WinPcap之(九)——数据包的发送过程(8)
- java的实现内部类实现链表
- python连载第七篇~python世界里的注释符号
- Base64 编码/解码器
- MSSQL存储过程调用 C#DLL
- 从零实现一款12306抢票软件
- 《童趣》——《所见》《小儿垂钓》《村居》《浮生六记·童趣》 ——诗文诵读教学设计
- android Error obtaining UI hierarchy
- 人工智能基础——知识的概念
- 达人评测 r7 7730u和i5 12500h差距 锐龙r77730u和酷睿i512500h对比
- 导数的四则运算法则_高中生如何学习导数
- 算法85----手机九宫格
- Ubuntu 17.10安装搜狗拼音输入法
- TabIndex的问题
- Java中未加入修饰符_(整理)java修饰符
- 3GPP TS 23501-g51 中英文对照 | 5.3.1 General
- 性能测试报告,实例讲解
热门文章
- 如何在本地数据中心安装Service Fabric for Windows集群
- 腾讯游戏使用Microsoft Service Fabric案例
- 一步步学习EF Core(1.DBFirst)
- PHP-高并发和大流量的解决方案
- 【QGIS入门实战精品教程】4.5:QGIS打开Excel中的点坐标,并生成矢量文件
- ArcGIS实验教程——实验十八:叠置分析(Overlay Analysis)
- IOS学习笔记十九NSArray和NSMutableArray
- Java字节序,java整型数与网络字节序 byte[] 数组转换关系
- 《零基础看得懂的C语言入门教程 》——(九)C语言二维数组与循环嵌套
- mini2440:最简单的嵌入式linux驱动程序模块,mini2440:最简单的嵌入式Linux驱动程序模块 解决找不到mini2440……sample...