Mysql插入2.6亿条垃圾数据后会发生什么?

欢迎访问 陈同学博客原文

问题现象

今天下午业务人员发现某功能无响应(该功能一天前上线),技术人员初步诊断后发现是某个DB不太正常,DB为Mysql 5.7.18

登陆DB服务器后,进行检测后发现了如下问题:

innodb_trx中发现异常事务

2个事务状态为 inserting ,数据量约为 2.65亿,事务开始时间为昨晚23点

dw_repayment_monitor空间扩展到73G

事务操作的表占用空间急剧扩大

binlog占满了日志盘

binlog设置的过期时间为10天,文件分片大小为100M。/var/log/mysql下产生了大量的binlog,写满了服务器上的一块日志磁盘

CPU/内存耗尽

top命令后发现CPU全被 mysqld 占用

23G内存全部是buff/cache,内存全部耗尽

解决过程

stop问题应用

首先,紧急stop了问题应用,避免问题升级。

kill 事务对应的mysql thread

kill掉 trx_mysql_thread_id中对应的mysql thread, kill之后,show processlist 已经无法查到这两个thread.

两个事务开始进行rollback

转移binlog

将这些天的binlog转移到其他磁盘,确保mysql binlog能够继续写入

尝试处理两个rollback事务

尝试处理掉两个事务,各种折腾之后,宣告失败。

  • 与技术&业务沟通后,知晓该表数据可以自动重建。因此以root用户打算直接删除该表,但是失败
Table is locked by the server
  • 发现 innodb_force_recovery,但是不敢乱用
  • 发现rollback速度为每秒约1W条,2.6亿数据。回滚需要约7个小时,此时是下午三点多

上报风险

由于自己没有这种情况的处理经验,目前已经无法进一步处理,因此上报至了CTO,避免进一步产生风险。

简要描述情况,CTO初步检测后,给出A/B方案:

A:先等待正常回滚

B:如果无法回滚完,考虑停止Mysql. 使用备份数据启用备库

最终结果

由于时间还来得及,采用了A方案,等待DB自然回滚。接下来就是不断检测事务rollback情况,2个rollback事务历经5个小时,到晚上9点终于回滚结束。在此期间,其他同事找到了相应的程序BUG,一个存储过程中的死循环自昨晚23点开始疯狂往表中插入数据。

由于这张表目前达到73G,因此删除再重建了此表,利用程序进行数据恢复。

总结

平时虽然能处理些Mysql常见问题,但很多极端情况还是无法处理。一方面是Mysql技能深度不够,另一方面也是经验的缺失。本文仅记录本次过程,同时也积累了些mysql待学习知识点,其他思考不再撰写。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

1 条评论
登录 后参与评论

相关文章

来自专栏腾讯大数据的专栏

PGXZ-腾讯全功能分布式关系数据集群

开头先解释下全功能什么意思,所谓的全功能指的是支持绝大部分的SQL特性,像主键,触发器,约束,函数,存储过程,跨节点join等等。而且这些特性的支持对业务完全透...

2348
来自专栏数据和云

预警揭秘:倒计时炸弹11.2.0.4前版本DB Link必须在2019年4月升级真相

在 Oracle 官方支持站点 MOS 上,最近发布了两篇告警文章,引发了用户的广泛关注,这两篇文章分别是: Oracle Databases Need to ...

3618
来自专栏IT技术精选文摘

窥探Nginx内部实现:如何为性能和规模进行设计

NGINX在网络性能方面处于领先地位,这一切都是由于软件的设计方式。尽管许多Web服务器和应用程序服务器使用简单的线程或基于进程的架构,但NGINX具有复杂的事...

1915
来自专栏架构之美

MongoDB在58同城的应用实践

1022
来自专栏张善友的专栏

MySQL 5.0和PostgreSQL 8.1

MySQL 5.0的发布已经有好些天了,添加了“企业应用”所需的特性,它终于支持存储过程和触发器了;不过,企业应用最大的需求之一,被很多初学者所忽略了的(这个现...

19010
来自专栏张善友的专栏

WPF/XML 资源及相关开源项目

昨天参加微软的一个小技术新一代设计工具 - Microsoft Expression 看到很多相关的工具.在网上一搜,找到下面这些东东,和大家分享一下. XAM...

1787
来自专栏无题

mongoDB运作原理与分片实现

觉得这一篇整理比较好,主要在于通俗易懂,逻辑清晰。但是网上转载的人太多了,我实在找不到原作者了。 关于MongoDB,我们能看到的资料,基本都是在指导大家如何使...

3164
来自专栏张善友的专栏

PostgreSQL 与 MySQL 相比,优势何在?

一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Serve...

2376
来自专栏芋道源码1024

【追光者系列】HikariCP连接池监控指标实战

5264
来自专栏大数据和云计算技术

MPP DB技术分类

随着数据量的增大,传统数据库如Oracle、MySQL、PostgreSQL等单实例模式将无法支撑大量数据的处理,数据仓库采用分布式技术成为自然的选择。 6.2...

3246

扫码关注云+社区