阅读binary log文档
This commit is contained in:
@@ -1,3 +1,21 @@
|
||||
- [bin log](#bin-log)
|
||||
- [Introduce](#introduce)
|
||||
- [binary log构成](#binary-log构成)
|
||||
- [binary log用途](#binary-log用途)
|
||||
- [binary log variable](#binary-log-variable)
|
||||
- [binlog\_encryption](#binlog_encryption)
|
||||
- [log\_bin](#log_bin)
|
||||
- [binlog\_checksum](#binlog_checksum)
|
||||
- [binary log format](#binary-log-format)
|
||||
- [mysqlbinlog](#mysqlbinlog)
|
||||
- [sync\_binlog](#sync_binlog)
|
||||
- [Binary Logging Format](#binary-logging-format)
|
||||
- [STATEMENT](#statement)
|
||||
- [ROW](#row)
|
||||
- [MIXED](#mixed)
|
||||
- [mysql表更新操作的binary log记录格式](#mysql表更新操作的binary-log记录格式)
|
||||
|
||||
|
||||
# bin log
|
||||
## Introduce
|
||||
### binary log构成
|
||||
@@ -80,3 +98,31 @@ binary logging操作会在statement或transaction执行完成后立马被执行
|
||||
|
||||
Innodb在XA事务中对两阶段提交的支持确保了binary log和innodb data files的一致性。在innodb隐式支持了XA两阶段事务之后,如果sync_binlog被设置,那么当server崩溃后重启时,会对未提交事务做回滚,同时会扫描binlog中最后的部分来收集`xid`,从而计算出binary log file中的`最后有效位置`。mysql server会告知innodb完成所有写入到binary log中的prepared transactions,并且将binary log file截取到最后有效位置。这将会保证table content和binary log的一致性。
|
||||
|
||||
## Binary Logging Format
|
||||
在binary log中,会采用如下集中格式来记录消息:
|
||||
### STATEMENT
|
||||
mysql中的复制功能最初是基于sql statement的传播,sql statement将会从source实例发送到replica实例。这种行为被称作`statement-based logging`。
|
||||
|
||||
在启动server时,可以通过指定`--binlog-format=STATEMENT`来使用`statement-based logging`。
|
||||
|
||||
### ROW
|
||||
默认情况下,使用的是`row-based logging`。source实例会在`行数据如何被修改`的维度,向binary log中写入事件。
|
||||
|
||||
在启动server时,可以通过指定`--binlog-format=ROW`来使用`row-based logging`。
|
||||
|
||||
### MIXED
|
||||
在使用mixed-based logging时,`statement-based logging`会被默认使用,但是遇到下列描述的场景时,会自动切换到`row-based-logging`。
|
||||
|
||||
在启动server时,可以通过指定`--binlog-format=MIXED`来使用`mixed-based logging`。
|
||||
|
||||
随着使用的存储引擎不同,logging format也会收到影响和限制。
|
||||
|
||||
### mysql表更新操作的binary log记录格式
|
||||
对数据库中表数据的更改可以通过直接或间接的方式完成:
|
||||
- 直接: `INSERT, UPDATE, DELETE, REPLACE, DO, LOAD DATA, SELECT, and TRUNCATE TABLE`
|
||||
- 间接:`GRANT, REVOKE, SET PASSWORD, RENAME USER`
|
||||
|
||||
对于直接修改mysql表内容的语句,`log format`将会基于`binlog_format`配置。
|
||||
|
||||
对于间接修改表内容的语句,将会忽略`binlog_format`配置,直接以`STATEMENT`的形式写入到binary log中。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user