mysql binlog DDL_MYSQL5.1--MySQL binlog 地雷

上周在研究MySQL binlog格式的时候,发现了一些MySQL binlog的风险点,记录一下。

5.1版本后,MySQL引入了基于ROW方式的binlog格式,不同于Statement方式的是,ROW方式记录了变更的内容,而不仅仅是SQL。

通过mysqlbinlog工具可以解析查看,mysqlbinlog mysql-bin.000001就可以查看解出后的格式,Statement方式记录的SQL被还原,但是Row方式记录的内容,还是BASE64的结构。

mysqlbinlog -vv mysql-bin.000001就可以将Row方式记录的内容也解开来,可以看到类似这样的内容:

### UPDATE test.a

### WHERE

### @1=1 /* INT meta=0 nullable=0 is_null=0 */

### @2=’abc’ /* VARSTRING(32) meta=32 nullable=1 is_null=0 */

### SET

### @1=1 /* INT meta=0 nullable=0 is_null=0 */

### @2=’cba’ /* VARSTRING(32) meta=32 nullable=1 is_null=0 */

我们可以发现,binlog中并没有记录列名,只记录了顺序,这样会有什么风险呢?

单机的时候问题不大,但是在双Master的结构下,这问题可就大了,假设Master A Master B正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值