前言:
在 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 = 1slow_query_log_file = /data/mysql/logs/slow.loglong_query_time = 3log_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,即不开启,可设置为1general_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 = 1003306log-bin = /data/mysql/logs/binlogbinlog_format = rowexpire_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-binrelay_log_purge = 1relay_log_recovery = 1
总结:
本篇文章次要讲述了 MySQL 中的几类日志的用处及设置办法,须要留神的是,上述几类日志,若不指定绝对路径,则默认保留在数据目录下,咱们也能够新建一个日志目录专用于保留这些日志。还有 redo log 和 undo log 没有解说,留在下篇文章吧。