MySQL配置参数core-file

搬瓦工机场JMS

1. MySQL core-file 参数
Linux环境下,进程崩溃生成core文件以便于程序调试和问题排查。进程在启动前,设置core file size 大于0,进程崩溃通常就会生成core file dump文件。MySQL在系统提供的core file生成机制之外,额外添加了一个参数–core-file,来控制是否生成core文件。
// mysqld.cc{"core-file", OPT_WANT_CORE, "Write core on errors.", 0, 0, 0, GET_NO_ARG,NO_ARG, 0, 0, 0, 0, 0, 0},

case (int) OPT_WANT_CORE:    test_flags |= TEST_CORE_ON_SIGNAL;    break;

// my_init_signals()if (test_flags & TEST_CORE_ON_SIGNAL)    {      // Change limits so that we will get a core file.      struct rlimit rl;      rl.rlim_cur= rl.rlim_max= RLIM_INFINITY;      if (setrlimit(RLIMIT_CORE, &rl))        sql_print_warning("setrlimit could not change the size of core  files to"                          " ‘infinity’;  We may not be able to generate a"                          " core file on signals");    }
代码版本:5.7.19
从以上代码可以看出,启动MySQL进程时,加上–core-file参数,即使linux系统没有配置生成core file,MySQL也能通过自己在代码中调用系统函数来让自己进程在崩溃时生成core file。
2. core file 操作系统相关参数设置

echo 2 >/proc/sys/fs/suid_dumpablechmod 0777 /mysql/crashecho /mysql/crash/core.%e.%t.%p > /proc/sys/kernel/core_patternecho 1 >/proc/sys/kernel/core_uses_pid
/proc/sys/fs/suid_dumpable 取值为0,1,2,具体意义如下:

  • 0 表明调用 seteuid和 setgid 改变用户或组的进程,将不能产生core文件
  • 1 表明debug模式,任何进程都可以产生core文件
  • 2 表明生成的core文件只有root用户可读,更加安全地保护内存数据

/proc/sys/kernel/core_pattern 设置的core文件存放目录和core文件名称,注意磁盘空间要足够存储core file。
/proc/sys/kernel/core_uses_pid 控制core文件扩展名是否带中进程id。

3. 模拟MySQL崩溃,生成core文件
测试当mysqld进程崩溃时,是否会产生core file:
kill -SEGV mysqld进程号
4. gdb调试core文件 
gdb调试core文件:
gdb /usr/local/mysql/bin/mysqld core.mysqld.1573578046.1207
/usr/local/mysql/bin/mysqld 为MySQL进程路径。

进入gdb命令行界面后,就是一些gdb的命令了,这里不再赘述。

未经允许不得转载:搬瓦工VPS_美国VPS » MySQL配置参数core-file

赞 (0) 打赏

相关推荐

    暂无内容!

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏