MySQL Server 的日志文件一共有五种类型的日志.(Innodb redo log 除外, 它属于 Innodb 存储引擎实现的日不在此篇讨论)
The Error Log : 错误日志
错误日志, 顾名思义, 包含了 mysqld 在启动, 关闭和服务器运行期间发生的任何错误信息和正常信息. 这些信息都会写在 Error Log 上面. 相关的参数配置如下:
log-error = /data/mysqldata/3306/mysql-error.log
The General Query Log : 通用查询日志
通用查询日志, 是记录了 mysqld 正在做的事情, mysql 服务器会记录客户端连接和不连接, 以及来自客户端的每条 sql 语句的记录信息, 当然, 如果你想准确地知道客户端到底传了什么东西给 mysqld, 这个日志是非常的有用, 但是它非常影响服务器的性能, 所以, 一般情况下, 它是不开启的. 相关的参数配置如下:
- # 设置为 "0" 代表不开启通用查询日志
- general_log = 0
- general_log_file = /data/mysqldata/3306/general_statement.log
The Binary Log : 二进制日志
二进制日志, 包含了数据库的各种事件 (events), 这些事件描述了数据库的整个改动, 例如表创建的操作和数据的改动 (增, 删, 改操作). 它也包括了一些潜在的改动 (例如: 用了 一条 delete 语句, 但是什么都没有删除掉), 除非使用基于行复制 row-based logging, 否则会包含所有改动数据的 sql 语句. 二进制日志有两个重要的用途:
1.MySQL 复制 (For Replication) 二进制日志会记录 master 里面所有改动数据的语句, 然后 slave 会接受 master 的二进制日志, 从而根据二进制日志, 修改 slave 服务器上的数据.
2.MySQL 恢复 数据库的恢复操作需要二进制日志, 在对一个备份进行恢复之后, 记录在二进制日志中的 events 可以 re-executed, 这些 events 可以使数据库进行基于时间点的增量恢复.(Point-in-Time (Incremental) Recovery)
相关的参数配置如下:
- # 开启 binlog 并指定 binlog 的位置
- log-bin = /data/mysqldata/3306/binlog/mysql-bin
- #binlog 的格式有三种, STATEMENT 模式 (SBR),ROW 模式 (RBR),MIXED 模式 (MBR)
- binlog_format= mixed
- # 为每个 session 分配的内存, 在事务过程中用来存储二进制日志的缓存
- binlog_cache_size=32m
- #binlog 能够使用的最大 cache 内存大小
- max_binlog_cache_size=64m
- # 二进制日志的文件大小
- max_binlog_size=512m
The Slow Query Log : 慢查询日志
可以查看 mysql 服务器中运行比较慢的 sql 语句, 这个在日常工作中, 会经常用到. 日志中包含了一些超过了参数 long_query_time 指定时间的 sql 语句.
参数配置如下:
- # 设置为 "1" 代表开启慢查询日志
- slow_query_log = 1
- slow_query_log_file = /data/mysqldata/3306/slow_statement.log
- Relay log (与 replication 相关)
Relay log 存放 slave 端通过 I/O 线程从 Master 端读取的二进制日志信息, 然后在由 SQL 线程读取 relay log 日志信息并应用到 slave 端, 对 slave 端做和 master 一样的数据操作
relay-log-index 设置代表了记录 relay 日志存放位置的绝对路径. 相关参数配置如下:
- relay-log = /data/mysqldata/3306/binlog/relay-bin
- relay-log-index = /data/mysqldata/3306/binlog/relay-bin.index
来源: https://www.cnblogs.com/zhangshengdong/p/9195891.html