MySQL Binlog 相关知识(一)

来源:互联网 发布:金珠海 知乎 编辑:程序博客网 时间:2024/05/16 19:06

MySQL Binlog(本文主体是5.6,其它版本会说明)

MySQL Binlog是记录一些对数据库修改信息的日志。举例(增,改,查,set 等等)

首先说MySQL Binlog的作用是什么?

1. 复制用途,MySQL replication 的传输介质。通过记录一个MySQL实例上发生的改变,应用到另一个数据库上,来实现复制。

2. 数据的恢复,当一部分数据由于某些原因丢失,儿这段时间的binlog 还在,则可以通过binlog恢复这段时间的数据。


MySQL Binlog分为格式:1) Statement, 2) Row , 3) Mixed

他们之间的区别在哪里呢?

1) Statement

是语句形式的日志,目的在于将主端所有的对MySQL实例的修改语句记录到binlog中。

优点:在 statement 模式下,首先就是解决了 row 模式的缺点,不需要记录每一行数据的变化,减少了 binlog 日志量,节省 I/O 以及存储资源,提高性能。因为他只需要记录在 master 上所执行的语句的细节,以及执行语句时候的上下文的信息。

2) Row

是将一部分修改MySQL实例的语句变换形式,记录到binlog中。变换成以每一行的变化为单位的记录。比如,

{+(1,‘abc’)}                代表新增一行

{-(1,'abc'), +(1,'bbbbb')}  代表更新一行

{-(1,‘bbbbb’)}            代表删除一行

优点:在 row 模式下,bin-log 中可以不记录执行的 SQL 语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以 row 的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程或 function ,以及 trigger 的调用和触发无法被正确复制的问题。

3)Mixed

是说中和一下两种模式,有的用Row,有的用 statement。由MySQL自己做出选择。

0 0
原创粉丝点击