博客
关于我
MySQL_主从复制--高可用
阅读量:547 次
发布时间:2019-03-09

本文共 1149 字,大约阅读时间需要 3 分钟。

MySQL 高可用性的核心机制之一是主备(NO:主从)延迟的概念——记录主库和从库执行事务的时间差。这种延迟直接影响系统的数据一致性和服务稳定性。本文将探讨主备延迟的根本原因及其在实际场景中的表现。

主备延迟原因分析

主备延迟的产生是主库写入 binlog 到备库接收并执行完成这整个过程的时间差。具体流程如下:

  • 就某一特定事务而言,主库 A 在时间 T1 完成写入 binlog。
  • 备库 B 接收到此 binlog 并记录其在系统中执行完成时间 T3。
  • 备库 B 的 T3 与主库 A 的 T1 之间的时间差即为主备延迟。
  • 关键点:网络延迟通常微乎其微,实际延迟主要源于备库的处理速度。使用 show slave status 可以获取 seconds_behind_master,反映主备延迟的具体时间值。

    主备延迟影响因素

  • 备库压力大

    • 备库设备配置通常低于主库,尤其是在主从模式下,备库既需处理来自主库的 binlog 又需作为读据库提供服务,工作负荷加重。
  • 大事务

    • 长时间运行的事务会导致主库直到完成当前事务后才发 write 到 binlog,进而影响从库的延迟。
  • 配置差异

    • 主从库参数设置不一致,可能导致资源冲突或 IO 操作效率低下。
  • 从库资源竞争

    • 一台服务器上部署多个从库或备库资源紧张,尤其是 IO 概率明显增加。
  • 备库执行状态

    • 备库处于延迟状态或执行备份操作占用 CPU 资源。
  • 表结构问题

    • 主库依托索引优化数据修改,但从库需进行全表扫描。通过调整 slave_rows_search_algorithms 参数可以优化部分延迟。
  • 延迟备库或空间不足

    • 延迟备库未能及时同步 transactions,或备库存储资源不足。
  • 双主结构(双M)分析

    在双主结构下,主备切换的逻辑和流程如下:

  • 初始状态确认

    • 检查备库的 seconds_behind_master 是否小于设定阈值(如-5秒),如不满足则重试。
  • 主库变只读

    • 为了防止数据写入冲突,主库设置为只读状态。
  • 备库变可读写

    • 只当备库的 seconds_behind_master 变为 0 时才能变更状态。
  • 切换完成

    • 将业务请求切向备库 B,同时关闭主库的只读模式。
  • 主备切换策略考量

    在双主结构下,业务切换的最优策略分为两种:

  • 可靠性优先策略

    • 在切换过程中保持系统不可写,确保数据完整性。优点显然是数据一致性,但可能造成短期服务中断。
  • 可用性优先策略

    • 本地直接切向备库,降低整体系统的延迟时间。可用性优先策略可能导致数据不一致问题,只适用于特定场景。
  • 根据业务需求选择合适的切换策略至关重要。通常,可靠性优先策略更适合对数据一致性要求较高的场景,而可用性优先则在结果可靠性不成)nфици重要时适用。

    转载地址:http://rfesz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现两个队列实现栈算法(附完整源码)
    查看>>
    Objective-C实现两数之和问题(附完整源码)
    查看>>
    Objective-C实现中介者模式(附完整源码)
    查看>>
    Objective-C实现中值滤波(附完整源码)
    查看>>
    Objective-C实现中国剩余定理(附完整源码)
    查看>>
    Objective-C实现中国剩余定理(附完整源码)
    查看>>
    Objective-C实现中文模糊查询(附完整源码)
    查看>>
    Objective-C实现串口通讯(附完整源码)
    查看>>
    Objective-C实现串逐位和(附完整源码)
    查看>>
    Objective-C实现串链式存储简单匹配(附完整源码)
    查看>>
    Objective-C实现主存储器空间的分配和回收(附完整源码)
    查看>>
    Objective-C实现乘方运算---m的n次方(附完整源码)
    查看>>
    Objective-C实现乘法持续性multiplicative persistence算法(附完整源码)
    查看>>
    Objective-C实现二分查找最接近的数值m(附完整源码)
    查看>>
    Objective-C实现二分查找最接近的数值m(附完整源码)
    查看>>
    Objective-C实现二叉搜索树算法(附完整源码)
    查看>>
    Objective-C实现二叉树层序遍历(附完整源码)
    查看>>
    Objective-C实现二叉树遍历算法(附完整源码)
    查看>>
    Objective-C实现二次方程复数算法(附完整源码)
    查看>>
    Objective-C实现二维向量以及各种向量操作算法(附完整源码)
    查看>>