最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现.甚至有些异常还比较诡异,最后 root cause 分析颇费周折.那实际业务当中咱们如何能快速的定位线上 MySQL 问题,修复异常呢?下文我会根据两个实际 case,分享下相关的经验与方法. 1.Case1:部分数据更新失败 某天渠道同学反馈某报表极个别渠道数据为 0,大部分渠道数据正常.这个数据是由一个统计程序每天凌晨例行更新的,按理来说,要么全部正常,要么全部失败,那会
案例描述 在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下: (1)insert into backup_table select * from source_table (2)DELETE FROM source_table WHERE Id>5 AND titleWeight<32768 AND joinTime<'$daysago_1week'
今天遇到一个问题,因为mysql所在机器的磁盘满了导致mysql死锁,连查询select都不行,要不是看mysql日志,还真找不到原因. 通过show processlist能看到第一条是个update语句,需要写入数据,因为磁盘满了,写入不了,导致mysql死锁. 查看mysql日志可以发现有告警日志:"[Warning] Disk is full writing './mysql-bin.000123' (Errcode: 28). Waiting for someone to free s
mysql 死锁检查 今天看了一篇关于死锁检查的blog. Advanced InnoDB Deadlock Troubleshooting – What SHOW INNODB STATUS Doesn’t Tell You, and What Diagnostics You Should be Looking At One common cause for deadlocks when using InnoDB tables is from the existence of foreign