zoukankan      html  css  js  c++  java
  • mysql binlog的格式

    MySQL binlog的格式有三种:
    1. 基于SQL语句的复制(statement-based replication, SBR)
    2. 基于行的复制(row-based replication, RBR)
    3. 混合模式复制(mixed-based replication, MBR)
    相应地,binlog的格式也有三种:STATEMENT,ROW,MIXED。它主要用于mysql的复制技术。
    idb基本上都是供的基于行的复制。
     
    1. 基于SQL语句的复制(statement-based replication, SBR), (1) 优点: 历史悠久,技术成熟。 产生的binlog文件较小,比较节省空间。 binlog中包含了所有数据库更改信息,可以据此来审核数据库的安全等情况。 binlog可以用于实时的还原,而不仅仅用于复制。 主从版本可以不一样,从服务器版本可以比主服务器版本高。 (2) 缺点: 不是所有的UPDATE语句都能被复制,尤其是包含不确定操作的时候。 调用具有不确定因素的 UDF 时复制也可能出问题 使用以下函数的语句也无法被复制:
    • LOAD_FILE()
    • UUID()
    • USER()
    • FOUND_ROWS()
    • SYSDATE() (除非启动时启用了 --sysdate-is-now 选项) INSERT ... SELECT 会产生比 RBR 更多的行级锁
     
    2.基于行的复制(row-based replication, RBR), (1)优点: 任何情况都可以被复制,这对复制来说是最安全可靠的 多数情况下,从服务器上的表如果有主键的话,复制就会快了很多 复制以下几种语句时的行锁更少:
    • INSERT ... SELECT
    • 包含 AUTO_INCREMENT 字段的 INSERT
    • 没有附带条件或者并没有修改很多记录的 UPDATE 或 DELETE 语句 执行 INSERT,UPDATE,DELETE 语句时锁更少 从服务器上采用多线程来执行复制成为可能。
     
    (2)缺点: binlog 文件太大 复杂的回滚时 binlog 中会包含大量的数据 主服务器上执行 UPDATE 语句时,所有发生变化的记录都会写到 binlog 中,而 SBR 只会写一次,这会导致频繁发生 binlog 的并发写问题 UDF 产生的大 BLOB 值会导致复制变慢 无法从 binlog 中看到都复制了写什么语句,无法进行审计。
     
    1. 混合模式复制(mixed-based replication, MBR)。
     
    是上面两种方式的折中,对于能用
     
    对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED。
     
  • 相关阅读:
    Java 实现 蓝桥杯 生兔子问题
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 LeetCode 33 搜索旋转排序数组
    Java实现 LeetCode 33 搜索旋转排序数组
    Java实现 LeetCode 33 搜索旋转排序数组
    深入探究VC —— 资源编译器rc.exe(3)
    深入探究VC —— 编译器cl.exe(2)
    深入探究VC —— 编译器cl.exe(1)
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/8807875.html
Copyright © 2011-2022 走看看