博客
关于我
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/

    你可能感兴趣的文章
    Oracle 12c中的MGMTDB
    查看>>
    Oracle 12c安装报错Installation failed to access the temporary location(无法访问临时位置)...
    查看>>
    Oracle 9i数据库管理教程
    查看>>
    ORACLE Active dataguard 一个latch: row cache objects BUG
    查看>>
    oracle avg、count、max、min、sum、having、any、all、nvl的用法
    查看>>
    Oracle BEQ方式连接配置
    查看>>
    oracle Blob保存方式,oracle 存储过程操作blob
    查看>>
    Oracle BMW Racing sailing vessel帆船图
    查看>>
    ORACLE Bug 4431215 引发的血案—原因分析篇
    查看>>
    Oracle cmd乱码
    查看>>
    Oracle Corp甲骨文公司推出Oracle NoSQL数据库2.0版
    查看>>
    oracle dblink 创建使用 垮库转移数据
    查看>>
    oracle dblink结合同义词的用法 PLS-00352:无法访问另一数据库
    查看>>
    Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
    查看>>
    oracle dg switchover,DG Switchover fails
    查看>>
    Oracle E-Business Suite软件 任意文件上传漏洞(CVE-2022-21587)
    查看>>
    Oracle EBS OPM 发放生产批
    查看>>
    Oracle EBS-SQL (BOM-15):检查多层BOM(含common BOM).sql
    查看>>
    Oracle EBS环境下查找数据源(OAF篇)
    查看>>
    oracle Extract 函数
    查看>>