MySQL 5.5 Semi Sync Replication

今天看到MySQL5.5放出了第一个版本MySQL 5.5 Community Edition – Milestone Release,最大的增强莫过于加入了Semi Sync Replication的支持(虽然仍不完善)。

这里做一个科普,简单介绍一下Semisynchronous Replication:

1. Why Semisynchronous Replication?

之前版本的MySQL Replication都是异步(asynchronous)的,主库在执行完一些事务后,是不会管备库的进度的。如果备库不幸落后,而更不幸的是主库此时又出现Crash(例如宕机),这时备库中的数据就是不完整的。简而言之,在主库发生故障的时候,我们无法使用备库来继续提供数据一致的服务了。

Semisynchronous Replication则一定程度上保证提交的事务已经传给了至少一个备库。

2. 为什么是Semi synchronous而不是Full synchronous?

Semi synchronous中,仅仅保证事务的已经传递到备库上,但是并不确保已经在备库上执行完成了。

此外,还有一种情况会导致主备数据不一致。在某个session中,主库上提交一个事务后,会等待事务传递给至少一个备库,如果在这个等待过程中主库Crash,那么也可能备库和主库不一致,这是很致命的。(在主库恢复后,可以通过参数Rpl_semi_sync_master_no_tx观察)

3. 如果主备之间连接出现故障,主库是否会一直等待?

如果主备网络故障或者备库挂了,主库在事务提交后等待10秒(rpl_semi_sync_master_timeout的默认值)后,就会继续。这时,主库就会变回原来的异步状态。

4. 最后

且不论5.5是否稳定,现在的Semi synchronous Replication也还是很不完善的,希望能够继续健壮直至稳定。

嗨,谁知道呢?

In:

4 responses to “MySQL 5.5 Semi Sync Replication”

  1. […] 从MySQL5.5之后,版本的信息会像这个样子:MySQL-5.5.2-m2,Why? […]

  2. […] MySQL 5.5 Semi-sync Replication安装配置、参数说明 2011-06-27  |  13:30分类:MySQL  |  标签:MySQL5.5、semi-sync、semi-sync replication、半同步  |  1 views 从09年12月份MySQL5.5的第一个Release,再到去年12月的第一个GA,MySQL5.5平均一月一个小版本号的速度在默默更新。该版本最重要的特性目前仍是Semi-sync Replication,之前做了一个概述,这里将继续介绍如何安装、配置Semi-sync,后续还将继续介绍其性能和一些基本的代码实现。 1. Semi-sync Repication的历史 […]

  3. […] 从09年12月份MySQL5.5的第一个Release,再到去年12月的第一个GA,MySQL5.5平均一月一个小版本号的速度在默默更新。该版本最重要的特性目前仍是Semi-sync Replication,之前做了一个概述,这里将继续介绍如何安装、配置Semi-sync,后续还将继续介绍其性能和一些基本的代码实现。 1. Semi-sync Repication的历史 […]

Leave a Reply

Your email address will not be published. Required fields are marked *