MySQL主从同步原理

MySQL的主从复制中主要有三个线程:

master binlog dump thread )、 slave I/O thread SQL thread ) ,Master⼀条线程和Slave中的两条线程。

MySQL主从同步的过程:

  1. 主节点 binlog,主从复制的基础是 主库记录数据库的所有变更记录到 binlog binlog 是数据库服务器启动的那⼀刻起,保存所有修改数据库结构或内容的⼀个⽂件。
  2. 主节点 log dump 线程,当 binlog 有变动时,log dump 线程读取其内容并发送给从节点。
  3. 从节点 I/O线程接收 binlog 内容,并将其写⼊到 relay log ⽂件中。
  4. 从节点的SQL 线程读取 relay log ⽂件内容对数据更新进⾏重放,最终保证主从数据库的 ⼀致性。
注:主从节点使⽤ binglog ⽂件 + position 偏移量来定位主从同步的位置,从节点会保存其已接收到的偏移量,如果从节点发⽣宕机重启,则会⾃动从 position 的位置发起同步

由于mysql默认的复制⽅式是异步的,主库把⽇志发送给从库后不关⼼从库是否已经处理,这样会产⽣⼀个问题就是假设主库挂了,从库处理失败了,这时候从库升为主库后,⽇志就丢失了。由此产⽣两个概念。

全同步复制:

主库写⼊ binlog 强制同步⽇志到从库 ,所有的从库都执⾏完成后才返回给客户端,但是很显然这个⽅式的话性能会受到严重影响。

半同步复制:

和全同步不同的是,半同步复制的逻辑是这样, 从库写⼊⽇志 成功后返回ACK确认给主库,主库收到⾄少⼀个从库的确认就认为写操作完成。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图图是个好孩纸~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值