今天遇到执行 show engine innodb status\G 时,显示的信息不全DEADLOCK相关信息太多,后面好多都没了
原因:
这是mysql客户端的一个bug:BUG#19825,交互式客户端限制了输出信息最大为 64KB,因此更多的信息无法显示。
解决办法
解决方法有两种:
1. 启用 innodb_status_file
修改 my.cnf,增加类似下面一行
innodb_status_file = 1 
就可以了。
2. 启用 innodb_monitor
mysqld在线运行时,创建 innodb_monitor 表,即可记录相关信息到日志文件
mysql> create table innodb_monitor ( id int ) engine = innodb; 
相关的信息就会输出到 *.err 日志文件里了。
innodb_status_file 说明:
InnoDB发送诊断输出到stderr或文件,而不是到stdout或者固定尺寸内存缓冲,以避免底层缓冲溢出。作为一个副效果,SHOW INNODB STATUS的输出每15秒钟写到一个状态文件。这个文件的名字是 innodb_status.pid,其中pid是服务器进程ID。这个文件在MySQL数据目录里创建。正常关机之时,InnoDB删除这个文件。如果发生不正常的关机,这些状态文件的实例可能被展示,而且必须被手动删除。在移除它们之前,你可能想要检查它们来看它们是否包含有关不正常关机的原因的有用信息。仅在配置选项innodb_status_file=1被设置之时,innodb_status.pid文件被创建。