Semisynchronous replication is implemented using plugins, which must be installed on the source and on the replicas to make semisynchronous replication available on the instances. There are different plugins for a source and for a replica. After a plugin has been installed, you control it by means of the system variables associated with it. These system variables are available only when 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”. 
MySQL 8.0.26 and later supply new versions of the plugins that implement semisynchronous replication, one for the source server and one for the replica. The new plugins replace the terms “master” and “slave” with “source” and “replica” in system variables and status variables, and you can (and should) install these versions instead of the old ones (which are now deprecated, and thus subject to removal in a future MySQL release). You cannot have both the new and the old versions of the relevant plugin installed on an instance. If you use the new versions of the plugins, the new system variables and status variables are available but the old ones are not; if you use the old versions of the plugins, the old system variables and status variables are available but the new ones are not.
        The file name suffix for the plugin library files differs per
        platform (for example, .so for Unix and
        Unix-like systems, and .dll for Windows).
        The plugin and library file names are as follows:
- Source server, old terminology: - rpl_semi_sync_masterplugin (- semisync_master.soor- semisync_master.dlllibrary)
- Source server, new terminology (from MySQL 8.0.26): - rpl_semi_sync_sourceplugin (- semisync_source.soor- semisync_source.dlllibrary)
- Replica, old terminology: - rpl_semi_sync_slaveplugin (- semisync_slave.soor- semisync_slave.dlllibrary)
- Replica, new terminology (from MySQL 8.0.26): - rpl_semi_sync_replicaplugin (- semisync_replica.soor- semisync_replica.dlllibrary)
        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 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 set up semisynchronous replication, use the following
        instructions. The INSTALL PLUGIN,
        SET
        GLOBAL, STOP REPLICA,
        and START REPLICA statements
        mentioned here require the
        REPLICATION_SLAVE_ADMIN privilege
        (or the deprecated SUPER
        privilege).
      
        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';
Or from MySQL 8.0.26:
INSTALL PLUGIN rpl_semi_sync_source SONAME 'semisync_source.so';On each replica:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Or from MySQL 8.0.26:
INSTALL PLUGIN rpl_semi_sync_replica SONAME 'semisync_replica.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_source SONAME 'semisync_source.so';
ERROR 1126 (HY000): Can't open shared library
'/usr/local/mysql/lib/plugin/semisync_source.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 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_source | ACTIVE        |
+----------------------+---------------+If a 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 enable the plugins, set the appropriate system
        variable either at runtime using
        SET
        GLOBAL, or at server startup on the command line or in
        an option file. For example:
      
On the source:
SET GLOBAL rpl_semi_sync_master_enabled = 1;
Or from MySQL 8.0.26 with the rpl_semi_sync_source plugin:
SET GLOBAL rpl_semi_sync_source_enabled = 1;On each replica:
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
Or from MySQL 8.0.26 with the rpl_semi_sync_replica plugin:
SET GLOBAL rpl_semi_sync_replica_enabled = 1;If you enable semisynchronous replication on a replica at runtime, you must also start the replication I/O (receiver) 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;
Or from MySQL 8.0.22:
STOP REPLICA IO_THREAD;
START REPLICA IO_THREAD;If the replication I/O (receiver) thread is already running and you do not restart it, the replica continues to use asynchronous replication.
        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
        servers as follows:
      
 On the source: 
[mysqld]
rpl_semi_sync_master_enabled=1
Or from MySQL 8.0.26 with the rpl_semi_sync_source plugin:
rpl_semi_sync_source_enabled=1 On each replica: 
[mysqld]
rpl_semi_sync_slave_enabled=1
Or from MySQL 8.0.26 with the rpl_semi_sync_source plugin:
rpl_semi_sync_replica_enabled=1You can configure the behavior of the semisynchronous replication plugins using the system variables that become available when you install the plugins. For information on key system variables, see Section 3.10.2, “Configuring Semisynchronous Replication”.