Semisynchronous replication is implemented using plugins, so the plugins must be installed into the server to make them available. After a plugin has been installed, you control it by means of the system variables associated with it. These system variables are unavailable until the associated plugin has been installed.
This section describes how to install the semisynchronous replication plugins. For general information about installing plugins, see Installing and Uninstalling Plugins.
To use semisynchronous replication, the following requirements must be satisfied:
- The capability of installing plugins requires a MySQL server that supports dynamic loading. To verify this, check that the value of the - have_dynamic_loadingsystem variable is- YES. Binary distributions should support dynamic loading.
- Replication must already be working, see Chapter 2, Configuring Replication. 
- There must not be multiple replication channels configured. Semisynchronous replication is only compatible with the default replication channel. See Section 5.2, “Replication Channels”. 
        To set up semisynchronous replication, use the following
        instructions. The INSTALL PLUGIN,
        SET
        GLOBAL, STOP SLAVE, and
        START SLAVE statements mentioned
        here require the SUPER privilege.
      
MySQL distributions include semisynchronous replication plugin files for the source side and the replica side.
        To be usable by a source or replica server, the appropriate
        plugin library file must be located in the MySQL plugin
        directory (the directory named by the
        plugin_dir system variable). If
        necessary, configure the plugin directory location by setting
        the value of plugin_dir at
        server startup.
      
        The plugin library file base names are
        semisync_master and
        semisync_slave. The file name suffix differs
        per platform (for example, .so for Unix and
        Unix-like systems, .dll for Windows).
      
The source plugin library file must be present in the plugin directory of the source server. The replica plugin library file must be present in the plugin directory of each replica server.
        To load the plugins, use the INSTALL
        PLUGIN statement on the source and on each replica
        that is to be semisynchronous, adjusting the
        .so suffix for your platform as necessary.
      
On the source:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';On each replica:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
        If an attempt to install a plugin results in an error on Linux
        similar to that shown here, you must install
        libimf:
      
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
ERROR 1126 (HY000): Can't open shared library
'/usr/local/mysql/lib/plugin/semisync_master.so'
(errno: 22 libimf.so: cannot open shared object file:
No such file or directory)
        You can obtain libimf from
        https://dev.mysql.com/downloads/os-linux.html.
      
        To see which plugins are installed, use the
        SHOW PLUGINS statement, or query
        the Information Schema PLUGINS
        table.
      
        To verify plugin installation, examine the Information Schema
        PLUGINS table or use the
        SHOW PLUGINS statement (see
        Obtaining Server Plugin Information). For example:
      
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME          | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE        |
+----------------------+---------------+If the plugin fails to initialize, check the server error log for diagnostic messages.
After a semisynchronous replication plugin has been installed, it is disabled by default. The plugins must be enabled both on the source side and the replica side to enable semisynchronous replication. If only one side is enabled, replication is asynchronous.
        To control whether an installed plugin is enabled, set the
        appropriate system variables. You can set these variables at
        runtime using SET
        GLOBAL, or at server startup on the command line or in
        an option file.
      
At runtime, these source-side system variables are available:
SET GLOBAL rpl_semi_sync_master_enabled = {0|1};
SET GLOBAL rpl_semi_sync_master_timeout = N;On the replica side, this system variable is available:
SET GLOBAL rpl_semi_sync_slave_enabled = {0|1};
        For
        rpl_semi_sync_master_enabled or
        rpl_semi_sync_slave_enabled,
        the value should be 1 to enable semisynchronous replication or 0
        to disable it. By default, these variables are set to 0.
      
        For
        rpl_semi_sync_master_timeout,
        the value N is given in milliseconds.
        The default value is 10000 (10 seconds).
      
If you enable semisynchronous replication on a replica at runtime, you must also start the replication I/O thread (stopping it first if it is already running) to cause the replica to connect to the source and register as a semisynchronous replica:
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;If the replication I/O thread is already running and you do not restart it, the replica continues to use asynchronous replication.
        At server startup, the variables that control semisynchronous
        replication can be set as command-line options or in an option
        file. A setting listed in an option file takes effect each time
        the server starts. For example, you can set the variables in
        my.cnf files on the source and replica
        sides as follows.
      
On the source:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 # 1 secondOn each replica:
[mysqld]
rpl_semi_sync_slave_enabled=1