服务器上的某些查询经常导致 MySQL 服务崩溃。
我尝试对慢速查询日志进行排序,但是导致服务崩溃的原因背后有数百个查询堆积,因此试图找出整个混乱的根源实在是太困难了。
有没有日志具体显示mysql服务失败前执行的最后一个查询?
答案1
我有一个通用日志文件,记录 /var/run/mysqld/mysqld.log 中的每个查询,如果您启用该级别的日志记录,您可以查看记录崩溃时的时间戳,然后找到相关查询。
如何启用常规日志记录: mysql> SET GLOBAL general_log_file='/var/log/mysql.log'; 查询 OK,受影响 0 行(0.00 秒)
mysql> SET GLOBAL general_log = 1; 查询 OK,受影响 0 行(0.00 秒)
然后文件 /var/log/mysql.log 应该开始填充语句。完成后,禁用常规日志:
mysql> SET GLOBAL general_log = 0; 查询 OK,受影响 0 行(0.01 秒)
答案2
除了日志之外,您还可以使用查询SHOW FULL PROCESSLIST
来查看 MySQL 当前正在运行的内容,以找出是什么阻碍了它。使用时间列来查看连接已打开多少秒(这通常对应于查询已运行的时间)。