环境:CentOS7.6 MySQL5.7.26
MySQL中有各类各样的log,让我们简单认识一下吧。
一、genernal log
记录建立的客户端连接和执行的语句。
开启功能,vim /etc/my.cnf:
[mysqld]
general_log=on
general_log_file=/dir/file_name
注:
1.默认关闭,建议不启用;
2.不给定路径时默认的文件名以 hostname
.log 命名。
二、slow log
记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。
开启功能,vim /etc/my.cnf:
[mysqld]
slow_query_log=on
long_query_time=10
slow_query_log_file=/mysql/log/mysql_slow.log
注:
1.默认关闭,建议启用;
2.时间单位为秒,查询获取锁(包括锁等待)的时间不计入查询时间内;
三、error log
记录mysql服务的启停时正确和错误的信息,还记录启动、停止、运行过程中的错误信息。
开启功能,vim /etc/my.cnf:
[mysqld]
log-error=/mysql/log/mysql_error.log
注:
1.默认关闭,建议启用;
2.如果没有指定file_name,则默认的错误日志文件为datadir目录下的 hostname
.err
四、redo log
1、redo log是重做日志,提供前滚操作;
2、redo log是innodb层产生的,只记录该存储引擎中表的修改,记录的关于每个页的更改的物理情况。
开启功能,vim /etc/my.cnf:
[mysqld]
innodb_log_files_in_group=2
innodb_log_file_size=1G
innodb_log_group_home_dir=./
注:
1.默认开启;
2.默认存放至数据目录下,根据需求调整大小、组数、位置、缓存大小等;
五、undo log
1、undo log是回滚日志,提供回滚操作和多个行版本控制(MVCC);
2、undo log一般是逻辑日志,根据每行记录进行记录。(可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。)
3、undo log也会产生redo log,因为undo log也要实现持久性保护。
开启功能,vim /etc/my.cnf:
[mysqld]
innodb_undo_directory=./
innodb_file_per_table=on
注:
1.undo log默认存放在共享表空间中;
2.存放目录默认为数据目录下;
3.如果开启了 innodb_file_per_table ,将放在每个表的.ibd文件中。
六、bin log
记录数据库所有引擎中更改数据的语句,可用于数据复制、同步。
开启功能,vim /etc/my.cnf:
[mysqld]
server-id=1
log_bin=/mysql/log/log_bin
max_binlog_size=1G
注:
1.默认关闭,需要建置同步备库时开启;(需指定server-id)
2.持statement、row、mixed三种形式的记录方式;(sql、数据变化、混合)
3.如果没有给定file_name,则默认为datadir下的主机名加"-bin",并在后面跟上一串数字表示日志序列号。
七、relay log
主从复制时备库使用的日志。从库通过复制io线程拉取binlog,写入到relay log中,sql线程读取relay log中的事务信息,并进行应用,实现主备库数据一致。
开启功能,vim /etc/my.cnf:
[mysqld]
relay_log=/mysql/log/relay_log
注:
1.默认关闭,需要建置同步备库时开启;
2.如果值为空,则默认位置在数据文件的目录;
3.其他参数自行查询。