MySQL通过mysqldump进行逻辑备份触发DB crash
一、背景阐述
主机环境:CentOS7.X
MySQL版本:5.7.30
业务生产环境中,通过mysqldump对数据库进行逻辑备份是一个非常常见的事情。但是在一次客户报障中,遇到了一个非常奇葩的问题,即,数据库一切正常,只要通过mysqldump对数据库进行备份,MySQL数据库必然crash,并且能够100%复现。通过对MySQL错误日志和服务器系统日志的分析发现MySQL crash之前DB内存使用量暴增,直至OOM。所以我们推测,很有可能是mysqldump操作导致了MySQL数据库内存使用量异常,最终引起DB cash。接着就开始了疯狂的检索和查阅资料,想找到类似案例或者能够通过什么方法去限制mysqldump使用的内存量~
二、问题解决
2.1 资料收集
类似Crash的情况网上的案例并不是非常的对口,直至我们发现了MariaDB的一个已修复BUG:https://jira.mariadb.org/browse/MDEV-20699?focusedCommentId=200706&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-200706
我们通过这篇文章,找到了一个方法,通过设置 stored_program_cache参数来绕过该BUG对数据库mysqldump的影响。MySQL官网对该参数的介绍:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
2.2 效果验证
(1)查看stored_program_cache默认值
mysql> show variables like "stored_program_cache"; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | stored_program_cache | 256 | +----------------------+-------+ 1 row in set (0.01 sec)
(2)临时调整stored_program_cache值为16
mysql> set global stored_program_cache=16; Query OK, 0 rows affected (0.00 sec) mysql> show variables like "stored_program_cache"; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | stored_program_cache | 16 | +----------------------+-------+ 1 row in set (0.00 sec)
(3)再次进行mysqldump备份数据
经测试再次进行mysqldump数据备份时,一切正常,至此mysqldump备份触发DB Crash问题得到解决!!!
作者:UStarGao
链接:https://www.starcto.com/systemtool/266.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-08-08UCloud ULB负载均衡https解决方案
- 2021-05-29MySQL 索引介绍
- 2021-11-03Redis持久化解决方案实操
- 2021-04-23Linux 预防SSH暴力破解神器—DenyHosts
- 2022-07-04DD命令压测、备份与还原磁盘一文详解