MySQL 基础知识梳理学习(五)----半同步复制

MySQL 基础知识梳理学习(五)----半同步复制,第1张

概述1.半同步复制的特征 (1)从库会在连接到主库时告诉主库,它是不是配置了半同步。 (2)如果半同步复制在主库端是开启了的,并且至少有一个半同步复制的从节点,那么此时主库的事务线程在提交时会被阻塞并等待 1.半同步复制的特征

(1)从库会在连接到主库时告诉主库,它是不是配置了半同步。

(2)如果半同步复制在主库端是开启了的,并且至少有一个半同步复制的从节点,那么此时主库的事务线程在提交时会被阻塞并等待,结果有两种可能,要么至少一个从库节点通知它已经收到了所有这个事务的binlog事件,要么一直等待直到超过配置的某一个时间点为止,而此时,半同步复制将自动关闭,转换为异步复制。

(3)从库节点只有在接收到某一个事务的所有binlog,将其写入并Flush到Relay Log文件之后,才会通知对应主库上面的等待线程。

(4)主库如果在等待的过程中,等待时间已经超过了配置的超时时间,没有任何一个从节点通知当前事务,那么此时主库会自动转换为异步复制,当至少一个半同步从节点赶上来时,主库便会自动转换为半同步方式的复制。

(5)半同步复制必须是在主库和从库两端都开启时才行,如果在主库上没打开,或者在主库上开启了而在从库上没有开启,主库都会使用异步方式复制。

2.半同步的实质

在主库被阻塞的过程中(等待从库返回消息),主库处理线程不会返回处理当前事务。当阻塞被激活之后,系统才会把控制权交给当前线程,然后继续处理当前事务余下的事情。处理完成之后,此时主库的事务已经提交,同时至少会有一个从库也已经收到了这个事务的binlog,这样就尽可能地保证了主库和从库的一致性。

3.同步方式的区别
同步方式不同点
异步复制主库将事务binlog事件写入到binlog文件中,此时主库只会通知一下Dump线程发送这些新的binlog,然后主库就会继续处理提交 *** 作,而此时不会保证这些binlog传到任何一个从库节点上。
全同步复制当主库提交事务之后,所有的从库节点必须收到、APPLY并且提交这些事务,然后主线程才能继续做后续 *** 作。这里面一个很明显的缺点就是,主库完成一个事务的时间变长了,性能降低了。
半同步复制介于全同步复制和全异步复制之间的一种,主库只需要等待至少一个从库节点收到并且Flush binlog到Relay Log文件即可,主库不需要等待所有从库给主库反馈。同时,这里只是一个收到的反馈,而不是已经完全执行并且提交的反馈,这样就节省了很多时间。

相比异步复制,半同步复制提升了数据完整性,可以保证在一个事务提交成功之后,这个事务就至少会存在于两个地方。

4.注意

半同步复制对集群整体的性能会有一些影响,因为事务提交 *** 作由于对从库节点反馈的等待而变慢了,这也是对提高数据完整性的一种权衡。变慢时间的长短至少是TCP/IP的一次发送和接受所用的时间,因为它需要首先将binlog发送出去,然后再等待从库给主库反馈消息。这也意味着,半同步复制在网络状况良好且主从节点的距离较近的情况下,工作效果会更好。

 

-----主要内容参考梳理于网络知识,此短文仅为学习笔记,在此原创作者感谢!

总结

以上是内存溢出为你收集整理的MySQL 基础知识梳理学习(五)----半同步复制全部内容,希望文章能够帮你解决MySQL 基础知识梳理学习(五)----半同步复制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1152322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存