Mysql binlog

1. 什么是 Binlog

MySQL 的二进制日志可以说 MySQL 最重要的日志了,它记录了所有的 DDL DML( 除了数据查询语句) 语句,以事件形式记录,还包含语句所执行的消耗的时间, MySQL 的二进制日志是事务安全型的。
一般来说开启二进制日志大概会有 1% 的性能损耗。二进制有两个最重要的使用场景 :
其一: MySQL Replication Master 端开启 Binlog Master 把它的二进制日志传递给 Slaves
来达到 Master-Slave 数据一致的目的。
其二: 自然就是数据恢复了,通过使用 MySQL Binlog 工具来使恢复数据。
二进制日志包括两类文件:二进制日志索引文件(文件名后缀为 .index )用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000* )记录数据库所有的 DDL DML( 除了数据查询语句) 语句事件

2. Binlog 的分类

MySQL Binlog 的格式有三种,分别是 STATEMENT,MIXED,ROW 。在配置文件中可以选择配 置 binlog_format= statement|mixed|row
三种格式的区别:
1 statement 语句级, binlog 会记录每次一执行写操作的语句。相对 row 模式节省空间,但是可能产生不一致性,比如“update tt set create_date=now() ”,如果用 binlog 日志进行恢复,由于执行时间不同可能产生的数据就不同。
优点:节省空间。
缺点:有可能造成数据不一致。
2 row 行级, binlog 会记录每次操作后每行记录的变化。
优点:保持数据的绝对一致性。因为不管 sql 是什么,引用了什么函数,他只记录 执行后的效果。
缺点:占用较大空间。
3 mixed statement 的升级版,一定程度上解决了,因为一些情况而造成的 statement模式不一致问题,默认还是 statement ,在某些情况下譬如:当函数中包含 UUID() 时;包含AUTO_INCREMENT 字段的表被更新时;执行 INSERT DELAYED 语句时;用 UDF 时;会按照ROW 的方式进行处理
优点:节省空间,同时兼顾了一定的一致性。
缺点:还有些极个别情况依旧会造成不一致,另外 statement mixed 对于需要对binlog 的监控的情况都不方便。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值