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