Mysql主从同步原理

  • Replication 线程
  1. master与slave之间实现整个复制过程主要由三个线程完成:两个(SQL线程和IO线程)在slave端,一个(IO线程)在master端。
  2. 要实现MySQL的replication,必须打开master端的Binary Log(mysql-bin.xxx)功能。
  3. 整个复制过程实际上就是slave从master端获取日志然后在自己身上顺序执行日志中记录的各种操作。
  • 复制基本过程(异步的)
  1. slave上的IO线程连接master,请求从指定日志文件的指定位置(或者从最开始)之后的日志内容。
  2. master收到请求,负责复制的IO根据请求信息读取指定的日志,并返回(日志文件的地址也返回,方便下次直接根据地址请求)
  3. slave的IO收到信息后,将日志内容依次写入到slave端的relay log文件的最末端,存master日志文件的地址。
  4. slave的SQL线程检测到Relay Log中新加内容后,马上解析该Log文件的内容(Query语句),从而能保证两端的数据是一样的。
  • MySQL半同步模式
  1. 在这种模式下:master会等到binlog成功传送并写入至少一个slave的relay log之后才会提交,否则一直等待,直到timeout(默认10s)。当出现timeout的时候,master会自动切换半同步为异步,直到至少有一个slave成功收到并发送Acknowledge,master会再切换回半同步模式。结合这个新功能,我们可以做到,在允许损失一定的事务吞吐量的前提下来保证同步数据的绝对安全,因为当你设置timeout为一个足够大的值的情况下,任何提交的数据都会安全抵达slave。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值