MySQL中有七种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(error log)、慢查询日志(slow query log)、一般查询日志(general log)和中继日志(relay log)。其中,重做日志和回滚日志与事务操作息息相关,二进制日志记录了所有引起数据变化的操作,用于备份和还原,使用主从复制时也需要开启binlog。错误日志主要记录MySQL服务器启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况等。查询日志主要是记录MySQL的查询语句。慢查询日志记录了执行时间超过long_query_time秒的SQL语句。一般查询日志是默认开启的,记录了客户端连接、执行的SQL语句、执行时间等信息。中继日志是MySQL服务器与存储引擎之间通讯的桥梁,主要用于传递二进制日志信息。
重做日志(redo log)
记录了所有修改数据的操作,用于保证数据的一致性。在事务提交时,会先将修改操作记录到redo log中,再将修改操作写入磁盘的数据文件中。如果系统崩溃或者断电等情况发生时,可以通过redo log来恢复数据。
回滚日志(undo log)
记录了所有的回滚操作,用于保证数据的一致性。在事务提交时,会先将修改操作记录到undo log中,再将修改操作写入磁盘的数据文件中。如果系统崩溃或者断电等情况发生时,可以通过回放undo log来回滚数据。
二进制日志(binary log)
记录了所有引起数据变化的操作,用于备份和还原,使用主从复制时也需要开启binlog。默认存放在datadir目录下,在刷新和重启数据库是会滚动二进制日志文件,保证数据的一致性。
错误日志(error log)
主要记录MySQL服务器启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况等。在进行排查问题时的首选文件
慢查询日志(slow query log)
记录了执行时间超过long_query_time秒的SQL语句。可以通过查看该日志来分析数据库的性能问题。
通用查询日志(general query log)
记录了所有客户端链接、执行的SQL语句、执行时间等信息。可以通过查看该日志来分析数据库的性能问题。
中继日志(Relay log)
MySQL服务器与存储引擎之间通讯的桥梁,主要用于传递二进制日志信息。