记crond导致备份失败的排查过程

  

  今天上班的路上收到一条短信,显示线上所有实例备份都失败了。备份失败是大事,于是到公司的第一件事儿就是排查备份失败的原因。

  这两天迁移了数据库管理平台,当然涉及到数据库备份功能,备份失败肯定和平台迁移有一定关系,我们先聊聊线上备份方案:

  

  目前线上的备份方案是:

    1、有一个前端页面可以配置备份任务

    2、备份任务配置好了,会自动刷新到系统的crontab定时通过ansible远程执行。

排查过程:

1、查看备份报告,显示所有的备份文件大小都是0,初步估计是备份失败了而不是元数据没有更新的问题。

2、去机器上面查看备份日志:

从日志上面查看是备份已经成功,但是去过去备份文件大小的时候抛文件不存在的异常。

不知道大家有没遇到这种情况,不过问看到这种现象首先想到的是有多个任务在跑,上一个备份还没完成就被另外一个备份任务将备份文件删除了。方面就初步出来了,就是要找到另外一个任务是怎么来的。

3、我先挑选了一个比较小的非核心集群,尝试了手动执行了crontab里面的备份命令,备份成功(这只是确认一下,因为平台迁移后测试过备份任务是没有问题的)

4、由于每一个集群的备份全部失败了,也就是说,两个备份任务能连接到线上所有的mysql机器,有这权限的只有3台服务器,于是去查了这三台服务器是否有重复的定时任务。结果只有一台机器上面才定时任务。

5、上面的尝试也没找到原因,就只能继续尝试,将备份任务的时间修改为当前时间+2分钟,让它定时执行看是否正常。

结果和晚上备份情况一样还是失败。

6、到这个时候我已经有点懵了,感觉这个太不科学了,期间还让开发平台的同事帮忙查看了代码里面生成crontab部分是否有问题,比如在其他机器上同时有生成,结果都是大失所望。

7、继续其他尝试,对比手动执行和定时任务产生的进程:

在目标机器使用ps -ef |grep backup.sh

a) 手动执行的时候:为2个进程

b) crontab定时执行的时候:为4个进程,

这个还是只能肯定定时任务有问题,并不能说明什么原因造成这个现象的。

只能继续蒙圈…………

8、在不知道怎么排查问题的时候,我做了一个新的尝试。

在配置好定时任务的时候,在中控机上使用service crond stop 将定时服务给停了,如果备份成功了那说明需要在其他机器找问题

9、这次尝试确实后备份确实成功了,但是在其他机器也找不到原因,这时候 已经很抓狂了,完全不知道什么情况了。

在准备放弃的时候,我在中控机上面使用 ps -ef |grep crond  查看crond 服务的情况。尼玛,内心10000个草泥马飞奔,居然还有有一个crond服务!!

使用service crond start 启动crond,

居然有两个服务。

看到这里终于可以松口气,看来问题就在这里了,

于是将多余的crond 服务 kill掉后备份就正常。

ps:crond 这个服务个人确实从来没发现可以启动两个的,后面我做了各种尝试,最终还是只有一个服务,至今也不知道这个第二个crond服务怎么起来的。

遇到自己感觉灵异的问题,我们要相信机器不会撒谎,我们要保持清晰的思路,坚持下去,终究能找到问题所在的。

话是这么说,但是事实上做起来还是很难的,我差点就放弃,准备将这套备份系统直接下了,用自己新写的一套来替代,本地已经测试ok,只要上线跑跑就可以了。不过还是挺庆幸当时没有放弃,如果放弃了,那么我也就错过了crond服务还有可能出现两个的奇观了!

嘿嘿,提个问题,如果你们遇到这种情况,会用什么思路来排查呢?

时间: 2024-10-15 10:11:14

记crond导致备份失败的排查过程的相关文章

解Bug之路-记一次中间件导致的慢SQL排查过程

解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排查问题的过程还是挺有意思的,正好博客也好久不更新了,就以此为素材写出了本篇文章. Bug现场 我们的分库分表中间件在经过一年的沉淀之后,已经到了比较稳定的阶段.而且经过线上压测的检验,单台每秒能够执行1.7W条sql.但线上情况还是有出乎我们意料的情况.有一个业务线反映,每天有几条sql有长达十几秒的超时.而且sql是主键更新或主键查询,更奇怪的是出现超时的是不同的sql,似

Kafka 异步消息也会阻塞?记一次 Dubbo 频繁超时排查过程

线上某服务 A 调用服务 B 接口完成一次交易,一次晚上的生产变更之后,系统监控发现服务 B 接口频繁超时,后续甚至返回线程池耗尽错误 Thread pool is EXHAUSTED.因为服务 B 依赖外部接口,刚开始误以为外部接口延时导致,所以临时增加服务 B dubbo 线程池线程数量.配置变更之后,重启服务,服务恢复正常.一段时间之后,服务 B 再次返回线程池耗尽错误.这次深入排查问题之后,才发现 Kafka 异步发送消息阻塞了 dubbo 线程,从而导致调用超时. 一.问题分析 Dub

MAXPIECESIZE与FORMAT参数设置不合理导致RMAN备份失败

今天去客户那里搭建DG,当创建RMAN备份集的时候,遇到了个问题,导致备份集始终无法生成,由于客户的备份集为10G左右,一次备份就要一个多小时,开始浪费了不少时间,诊断后发现,原来问题出在MAXPIECESIZE上,下面自己做了个测试,来说明这个故障现象和解决方法: [[email protected] ~]# su - oracle [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Product

Android开发遇到短信备份失败

今天做了一个有关ContentProvider的短信备份的小案例,遇到短信备份失败,费了一番周折后终于找到了问题所在 该案例是将短信写到一个xml文件然后保存在手机存储中实现短信的备份功能,关键实现代码如下 public class SmsUtils { public static void backUpSms(List<SmsInfo> smsInfos, Context context) { try { XmlSerializer serializer = Xml.newSerialize

记一次存储故障导致数据库坏块处理过程

记一次存储故障导致数据库坏块处理过程 线上架构说明:     IBM DS4800存储一套     P560小机HA架构一套     两个数据库资源组平时run在HA架构中的任意一台中,资源组全部使用共享存储 问题描述: 由于存储在数据库运行过程中发生了异常宕机,导致两个库存在不同程度的坏块 错误信息及解决过程 数据库A: A:root:/db2dumph/istclhis > 2016-04-09-04.26.10.787138   Instance:istclhis   Node:000 P

记一次erlang 节点CPU严重波动排查过程

新服务上线后观察到,CPU在10 ~ 70%间波动严重,但从每秒业务计数器看业务处理速度很平均. 接下来是排查步骤: 1. dstat -tam 大概每10s一个周期,网络流量开始变得很小,随后突然增大,CPU也激增. 网络流量变化和从性能计数器结果上并不符合,服务相关业务较为复杂,先找出那个业务占用网络流量. 2. iftop 找出流量最大的几个目标IP,并且周期的流量变为0随后激增. 通过IP 知道是外部http接口地址,因为接口调用是异步进行的,性能计算是执行开始记录的,而不是结束记录,因

记一次生产环境Nginx日志骤增的问题排查过程

摘要:众所周知,Nginx是目前最流行的Web Server之一,也广泛应用于负载均衡.反向代理等服务,但使用过程中可能因为对Nginx工作原理.变量含义理解错误,或是参数配置不当导致Nginx工作异常.本文介绍的就是福建开机广告Nginx的参数location处理静态文件配置不当引发的nginx日志骤增到14G的问题排期过程. 一.问题现象及系统介绍 现象:12月15日 21:02分,正在外面吃宵夜,手机收到监控平台的一条"服务器磁盘空间<20%"报警短信. 系统介绍:为了看此

一起数据库中过期用户数据堆积问题的排查过程

[文章摘要] 对于使用数据库来存放大量用户的软件来说,过期数据的清理机制需要慎重设计.如果设计不当,则会导致数据的误删除或清理不完全. 本文对某数据清理模块因参数配置不当而导致的过期用户数据堆积问题进行了详细的分析,为相关软件问题的分析及解决提供了有益的参考. 一.问题描述 在某软件系统中,为了让不同种类的用户享受对应的服务,引入了一个信箱服务等级的概念,即不同服务等级的用户具有不同的权限."一分钱,一分货",对于运营商来说,高服务等级的用户收取高的资费,提供高质量的服务. 为了维护不

MySQL xtrabackup备份失败记录

收到报警,某个端口备份失败,查看备份日志如下,显示有DDL操作导致的备份中断,查看当时的二进制日志,当时执行了一条添加字段的sql语句.目前只能重新执行备份,并修改备份时间,避免再发生类似情况. MySQL:5.7.11 xtrabackup:2.4.5 查找到官方修复bug的情况: Running DDL statements on Percona Server 5.7 during the backup process could in some cases lead to failure