暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 基于日志点的复制与GTID 复制

零点小思随笔 2021-06-24
305

1、什么是基于日志点的复制

  • 传统的主从复制方式
  • Slave 请求 Master 的增量日志依赖日志偏移量
  • 配置链路时需指定 master_log_file 和 master_log_pos 参数

2、什么是基于 GTID 的复制

  • GTID = source_id:transaction_id。
  • Slave 增量同步 Master 的数据依赖其未同步的事务 ID。
  • 配置复制链路时, Slave 可以根据已经同步的事务 ID 继续自动同步。

什么是 GTID?

  • 全局唯一,且一个事务对应一个 GTID。
  • 替代传统的 binlog+pos 复制;使用 master_auto_position=1 自动匹配 GTID 断点进行复制。
  • 在传统的主从复制中,slave 端不用开启 binlog;但在 GTID 复制中必须开启。
  • Slave 端在接受 Master 的 binlog 时,会校验 GTID 值。
  • 为了保证主从数据一致性,多线程同时执行一个 GTID。

3、这两种复制方式各自的特点

基于日志点的复制基于 GTID 的复制
兼容性好同老版本 MySQL 以及 MariaDB 不兼容
支持 MMM 和 MHA 架构仅支持 MHA 架构
主备切换后很难找到新的同步点基于事务 ID 复制,可以很方便找到未完成同步的事务 ID
可以方便的跳过复制错误只能通过置入空事务的方式跳过错误

4、两种复制方式如何选择

  • 基于日志点的复制
    • 需要兼容老版本 MySQL 及 MariaDB
    • 需要使用 MMM 架构
  • 基于 GTID 的复制
    • 其他情况优先选择 GTID 的复制


文章转载自零点小思随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论