在软件应用程序中,日志文件会记录系统中执行的操作以及执行操作的人员。如果出现意外情况,无论是安全漏洞、系统崩溃还是性能迟缓,日志文件都可以成为管理员的得力助手。MySQL 就有几个不同的日志文件,可以帮助你找出 MySQL 服务器内部发生的事情。今天的文章是关于 MySQL 日志的入门知识。日后,当我们讨论 Navicat Monitor for MySQL/MariaDB 的监控时,我们将引用这个主题。
日志类型
MySQL 支持多种日志类型,但请记住,默认情况下,除 Windows 上的错误日志外,不会启用任何日志。这是日志类型列表:
日志文件 | 描述 |
---|---|
错误日志 | 在启动、运行或停止 mysqld 时遇到的问题。 |
isam 日志 | 记录对 ISAM 表的所有更改。仅用于调试 ISAM 代码。 |
常规查询日志 | 创建连接和运行的查询。 |
更新日志 | 不推荐使用:存储所有更改数据的语句。 |
二进制日志 | 存储所有改变某些内容的语句。也用于复制。 |
慢速日志 | 存储所有运行时间超过 long_query_time 或不使用索引的查询。 |
其中最重要的是错误、常规、二进制和慢速日志,因此今天我们将重点关注前两个,而最后两个会留待下周。
错误日志
解决服务器问题的第一个资源是错误日志。MySQL 服务器使用错误日志记录与任何阻止服务器启动的问题相关的信息。你可在 my.ini 文件中指定的数据目录中找到错误日志。Windows 中的默认数据目录位置是“C:\Program Files\MySQL\MySQL Server 5.7\data”或“C:\ProgramData\Mysql”。请注意,默认情况下,“C:\ProgramData”目录是隐藏的,因此你可能需要更改文件夹选项以查看目录及其内容。
图 1-Windows 中的 MySQL 错误日志
对于其他平台,参考 log_error 配置变量可能会有所帮助。如果使用 Navicat 管理数据库,则可以使用“服务器监控”工具查找系统变量。你可以在“工具”主菜单命令访问它。
在“服务器监控”中,点击中间的“变量”选项卡,然后向下滚动到列表中的 log_error:
图 2-在 Navicat 的服务器监控工具中的 log_error 服务器变量
常规查询日志
顾名思义,常规查询日志提供了 MySQL 操作的常规记录。服务器会将客户端连接或断开连接以及从客户端收到的每个 SQL 语句写入此日志中。当你怀疑客户端应用程序中存在错误并想要确切知道客户端发送到数据库的内容时,常规查询日志就非常有用。
默认情况下,常规查询日志是禁用的。若要启用它,请将 general_log 变量设置为 1(或在 Navicat 中设置为 ON)。不分配 general_log任何值也会启用它。将其重新设置为 0(或在Navicat中设置为 OFF)将禁用日志。若要指定日志文件名,请将名分配给 general_log_file 变量。若要指定日志输出到一个文件,请使用 log_output 系统变量来分配文件名。MySQL 还可以将输出发送到 mysql 系统数据库中的 slow_log 表。实际上,你可以选择文件输出,表输出或两者都选择。我们将在下一篇文章中详细讨论这一点。
图 3-在 Navicat 的服务器监控工具中的 general_log 和 general_log_file 服务器变量