MySQL Semi Sync Replication

MySQL 5.5 Semi Sync Replication

2009-12-16  |  23:48分类: MySQL  |  标签: MySQL5.5Replicationsemi-syncsemi-sync replication  |  

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

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

1. Why Semisynchronous Replication?mysql

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

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

2. 为何是Semi synchronous而不是Full synchronous?session

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

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

3. 若是主备之间链接出现故障,主库是否会一直等待?post

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

4. 最后

且不论5.5是否稳定,如今的Semi synchronous Replication也仍是很不完善的,但愿可以继续健壮直至稳定。

相关文章
相关标签/搜索