网站设计建设服务网站雪花飘落代码
web/
2025/9/25 11:54:02/
文章来源:
网站设计建设服务,网站雪花飘落代码,比较有名的建筑公司,阿里万网站建设前言MySQL 5.5版本之前默认的复制是异步(Asynchronous )模式的, MySQL 5.5 以plugins的方式提供了Semisynchronous Replication 模式。在介绍 semi sync 之前,我们先了解#xff1a;半同步 Asynchronous 和 同步 Synchronous 。异步复制模式主库将已经提交的事务event 写入bin…前言MySQL 5.5版本之前默认的复制是异步(Asynchronous )模式的, MySQL 5.5 以plugins的方式提供了Semisynchronous Replication 模式。在介绍 semi sync 之前,我们先了解半同步 Asynchronous 和 同步 Synchronous 。异步复制模式主库将已经提交的事务event 写入binlog后即返回成功给app该模式下并不保证任何已经提交的事务会传递到任何slave并被成功应用。全同步复制模式。当主库提交一个事务 event主库会等待该事务被传递到所有的slave上且所有slave applay 该事务/event 通知主库之后才会返回回话事务已经成功。从定义中可以看出 异步模式不能保证数据的安全性因为它不等待主库提交的事务在slave 上落盘而全同步模式 由于要等待所有的slave 确认已提交事务成功被应用如此则会带来事务处理上的延时。semi sync 则取了一个比较折中的方式确保已提交的事务必须存在于至少两个机器(主库和任一备库)立即返回给客户端 事务成功。一、Semisynchronous Replication 定义Semisynchronous Replication模式下,在主库上提交一个事务/event它会等待至少一个slave通知主库slave 已经接收到传递过来的events并写入relay log才返回给回话层 写入成功或者直到传送日志发生超时。二、优缺点优点当事务返回成功给客户端时则事务至少在两台机器上存在增强数据安全性。相比异步模式和全同步模式是一种折中。缺点半同步的确会对数据库性能有一定影响因为事务的提交必须等待slave 反馈。性能损耗取决于tcp/IP 网络传输时间也即传输已提交事务和等待slave 反馈已经接收事务的时间。三、MySQL 半同步的特性1 当slave 连接主库时它会告知主库它是不是semi sync 模式。2 如果主库启用了semi sync模式且至少一个slave 也启用了semi sync模式一个在主库操作事务的进程在事务提交之后且至少一个slave 通知主库成功接收所有事务之前该进程会处于blocks 等待状态或者直到超时发生。3 当且仅当传递过来的events 传递到slave被写入relay log刷新到磁盘才会通知主库完成。4 Semisynchronous replication 必须在主备两端都同时启用否则任何一个未设置主备之间的复制模式将转变为异步复制模式。5 当所有slave 在(rpl_semi_sync_master_timeout的默认值)时间内未返回给主库成功接收event主备之间就会变回原来的异步状态。其中关于第二点 MySQL 5.7 已经做了优化由ack Collector (Col) thread 等待备库的成功接收事务的通知,这点后续会做详细介绍--《5.7 Semisync replication 增强》。四、异常处理当备库Crash时主库会在某次等待超时后关闭Semi-sync的特性降级为普通的异步复制这种情况比较简单。MySQL的 error.log 会提示140523 22:26:00 [Warning] Timeout waiting for reply of binlog (file: mysql-bin.000002, pos: 465893519), semi-sync up to file , position 0.140523 22:26:00 [Note] Semi-sync replication switched OFF.比较难以处理的情况是:当主机/主库Crash时可能存在一些事务已经在主库提交但是还没有来的及传给任何备库也即这些事务都是没有返回给客户端的所以发起事务的客户端并不知道这个事务是否已经完成--墙头事务。这时如果客户端不做切换只是等Crash的主库恢复后继续在主库进行操作客户端会发现前面的墙头事务都已经完成可以继续进行后续的业务处理另一种情况如果客户端Failover到备库上客户端会发现前面的“墙头事务”都没有成功则需要重新做这些事务然后继续进行后续的业务处理其实此时主备是不一致的需要通过主备数据校验来检查哪一个库是正确的然后进行修复。五、小结总之相比于MySQL 5.5 版本之前的异步复制模式 semi sync 已经有了很大的进步增强了数据的安全性以安全换一定的性能损耗还是可以接受的。后续会介绍如何安装和使用semi sync。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81600.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!