mysql的主从复制原理及问题

2020-12-20  本文已影响0人  美雨知春

复制用途

  1. 实时备份
  2. 读写分离

复制模式

MySQL大概有三种复制模式:

  1. 异步复制,默认方式就是异步复制。主库在执行完客户端提交的事务后立即将结果返回给客户端,不关心从库是否已经接受并且处理。
  2. 全同步复制。 主库执行完一个事务,所有的从库都执行完之后才返回给客户端。
  3. 半同步复制。 主库执行完事务后,至少等待一个从库节点把binlog刷到replaylog文件才返回给客户端。

复制原理

复制过程一共需要三个线程。Master端写binlog线程,slave端IO线程和SQL线程。


在这里插入图片描述

大概流程如下:

  1.  slave端IO线程读取master.info文件,获取binlog的文件名和位置点,然后向master的IO线程请求binlog文件名和位置点。
    
    
  2.  Master端的IO线程会根据slave提供的信息和最新文件名和位置点发送给slave的IO线程
    
    
  3.  Slave的IO线程会把获取到的binlog的日志写到replaylog中,然后更新master.info信息
    
    
  4.  QL线程会定期去读取replay log,把二进制的日志解析成SQL语句,并且同步到从库中
    
    
    在这里插入图片描述

主从同步会出现的问题

  1.  数据复制延迟的问题
    
    
  2.  主库宕机,数据丢失的问题。
    
    

主从同步问题解决方案

  1.  **数据复制延迟**的问题可以通过升级数据库版本来解决,set global slave_parallel_workers=15;
    
    
  2.  **数据丢失**的问题可以修改异步复制为半同步复制。
    
上一篇下一篇

猜你喜欢

热点阅读