文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysql中如何设置binlog_format=MIXED

2024-04-02 19:55

关注

这篇文章给大家分享的是有关mysql中如何设置binlog_format=MIXED的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

 binlog_format有三种格式,STATEMENT、ROW和MIXED。statement在二进制日志里,记录的是实际的SQL语句,ROW在二进制日志记录的是实际行的变更。
  在二进制日志里,MIXED默认还是采用STATEMENT格式记录的,但在下面这6种情况下会转化为ROW格式:
  第一种情况:DNB引擎,表的DML操作会以ROW格式记录。
  第二种情况:SQL语句里包含了UUID()函数。
  第三种情况:自增长字段被更新了。
  第四种情况:包含了INSERT DELAYED语句。
  第五种情况:使用了用户定义函数(UDF)。
  第六种情况:使用了临时表。
 下边看一个案例,主从都是MySQL5.6,binlog_format被设置为MIXED格式,看看会有什么样的问题。
主库:

点击(此处)折叠或打开

  1. mysql> select * from test01;

  2. +------+--------+

  3. | id | name |

  4. +------+--------+

  5. | 1 | steven |

  6. | 2 | steven |

  7. | 3 | steven |

  8. | 4 | steven |

  9. | 5 | steven |

  10. | 6 | steven |

  11. +------+--------+

从库:

点击(此处)折叠或打开

  1. mysql> select * from test01;

  2. +------+--------+

  3. | id | name |

  4. +------+--------+

  5. | 1 | steven |

  6. | 2 | steven |

  7. | 3 | steven |

  8. | 4 | steven |

  9. | 5 | steven |

  10. +------+--------+

在master上执行如下SQL:

点击(此处)折叠或打开

  1. mysql> update test01 set name='StevenBJ' where id=6;

  2. Query OK, 1 row affected (0.07 sec)

  3. Rows matched: 1  Changed: 1  Warnings: 0


  4. mysql> select * from test01;

  5. +------+----------+

  6. | id | name |

  7. +------+----------+

  8. | 1 | steven |

  9. | 2 | steven |

  10. | 3 | steven |

  11. | 4 | steven |

  12. | 5 | steven |

  13. | 6 | StevenBJ |

  14. +------+----------+

  查看二进制日志没有报错,原因是采用的是mixed模式,但是默认采用的statement格式记录。
 修改binlog_format=row之后,在master执行刚才的语句,然后在master查看二进制日志:
[root@mysql data]# mysqlbinlog --no-defaults mysql-bin.000004
;
;
;
DELIMITER ;
# at 4
#170808 11:32:02 server id 1  end_log_pos 120 CRC32 0x078ce9f0 Start: binlog v 4, server v 5.6.36-log created 170808 11:32:02 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK;
BINLOG '
sjCJWQ8BAAAAdAAAAHgAAAABAAQANS42LjM2LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACyMIlZEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAfDp
jAc=
';
# at 120
#170808 11:45:20 server id 1  end_log_pos 192 CRC32 0x736e3ccf Query thread_id=2 exec_time=1 error_code=0
SET TIMESTAMP=1502163920;
SET @@session.pseudo_thread_id=2;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1;
SET @@session.sql_mode=1075838976;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=33;
SET @@session.lc_time_names=0;
SET @@session.collation_database=DEFAULT;
BEGIN
;
# at 192
#170808 11:45:20 server id 1  end_log_pos 244 CRC32 0xda92178e Table_map: `test`.`test01` mapped to number 81
# at 244
#170808 11:45:20 server id 1  end_log_pos 310 CRC32 0x65485ceb Update_rows: table id 81 flags: STMT_END_F
BINLOG '
0DOJWRMBAAAANAAAAPQAAAAAAFEAAAAAAAEABHRlc3QABnRlc3QwMQACAw8CHgADjheS2g==
0DOJWR8BAAAAQgAAADYBAAAAAFEAAAAAAAEAAgAC///8BgAAAAhTdGV2ZW5CSvwGAAAAClN0ZXZl
bkJlaWrrXEhl
';
# at 310
#170808 11:45:20 server id 1  end_log_pos 341 CRC32 0xbeced65f Xid = 55
COMMIT;
DELIMITER ;
# End of log file
ROLLBACK ;
;
;
[root@mysql data]# date
Tue Aug  8 11:47:01 CST 2017

感谢各位的阅读!关于“mysql中如何设置binlog_format=MIXED”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯