如何開啓MySQL coredump

如何開啓MySQL coredump

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. 參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章