阿里云ECS上自建mysql5.6.46频繁异常关机

系统环境

阿里云ECS自建mysql数据库,操作系统centos7.5(32GB),数据库版本为5.6.46,每天通过kettle将源系统的业务数据增量同步到mysql数据中,kettle是单独部署在一台服务器上。

故障现象

数据库每隔一、两天就会异常关机,mysql_error.log没有任何报错信息,该数据库用来存储源系统同步过来数据。

处理方法与思路

刚开始看到故障现象有点无从下手,后台错误日志里没有任务报错信息,采取了如下处理方法
1、先将数据库启动起来(好消息能正常启动)
2、mysql日志级别配置不对,导致异常信息无法记录(检查配置参数)
log_warnings = 2
3、操作系统资源消耗情况
操作系统层面缺乏相应的监控软件,数据库异常关机后没有在错误日志里记录时间,不太好判断
4、操作系统日志
系统日志里也没有发现特别的信息
5、strace、pmap 跟踪mysql进程
strace -tt -v -p 1463 -o /data/mysql_pid_1463
这里跟踪了几个小时,数据库又异常关机了,跟踪日志里有这样一句信息mysql killed by signal,这里怀疑是内存溢出导致的,赶紧将数据库启动启来。
通过 pmap -p 1463跟踪数据库进程内存使用情况(使用了16GB)和系统内存使用情况 ,这里看到系统可用内存只剩100多M,available有3个多GB。这里直接调整了vm.min_free_kbytes = 45056系统参数,将最小内存保留调整为vm.min_free_kbytes = 2048000(2GB),通过sysctl -p生效。
调整后观察了两天,异常现象没有在发生

总结与思考

1、mysql错误日志为什么没有记录异常关机信息
2、系统最小保留内存vm.min_free_kbytes 建议1-4GB,16GB设置为1G,32GB设置为2G,大于32GB,保留4GB
3、为了调整了vm.min_free_kbytes就是起作用了,背后的原理是什么

猜你喜欢

转载自blog.csdn.net/weixin_41561946/article/details/107577222