今天在整理之前系统异常事故问题时想记录下当时事故发生的情况跟解决思路。
先介绍下生产环境情况:
- 服务器:VMware虚拟机(平台在管理,版本没具体问)
- 操作系统:RHEL 6.3 x86_64
- 数据库:MySQL V5.7.26(主主同步)
- 数据库备份工具:Percona XtraBackup (服务器已关机,版本不记得)
问题现象:
早上来上班是用户登录使用系统的高峰期,上班后不久就接到用户报问题反馈聊天消息发送后窗口显示空白
思路:
根据用户反馈在本地验证复现问题,验证问题确实存在查看监控系统告警信息,根据监控告警信息去检查具体服务运行情况。当检查服务运行情况时发现所有服务均运行正常,再查看监控系统告警开始解除,多人客户端发送消息验证也恢复正常。当时监控看到的告警是来自数据库服务器,为什么去检查数据库服务的时候看着运行也正常呢?又查看数据库服务器负载情况,相比平时上班高峰期负载明显更高,数据库服务器只部署了一个数据库服务,那就是找出引起数据库负载升高的原因。
最终原因锁定是上班时段数据库备份任未结束,加上上班高峰时段登录使用系统人员涌入造成数据库服务器负载升高影响正常提供服务。我们的数据库备份采用每天增备,七天一个全备,备份时间点是凌晨1点开始,当时数据库数据所占空间几百GB,随着业务数据增长,数据库数据存储所占空间也升高,备份完成时间也拉长。早上9点上班,当晚数据库做了一次全备,也就是说数据库备份从凌晨1点一直持续到早上9点多。查看从节点最近一次数据库全备时间也就2、3个小时就完成,为什么两台数据库备份性能差距这么大?同宿主机上其他虚拟机对数据库这台虚拟机CPU争抢?半夜凌晨没有什么太大业务不至于这样,检查了老半天想了各种可能性没找到原因……最后平台那边突发奇想,之前数据库做升级时为保障数据安全联系了虚拟平台那边对数据库主节点做了快照,升级成功后快照一直保留没有删除,要不把快照删除再看下?当时想着系统快照对数据库备份应该不会有什么影响吧,又找不到问题原因就决定删除快照试一下,联系虚拟平台那边删除快照后当晚做了一次数据库全备,惊喜的是删除快照后数据库备份性能比没删除之前快了很多,备份速度跟从节点相差无几,算是找到影响备份性能的原因了。
具体不清楚快照影响数据备份性能之间的原理,网上搜索看了下,没找到具体解答。虚拟机相对物理机来说快照功能是一大优势,没想到会在快照上踩坑。就这样记录下给有相同遭遇的朋友一个解决思路。