在过去的两年中,我们使用 MySql 保存 C++ 项目的夜间构建数据。数据库相当小,上面有几个触发器。最近它开始频繁地出现更新失败。我们删除了一些不必要的旧记录,情况有所改善,但仍然会出现故障。
我们尝试查看错误日志,但没有什么重要信息(除非错误日志配置不正确)。
有人能提示一下我们应该去哪里找吗?是否有任何诊断模式可以帮助我们追踪问题?
我很乐意详细说明缺失的信息。
答案1
你没有提到服务器类型,所以我假设它是某种 Linux。如果是这样,你可以在你的my.cnf
,该文件通常位于类似 的地方/etc/mysql/my.cnf
。以下是我的相关代码片段:
# you need the debug USE flag enabled to use the following directives,
# if needed, uncomment them, start the server and issue
# #tail -f /tmp/mysqld.sql /tmp/mysqld.trace
# this will show you *exactly* what's happening in your server ;)
#log = /tmp/mysqld.sql
#gdb
#debug = d:t:i:o,/tmp/mysqld.trace
#one-thread
请注意调试 USE 标志上面提到的是我使用的发行版(Gentoo)的参考,其他发行版可能会或可能不会安装带有调试支持的 MySQL。如果没有,它们通常会将其作为单独的包。例如,在 Ubuntu 上,我认为这个包叫做libmysqld-pic
。
无论如何,请确保已启用调试my.cnf
,重新启动服务器并/tmp/mysqld.sql
观察/tmp/mysqld.trace
以查看发生了什么。请记住不要永久启用此功能,因为这会对性能造成很大影响。