目录
binlog、redo log和undo log
一、日志概念
日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。本文重点关注二进制日志(binlog)和事务日志(包括redo log和undo log)
二、binlog
1. 概念
binlog
用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。binlog
是mysql的逻辑日志,并且由Server层进行记录,使用任何存储引擎的mysql数据库都会记录binlog日志。
MySQL 的二进制日志 binlog 记录了所有的 DDL 和 DML 语句(除了数据查询语句select、show等),以事件形式记录。
2. 使用场景
binlog的主要使用场景有两个,分别是主从复制和数据恢复
-
主从复制: 在Master端开启binlog,然后将binlog发送到各个Slave端,Slave端重放binlog从而达到主从数据一致
主从复制原理:
主要涉及三个线程: binlog线程、I/O线程和SQL线程
- binlog 线程 :负责将主服务器上的数据更改写入二进制日志(Binary log)中
- I/O 线程 :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)
- SQL 线程 :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。