上午发现mysql数据库errlog里面有报错:
[ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
相关如下
#err-log发现有ERROR异常
~]$ sudo tail -f /data/mysql/data/DBanalysis02.err|grep –i error
2016-02-19 16:51:13 8769 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
#但是查看mysql实例uptime发现并没有重启过,而且errlog里面也看不到实例restart的信息
~]$ mysql -uroot -p -e "status"|grep time
Enter password:
Uptime: 160 days 12 hours 26 min 8 sec
# 数据库版本5.6.11
?~]$ mysql -V
mysql Ver 14.14 Distrib 5.6.11, for Linux (x86_64) using EditLine wrapper
~]$ mysql -uroot -p -e "select version()"
Enter password:
+------------+
| version() |
+------------+
| 5.6.11-log |
+------------+
#OS版本
~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.1 (Santiago)
说明
查阅相关错误资料,发现这是Mysql的bug,在之前某些版本中有下面2种情况会抛出[ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress异常:
1、在查询执行排序的过程中实例确实进行了重启,导致查询中断。
2、在查询执行排序的过程中,通过 kill thread功能终止了查询的会话。
于是,在测试环境试了一把,如下:
#Mysql 5.6.11版本下
在执行有Using filesort操作的SQL过程中,在别的会话通过processlist看到正在执行的SQL语句的thread id,使用kill threaded 操作终止查询,在执行查询的语句下面会显示:ERROR 2013 (HY000): Lost connection to MySQL server during query
同时,在errlog下则抛出了:
2016-03-23 14:09:32 2414 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress 异常。
#Mysql 5.6.22版本下
重复上面的操作,errlog抛出的异常是:
并且在Using filesort操作SQL执行的过程中,restart mysql的errlog也是抛出同样的错误。
最终结论
在某些Mysql版本中
[ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress可能有2种情况抛出异常:
1、在查询执行排序的过程中实例确实进行了重启,导致查询中断。
2、在查询执行排序的过程中,通过 kill thread功能终止了查询的会话。
当出现此异常时,可以查看mysql实例的uptime和errlog等信息来确定mysqld是否真的crash过,如果没有crash(第2种情况),则是Mysql的Bug导致抛出的异常信息,可以忽略。
参考:
https://www.percona.com/blog/2013/12/30/error-mysqld-sort-aborted-server-shutdown-in-progress/
http://bugs.mysql.com/bug.php?id=18256