GreatSQL 通过错误日志信息判断数据库实例是如何关闭的
背景概述
在一次客户的数据库实例连接不上了,需要我们排查一下原因,通过查看数据库实例进程已经不存在了,在错误日志中没有发现其他报错信息,发现有shutdown
的字样出现,怀疑是某个用户手动关闭了实例。我们通过以下测试,发现是由于用户关闭了主机所导致的。
问题复现
本次测试基于GreatSQL 8.0.32-24
,通过以下测试了解不同情况下关闭数据库实例后错误日志会记录哪些信息,之后可以通过错误日志中的信息了解到数据库实例是如何被关闭的。
1.正常关闭 shutdown
查看错误日志
可以看到正常关闭实例时,会显示是由哪个数据库用户执行的 shutdown 命令:SHUTDOWN from user root
2.kill 关闭
通过 kill 命令关闭实例
查看错误日志
可以看到通过 kill 命令关闭实例会显示 SHUTDOWN from user <via user signal>
,不会显示具体执行 kill 的操作系统用户
3.kill -9 关闭
通过 kill -9 关闭数据库实例
查看错误日志
如果数据库实例进程不存在,并且错误日志信息中没有明显的数据库实例关闭的信息,可考虑数据库实例是通过 kill -9
关闭的
4.主机 reboot/shutdown
通过正常关闭主机,从而导致数据库实例关闭
查看错误日志
可以看到通过正常关闭主机导致数据库实例关闭会显示 SHUTDOWN from user <via user signal>
,不会显示具体执行关闭主机的的操作系统用户
5.主机异常断电
通过模拟主机异常断电,从而导致数据库实例关闭
查看错误日志
如果数据库实例进程不存在,并且错误日志信息中没有明显的数据库实例关闭的信息,可考虑数据库实例是由于主机异常断电关闭的。
总结
1.正常关闭数据库实例时,错误日志中会记录是由那个数据库用户关闭的,如 SHUTDOWN from user root
2.通过 kill 命令关闭数据库实例以及关闭主机(reboot/shutdown)导致数据库实例关闭,错误日志中会记录 SHUTDOWN from user <via user signal>
,可通过 history 命令查看是否执行过 kill 操作或关闭主机的操作
3.通过 kill -9 命令关闭数据库实例以及主机异常断电导致数据库实例关闭,错误日志中不会记录导致数据库实例关闭的信息,可通过 history 命令查看是否执行过 kill -9 操作
版权声明: 本文为 InfoQ 作者【GreatSQL】的原创文章。
原文链接:【http://xie.infoq.cn/article/d1192229d47060a4ce66f4a51】。文章转载请联系作者。
评论