MySQL中有以下几种日志:
1、error log
错误日志:主要记录 MySQL 服务器启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况等。排查问题的首选文件。
error log记录信息
- mysql执行过程中的错误信息
- mysql执行过程中的警告信息
- event scheduler运行时所产生的信息
- mysql启动和停止过程中的输出信息,未必是错误信息
- 主从复制结构中,从服务器IO复制线程的启动信息
- log_warnings的值为0,表示不记录警告信息。
- log_warnings的值为1,表示警告信息一并记录到错误日志中。
-
log_warnings的值大于1,表示"失败的连接"的信息和创建新连接时"拒绝访问"类的错误信息也会被记录到错误日志中。
注意:错误日志中记录的并非全是错误信息,例如 MySQL 如何启动 InnoDB 的表空间文件、如何初始化自己的存储引擎等,这些也记录在错误日志文件中。
2、binlog
二进制日志:binlog属于逻辑日志,记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。有Mixed、Statement、ROW 3种格式、不同格式各有优缺点,主要用于复制和数据任意时间点还原。
Binlog是Mysql sever层维护的一种二进制日志,与innodb引擎中的redo/undo log是完全不同的日志。启用了binlog的前提下任何引擎都会记录binlog,可通过mysqlbinlog工具解析binlog日志。
3、slow query log
慢日志:记录所有执行时间超过long_query_time(单位秒)和没有使用到索引的SQL语句。通过慢查询日志,可以查找出哪些执行效率低的查询语句,以便进行优化。
4、general log
一般通用日志:记录所有的客户端连接信息和执行过的SQL语句,假如你不知道哪个业务是否有使用,或某个请求来自哪里,可以把general log 开起来就比较容易查询。一般临时开启此功能,因为log的量会非常庞大。
5、relay log
中继日志:主从同步过程中是连接master和slave的核心,从节点产生的转储日志,用于从节点应用恢复。
6、redo log
重做日志:InnoDB层产生的,记录物理数据页修改的信息。有效减少事务提交刷盘的频次降低IO压力。redo log 保证了数据库的crash-safe能力,因为其属于物理日志的特性,恢复速度远快于逻辑日志。同时与在线热备份息息相关。
7、undo log
回滚日志:记录数据发生变更前的信息,在事务的修改记录之前,会把该记录的原值(before image)先保存起来(undo log)再做修改,以便修改过程中出错能够恢复原值或者供其他的事务读取。主要用于回滚(原子性),同时提供多版本并发控制(MVCC)下的快照读功能。