本文主要是介绍【mysql】如何实现主从同步,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今天猫哥总结一下mysql的主从同步。
原理步骤:
- master提交完事物后,写入binlog
- slave连接到master,获取binlog
- master创建dump线程,推送binlog到slave
- slave启动一个IO线程读取同步过来的master的binlog,并将其记录到relay log中继日志中
- slave再开启一个sql线程读取relay log事件并在slave执行,完成同步
- slave记录到自己的bin log中
由于msql默认的复制方式是异步的,主库把日志发送给从库后不关心从库是否已经处理,这样会产生一个问题就是假设主库宕机,从库处理失败,这时当从库升为主库后,日志就丢失了。这里衍生出两个概念:
全同步复制:
主库写入binlog后强制同步日志到从库,所有的从库都执行完成后才会返回给客户端,但是很显然这个方式数据库的性能会受到严重影响。
半同步复制:
和全同步不同的是,半同步的复制的逻辑是这样的,从库写入日志成功后返回ACK确认给主库,主库收到至少一个从库的确认就认为写操作完成。
这篇关于【mysql】如何实现主从同步的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!