0
点赞
收藏
分享

微信扫一扫

如何开启MySQL coredump

如何开启MySQL coredump

目录

  • ​​如何开启MySQL coredump​​
  • ​​1. 先调整系统级别参数开启coredump生成​​
  • ​​2. 调整core file ulimit的限制​​
  • ​​3. 调整MySQL参数开启coredump​​
  • ​​4. 参考链接​​

1. 先调整系统级别参数开启coredump生成

## 默认的coredump文件名是core,通过将core_uses_pid设置为1,coredump文件名将成为core.PID,如果core_pattern不包含%p(默认不包含)并且设置了core_uses_pid,则.PID将附加到文件名中
echo 1 > /proc/sys/kernel/core_uses_pid
cat /proc/sys/kernel/core_uses_pid

## 1 "debug" (may cause privileged information to be leaked)
## 2 "suidsafe" (recommended) - protect privileged information by having the core dump be owned by and only readable for root
echo 2 > /proc/sys/fs/suid_dumpable
cat /proc/sys/fs/suid_dumpable

## 将core文件生成到指定目录,确保空间足够且有权限写入
echo "/data/mysql/core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern
cat /proc/sys/kernel/core_pattern

## 示例文件
core-mysqld-11-996-1000-2928-1643008064
- 程序为mysqld
- signal码为11
- 程序运行用户uid为996
- 程序运行用户gid为1000
- 程序进程号为2928
- 生成core的时间戳为1643008064,可用date -d @1643008064解析为易识别的时间格式

## 参数说明
%p pid
%p global pid
%i tid
%I global tid
%u uid
%g gid
%d dump mode(matches PR_SET_DUMPABLE and /proc/sys/fs/suid_dumpable)
%s signal number
%t UNIX time of dump
%h hostname
%e executable filename
%E executable path

2. 调整core file ulimit的限制

注意调整的是程序运行用户的core file,以及该参数的修改是对下一次启动的服务生效,已启动的服务不生效,可以用​​cat /proc/${PID}/limits |grep core​​查看当前的限制

## 查看当前core的大小限制
[root@10-186-61-162 mysql]# ulimit -a|grep core
core file size (blocks, -c) 0

## 调整core的限制为unlimited
[root@10-186-61-162 mysql]# ulimit -c unlimited
[root@10-186-61-162 mysql]# ulimit -a|grep core
core file size (blocks, -c) unlimited

## 在RHEL7上可以对MySQL服务单独配置CORE限制
[root@10-186-61-162 system]# cat /etc/systemd/system/mysql_3310.service |grep Limit
LimitNOFILE = 65535
LimitCORE=infinity

3. 调整MySQL参数开启coredump

loose_innodb_buffer_pool_in_core_file  = 1
core-file

4. 参考链接

  • ​​https://access.redhat.com/solutions/649193​​


举报

相关推荐

0 条评论