MySQL数据同步中的Binlog

MySQL 的 Binlog 是用来做 POINT-IN-TIME 的恢复和主从复制的,由数据库上层生戚,是 SQL 执行的逻辑日志,在事务提交完成后进行一次写入 。

Binlog 有如下 3 种格式 。

1 ) Statement

MySQL 的默认 Binlog 格式 。 每一条会修改数据的 SQL 都被记录到 bin-log 中, Slave 在复制的时候 SQL 进程会解析成和原来 Master 端执行过的相同的 SQL 后再次执行。

此格式产生 的日志量 比较少,能够节省 I/O 和存储资源,日志具有较高的可阅读性 。

但其需要在记录语句信息的同时也记录语句执行时的上下文信息,以保证在 Slave 端重放时能够得到和 Master 端同样的结果 。

此外,并非所有的 UPDATE 语句都能够被复制,尤其是在包含不确定操作的时候, 并且 Slave 的数据表必须和 Master 的保持一致 。

2) Row

日志中会记录每一行数据被修改的形式,然后在 Slave 端再对相同的数据进行修改 。 其不需要记录语句执行的上下文信息,但是需要记录每一条记录的改动,因此当受影响的记录很多时 , 日志量会非常大 ;由于加密,日志的可阅读性较低 。

3 ) Mixed

Statement 和 Row 的 结合 。 会根据执行的每一条具体的 SQL 语句来区别对待记 录 的日志形式 ,也就是在 Statement 和Row 之间选择一种 。

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » MySQL数据同步中的Binlog

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多