Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Installing Semisynchronous Replication

19.4.10.1 半同步复制的安装

半同步复制是使用插件实现的,必须在源和副本上安装插件,以便在实例上启用半同步复制。有不同的插件用于源和副本。安装插件后,您可以通过关联的系统变量控制它。这些系统变量仅在关联插件安装后可用。

本节描述如何安装半同步复制插件。有关安装插件的一般信息,请参阅第 7.6.1 节,“安装和卸载插件”

要使用半同步复制,必须满足以下要求:

插件库文件的文件名后缀因平台而异(例如 Unix 和 Unix-like 系统上的 .so,Windows 上的 .dll)。插件和库文件名如下:

  • 源服务器:rpl_semi_sync_source 插件 (semisync_source.sosemisync_source.dll 库)

  • 副本:rpl_semi_sync_replica 插件 (semisync_replica.sosemisync_replica.dll 库)

要使源或副本服务器可用,相应的插件库文件必须位于 MySQL 插件目录中(由 plugin_dir 系统变量命名的目录)。如果必要,请在服务器启动时设置 plugin_dir 的值。源插件库文件必须位于源服务器的插件目录中。副本插件库文件必须位于每个副本服务器的插件目录中。

要设置半同步复制,请按照以下说明进行操作。INSTALL PLUGINSET GLOBALSTOP REPLICASTART REPLICA 语句需要 REPLICATION_SLAVE_ADMIN 权限(或已弃用的 SUPER 权限)。

要加载插件,请在源和每个副本上使用 INSTALL PLUGIN 语句,根据平台调整 .so 后缀。

在源上:

INSTALL PLUGIN rpl_semi_sync_source SONAME 'semisync_source.so';

在每个副本上:

INSTALL PLUGIN rpl_semi_sync_replica SONAME 'semisync_replica.so';

如果尝试安装插件时出现类似于 Linux 上的错误,请安装 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)

您可以从 https://dev.mysql.com/downloads/os-linux.html 获取 libimf

要验证插件安装,请检查 Information Schema PLUGINS 表或使用 SHOW PLUGINS 语句(请参阅 第 7.6.2 节,“获取服务器插件信息”)。例如:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME          | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_source | ACTIVE        |
+----------------------+---------------+

如果插件无法初始化,请检查服务器错误日志以获取诊断信息。

在半同步复制插件安装后,默认情况下它是禁用的。要启用半同步复制,必须在源端和副本端同时启用插件。如果只有一个端启用,复制将是异步的。要启用插件,可以在运行时使用 SET GLOBAL,或在服务器启动时在命令行或选项文件中设置。例如:

SET GLOBAL rpl_semi_sync_source_enabled = 1;
SET GLOBAL rpl_semi_sync_replica_enabled = 1;

如果您在运行时在副本上启用半同步复制,还必须启动复制 I/O(receiver)线程(如果已经运行则先停止),以便副本连接到源并注册为半同步副本:

STOP REPLICA IO_THREAD;
START REPLICA IO_THREAD;

如果复制 I/O(receiver)线程已经运行且您不重新启动它,副本将继续使用异步复制。

在选项文件中列出的设置将在每次服务器启动时生效。例如,您可以在源服务器和副本服务器的 my.cnf 文件中设置变量,如下所示。在源:

[mysqld]
rpl_semi_sync_source_enabled=1

在每个副本:

[mysqld]
rpl_semi_sync_replica_enabled=1

您可以使用安装插件时可用的系统变量来配置半同步复制插件的行为。有关关键系统变量的信息,请参阅 第 19.4.10.2 节,“配置半同步复制”