主从原理

Posted AJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了主从原理相关的知识,希望对你有一定的参考价值。

1、主从复制原理

主从复制主要用途
  1. 灾备,主down机实现主从切换
  2. 从库数据备份和数据分析不影响主库性能
  3. 主从读写分离,提升tps和qps

主从复制工作原理
 
  • 第一部分master记录二进制日志,binlog在事务提交时写入日志。
  • 第二部分slave将master的binary log拷贝到它自己的中继日志
    1. slave开始一个工作线程——I/O线程 连接主库
    2. I/O线程在master上打开一个普通的连接,然后开始binlog dump process。
    3. Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。
    4. SQL线程从中继日志读取事件,并重做其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。
    注意:
  1.  主库的dump 线程是因为从库的io 连接才起来的。
  2. 要分离看io thread和sql thread,可以关闭sql thread,io thread正常运行
主从复制主库宕机,我们需要面临的问题
  1. 到底提升谁作为主库
  2. 如何处理提升后的新主和旧主之间的日志延迟问题
    1. 补上这个日志。
    2. 旧主不可达,日志丢失,造成数据丢失【半同步复制解决这个问题】
  3. 新从指向新主,不同的从change master 到不同位置
  4. 新的从如何知道从新的主哪个位置开始索取日志

以上是关于主从原理的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的主从复制原理以及流程

zookeeper原理及主从模式应用分析

MySQL主从复制原理

主从原理

MySQL深入浅出主从复制数据同步原理

主从复制--01---主从复制的原理搭建