zoukankan      html  css  js  c++  java
  • mysql主从同步原理

    mysql主从同步过程:
    mysql的主从复制主要有三个线程:master:二进制日志转储线程(binlog dump thread)、slave:I/O线程(I/O thread)和SQL线程(SQL thread).master一条线程和slave中的两条线程。

    • 主节点binlog,主从复制的基础是主库将数据库的所有变更记录到binlog,实际上主从同步的原理就是基于binlog进行数据同步的。
    • 主节点二进制日志转储线程(log dump),当binlog有变动时,log dump线程读取其内容并发送给从节点
    • 从节点I/O线程,接受binlog内容(这里是数据更新的部分),并将其拷贝到本地形成中继日志(Relay log)
    • 从节点SQL线程读取relay log 文件内容对数据更新进行重放,最终保证主从数据库一致性。
      注:主节点使用binlog文件 + position偏移量来定义主从同步的位置,从节点会保存其已接受到的偏移量,如果从节点发生宕机重启,则会自动从position的位置发起同步

    由于mysql默认的复制方式是异步的,主库把日志发送给从库后不关心从库是否已经处理,这样会产生一个问题就是假设主库挂了,从库处理失败,这时候从库升级为主库后,日志就丢失了。

    全同步复制:主库写入binlog后强制同步日志到从库,所有的从库执行完成之后长才返回给客户端,但是这样性能就会收到严重影响。
    半同步复制:和全同步复制不同的是,半同步复制是从库写入日志成功返回ACK确认给主库,主库收到至少一个从库的确认就认为写操作完成。

  • 相关阅读:
    C++实现数字媒体三维图像渲染
    C++实现数字媒体三维图像变换
    C++实现数字媒体二维图像变换
    C++实现glut绘制点、直线、多边形、圆
    语音识别之梅尔频谱倒数MFCC(Mel Frequency Cepstrum Coefficient)
    Java中的BigDecimal类精度问题
    spring 手册
    bootstrap 参考文档
    springBoot入门文章
    JNDI
  • 原文地址:https://www.cnblogs.com/liuzhidao/p/14805162.html
Copyright © 2011-2022 走看看