【Mysql】主从同步原理
mysql主从同步过程:
mysql的主从复制主要有三个线程:master:二进制日志转储线程(binlog dump thread)、slave:I/O线程(I/O thread)和SQL线程(SQL thread).master一条线程和slave中的两条线程。
- 主节点binlog,主从复制的基础是主库将数据库的所有变更记录到binlog,实际上主从同步的原理就是基于binlog进行数据同步的。
- 主节点二进制日志转储线程(log dump),当binlog有变动时,log dump线程读取其内容并发送给从节点
- 从节点I/O线程,接受binlog内容(这里是数据更新的部分),并将其拷贝到本地形成中继日志(Relay log)
- 从节点SQL线程读取relay log 文件内容对数据更新进行重放,最终保证主从数据库一致性。
注:主节点使用binlog文件 + position偏移量来定义主从同步的位置,从节点会保存其已接受到的偏移量,如果从节点发生宕机重启,则会自动从position的位置发起同步
由于mysql默认的复制方式是异步的,主库把日志发送给从库后不关心从库是否已经处理,这样会产生一个问题就是假设主库挂了,从库处理失败,这时候从库升级为主库后,日志就丢失了。
全同步复制:主库写入binlog后强制同步日志到从库,所有的从库执行完成之后长才返回给客户端,但是这样性能就会收到严重影响。
半同步复制:和全同步复制不同的是,半同步复制是从库写入日志成功返回ACK确认给主库,主库收到至少一个从库的确认就认为写操作完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY