mysql的binlog删除机制_怎么避免从删库到跑路 -- 详解 mysql binlog 的配置与使用

上面的配置项中,有一项是 binlog_format,他指定了 binlog 的日志格式,有以下三个选项可选

STATEMENT 模式(SBR)

mysql binlog 的默认格式

在这个模式下,binlog 只会记录可能引起数据变更的 sql 语句

优点

这个模式下,因为没有记录实际的数据,所以日志量和 IO 都消耗很低,性能是最优的

缺点

但有些操作并不是确定的,比如 uuid() 函数会随机产生唯一标识,当依赖 binlog 回放时,该操作生成的数据与原数据必然是不同的,此时可能造成无法预料的后果

由于所有的操作都依赖于先后顺序,所以像使用 AUTO_INCREMENT 生成主键 id 的 insert 方法、数据的恢复等都必须串行执行

ROW 模式(RBR)

在该模式下,binlog 会记录每次操作的源数据与修改后的目标数据,而不会记录 sql 语句,从 mysql 5.6.2 版本开始,你可以通过在配置文件中指定 binlog_rows_query_log_events 配置项为 0 或 1 来决定是否同时记录 sql 语句

但对于 GRANT,REVOKE,SET PASSWORD 等管理语句仍然是以 SBR 方式来进行记录的

优点

他的主要优势在于可以绝对精准的还原,从而保证了数据的安全与可靠

并且复制和数据恢复过程可以是并发进行的

缺点

该模式最大的缺点在于 binlog 体积会非常大,同时,对于修改记录多、字段长度大的操作来说,RBR 记录时性能消耗会很严重

同时,由于数据是通过二进制方式记录,无法直观的看到 binlog 究竟记录了什么信息

MIXED 模式(MBR)

顾名思义,MIXED 模式是对上述两种模式的混合使用,对于绝大部分操作,都使用 SBR 来进行 binlog 的记录,只有以下操作使用 RBR 来实现:表的存储引擎为 NDB

使用了uuid()、user()、current_user()、found_rows()、row_count()、sysdate() 等不确定函数(now() 函数仍然会以 SBR 方式记录)

使用了 insert delay 语句

使用了临时表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值