Created by He Zhenxing and last modified

The default behavior of MySQL replication is asynchronous, the master does not wait for slaves to get the events. The restriction is alleviated by introducing semi-synchronous replication protocol, which allows slaves to register as semi-sync slaves, and the master will block the return from commit of a transaction until at least one of the semi-sync slave have acknowledged reception of the events.

In MySQL 6.0, the server provided a set of interfaces to extend the feature of replication with plugins. Semi-synchronous replication components implemented the semi-synchronous replication protocol by using these interfaces. There are two plugins for semi-sync, one for the master and the other for the slave, they can be loaded and unloaded at runtime.

Get this branch:
bzr branch lp:~hezx/mysql-server/semi-sync-replication
Only He Zhenxing can upload to this branch. If you are He Zhenxing please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

He Zhenxing
MySQL Server

Recent revisions

9. By He Zhenxing <email address hidden>

BUG#44058 Possible semi-sync replication bugs (component part)

Semi-sync master component does not set the thread's proc info,
nor set the mysys_var->current_cond/mutex, which made KILL not
able to awake the thread that was waiting for the ACK, and didn't
know what the thread was waiting for.

This patch fixed the problem by calling enter_cond and exit_cond
accordingly in semi-sync master component before and after waiting
for ACK from slave.

8. By He Zhenxing <email address hidden>

Turn on master seni-sync status after user enables semi-sync,
don't wait if no semi-sync slave connected or master semi-sync
status is off

7. By He Zhenxing <email address hidden>

BUG#40934 Semisynchronous replication: Change initial state after installation

Changed initial state of semi-sync on slave and master from enabled
to disabled after installed plugin.

6. By He Zhenxing <email address hidden>

Update result file after previous commit

5. By He Zhenxing <email address hidden>

Changed master component variable and function prefix from rpl_semi_sync to rpl_semi_sync_master
Removed some unused global variables
Made the test result more readable

4. By He Zhenxing <email address hidden>

Fix master status variables
Add non-install headers
Temporarily add replication.h
Change package name to 'mysql-semi-sync-plugin'

3. By He Zhenxing

Add a simple test case for semi-sync feature

2. By He Zhenxing

fix configure.in

1. By He Zhenxing

initial import

Branch metadata

Branch format:
Branch format 6
Repository format:
Bazaar pack repository format 1 (needs bzr 0.92)
This branch contains Public information 
Everyone can see this information.