显然,我的一个同事杀死了一个使MySQL挂起(locking其他查询)的networking服务器,而不是查杀特定的查询,并且特别注意他忘记了关于查询的任何细节,阻止了其余的查询。 我希望我可以说这是第一次发生这种情况,但是大概每隔2到4个月(可悲的是,没有信息),我非常希望能够logging很长时间的查询他们完成与否。
现在,对于成功的查询,我们有完美可行的慢查询日志,但它只能在完成时结束,而不是在查询期间被终止。 有一个内置的解决scheme来logging查询,而他们仍然在运行? 现在,我每10秒钟就要运行一次守护进程/脚本查询:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE TIME > 30 AND USER != 'replication' AND USER != 'system user' AND USER != 'DELAYED' AND COMMAND != 'Sleep' AND ID != CONNECTION_ID();
…但是这感觉还不错,我想知道是否有一个我忽略的内在可能性?
请尝试pt-query-digest --processlist h=host1 --print --no-report ,如此处所述。 我从来没有试图在现场服务器上做一个摘要,只用它来处理现有的慢日志,但这似乎是你需要的工具。 您将需要安装Percona Toolkit。
虽然这涉及使用第二个软件(来自同一个供应商),但是您应该考虑在您的服务器之前放置一个MySQL代理 ,并使用它的非常广泛的functionlogging查询的开始和结束时间,即使它们被服务器取消。