• MySQL主从同步原理


    mysql主从复制用途

    实时灾备,用于故障切换
    读写分离,提供查询服务
    备份,避免影响业务
    

    主从部署必要条件

    主库开启binlo日志(设置log-bin参数)
    主从server-id不同
    从库可以连同主库 

    主从复制原理图

    从库的io线程

    去请求主库的bin-log二进制,并将得到的binlog日志写到relay log(中继日志中)

    主库的dump线程

    用来给从库的I/O线程传送binlog二进制日志;

    从库的SQL线程 

    会读取从库中得relay-log文件的日志,并且解析成具体的操作进行持久化,实现主从同步
    

    该架构存在的问题

    主库宕机可能存在数据的丢失;当然从库也可能宕机,我们可以部署双从;
    从库只有一个SQL线程,当用户操作过多时。
    主库生成大量的bin--log二进制日志,从库可能帮不过来

    我们使用的是MHA软件

    MHA可以运行在每台mysql服务器上,当MHA检测到master出现故障时,
    会将记录到最新数据的slave提升为新的master。 并将其他所有的slave重新指向新的master。
    整个故障转移对程序来说是完全透明的

    MHA缺点

    在MHA自动切换故障的过程中,MHA试图向宕机的主服务器上记录二进制日志。
    最大程度的保证数据不丢失,但这并不总是可行的。 例如,如果主服务器硬件故障或无法通过ssh访问。
    MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。  

    半同步复制

    mysql半同步复制可以大大降低数据丢失的,MHA可以与半同步复制结合起来。
    如果一台slave服务器接收到了最新的二进制日志。
    HMA可以将最新的二进制日志同步给其他的slave。
    因此可以保证所有节点数据的一致性

    MHA工作原理总结为以下几条

    •从宕机的master服务器上保存二进制事件
    •识别含有最新数据的slave
    •提升一个slave为新的master
    •将其他的slave连接到新的maser进行复制
    

      

      

  • 相关阅读:
    Echarts使用笔记
    vue导出pdf
    mvn上传pom/jar至Nexus私服
    Linux下安装Redis
    国内首发,这款 Serverless 云原生一体化部署工具正式开源!
    使用云托管快速部署CMS内容管理系统
    云开发走进高校,腾讯云联合新工科联盟探索新生工程教育模式
    从0到3000万,TA们用云开发这样做
    基于 ThinkJS 的云开发体验
    使用小程序·云开发静态托管实现免鉴权h5跳转小程序
  • 原文地址:https://www.cnblogs.com/charon2/p/10336179.html
Copyright © 2020-2023  润新知