共计 2466 个字符,预计需要花费 7 分钟才能阅读完成。
前言:
在 MySQL 零碎中,有着诸多不同类型的日志。各种日志都有着本人的用处,通过剖析日志,咱们能够优化数据库性能,排除故障,甚至可能还原数据。这些不同类型的日志有助于咱们更清晰的理解数据库,在日常学习及运维过程中也会和这些日志打交道。本节内容将带你理解 MySQL 数据库中几种罕用日志的作用及治理办法。
1. 谬误日志(errorlog)
谬误日志记录着 mysqld 启动和进行,以及服务器在运行过程中产生的谬误及正告相干信息。当数据库意外宕机或产生其余谬误时,咱们应该去排查谬误日志。
log_error
参数管制谬误日志是否写入文件及文件名称,默认状况下,谬误日志被写入终端规范输入 stderr。当然,举荐指定 log_error 参数,自定义谬误日志文件地位及名称。
# 指定谬误日志地位及名称
vim /etc/my.cnf
[mysqld]
log_error = /data/mysql/logs/error.log
相干配置变量阐明:log_error={1 | 0 | /PATH/TO/ERROR_LOG_FILENAME}
定义谬误日志文件。作用范畴为全局或会话级别,属非动静变量。
2. 慢查问日志(slow query log)
慢查问日志是用来记录执行工夫超过 long_query_time 这个变量定义的时长的查问语句。通过慢查问日志,能够查找出哪些查问语句的执行效率很低,以便进行优化。
与慢查问相干的几个参数如下:
- slow_query_log:是否启用慢查问日志,默认为 0,可设置为 0,1。
- slow_query_log_file:指定慢查问日志地位及名称,默认值为 host_name-slow.log,可指定绝对路径。
- long_query_time:慢查问执行工夫阈值,超过此工夫会记录,默认为 10,单位为 s。
- log_output:慢查问日志输入指标,默认为 file,即输入到文件。
默认状况下,慢查问日志是不开启的,个别状况下倡议开启,不便进行慢 SQL 优化。在配置文件中能够减少以下参数:
# 慢查问日志相干配置,可依据理论状况批改
vim /etc/my.cnf
[mysqld]
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/slow.log
long_query_time = 3
log_output = FILE
3. 个别查问日志(general log)
个别查问日志又称通用查问日志,是 MySQL 中记录最具体的日志,该日志会记录 mysqld 所有相干操作,当 clients 连贯或断开连接时,服务器将信息写入此日志,并记录从 clients 收到的每个 SQL 语句。当你狐疑 client 中的谬误并想要确切晓得 client 发送给 mysqld 的内容时,通用查问日志十分有用。
默认状况下,general log 是敞开的,开启通用查问日志会减少很多磁盘 I/O,所以如非出于调试排错目标,不倡议开启通用查问日志。相干参数配置介绍如下:
# general log 相干配置
vim /etc/my.cnf
[mysqld]
general_log = 0 // 默认值是 0,即不开启,可设置为 1
general_log_file = /data/mysql/logs/general.log // 指定日志地位及名称
4. 二进制日志(binlog)
对于二进制日志,后面有篇文章做过介绍。它记录了数据库所有执行的 DDL 和 DML 语句(除了数据查问语句 select、show 等),以事件模式记录并保留在二进制文件中。罕用于数据恢复和主从复制。
与 binlog 相干的几个参数如下:
- log_bin:指定 binlog 是否开启及文件名称。
- server_id:指定服务器惟一 ID,开启 binlog 必须设置此参数。
- binlog_format:指定 binlog 模式,倡议设置为 ROW。
- max_binlog_size:管制单个二进制日志大小,以后日志文件大小超过此变量时,执行切换动作。
- expire_logs_days:管制二进制日志文件保留天数,默认值为 0,示意不主动删除,可设置为 0~99。
binlog 默认状况下是不开启的,不过个别状况下,倡议开启,特地是要做主从同步时。
# binlog 相干配置
vim /etc/my.cnf
[mysqld]
server-id = 1003306
log-bin = /data/mysql/logs/binlog
binlog_format = row
expire_logs_days = 15
5. 中继日志(relay log)
中继日志用于主从复制架构中的从服务器上,从服务器的 slave 过程从主服务器处获取二进制日志的内容并写入中继日志,而后由 IO 过程读取并执行中继日志中的语句。
relay log 相干参数个别在从库设置,几个相干参数介绍如下:
- relay_log:定义 relay log 的地位和名称。
- relay_log_purge:是否主动清空不再须要中继日志,默认值为 1(启用)。
- relay_log_recovery:当 slave 从库宕机后,如果 relay log 损坏了,导致一部分中继日志没有解决,则主动放弃所有未执行的 relay log,并且从新从 master 上获取日志,这样就保障了 relay log 的完整性。默认状况下该性能是敞开的,将 relay_log_recovery 的值设置为 1 可开启此性能。
relay log 默认地位在数据文件的目录,文件名为 host_name-relay-bin,能够自定义文件地位及名称。
# relay log 相干配置, 从库端设置
vim /etc/my.cnf
[mysqld]
relay_log = /data/mysql/logs/relay-bin
relay_log_purge = 1
relay_log_recovery = 1
总结:
本篇文章次要讲述了 MySQL 中的几类日志的用处及设置办法,须要留神的是,上述几类日志,若不指定绝对路径,则默认保留在数据目录下,咱们也能够新建一个日志目录专用于保留这些日志。还有 redo log 和 undo log 没有解说,留在下篇文章吧。