Mysql必读MySQL Semisynchronous Replication介绍
《Mysql必读MySQL Semisynchronous Replication介绍》要点: 前言 MYSQL教程 ??? MySQL 5.5版本之前默认的复制是异步(Asynchronous )模式的,MySQL 5.5 以plugins的方式提供了Semisynchronous Replication 模式.在介绍 semi sync 之前,我们先了解:半同步 Asynchronous 和 同步 Synchronous .MYSQL教程 异步复制模式MYSQL教程 ??? 主库将已经提交的事务event 写入binlog后,即返回成功给app,该模式下并不保证任何已经提交的事务会传递到任何slave并被成功应用.MYSQL教程 全同步复制模式.MYSQL教程 ??? 当主库提交一个事务 event,主库会等待该事务被传递到所有的slave上,且所有slave applay 该事务/event 通知主库之后,才会返回回话,事务已经成功.MYSQL教程 ?? 从定义中可以看出 异步模式不能保证数据的安全性,因为它不等待主库提交的事务在slave 上落盘,而全同步模式 由于要等待所有的slave 确认已提交事务成功被应用,如此则会带来事务处理上的延时.semi sync 则取了一个比较折中的方式,确保已提交的事务必须存在于至少两个机器(主库和任一备库),立即返回给客户端 事务成功.MYSQL教程 一、Semisynchronous Replication 定义 ?二、优缺点MYSQL教程 ?? 优点:当事务返回成功给客户端时,则事务至少在两台机器上存在,增强数据安全性.相比异步模式和全同步模式,是一种折中. 三、MySQL 半同步的特性MYSQL教程 ??? 1 当slave 连接主库时,它会告知主库它是不是semi sync 模式. 四、异常处理MYSQL教程 ?? 当备库Crash时,主库会在某次等待超时后,关闭Semi-sync的特性,降级为普通的异步复制,这种情况比较简单. 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |