文档首页
MySQL 9.0 参考手册
相关文档 下载此手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  安装半同步复制

19.4.10.1 安装半同步复制

半同步复制是使用插件实现的,必须在源和副本上安装这些插件才能在实例上使用半同步复制。源和副本使用不同的插件。安装插件后,可以使用与其关联的系统变量来控制它。这些系统变量仅在安装了关联的插件后才可用。

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

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

插件库文件的名称后缀因平台而异(例如,Unix 和类 Unix 系统为 .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.mysqlserver.cn/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(接收器)线程(如果它已在运行,请先停止它),以使副本连接到源并注册为半同步副本。

STOP REPLICA IO_THREAD;
START REPLICA IO_THREAD;

如果复制 I/O(接收器)线程已在运行,并且您没有重新启动它,则副本将继续使用异步复制。

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

[mysqld]
rpl_semi_sync_source_enabled=1

在每个副本上

[mysqld]
rpl_semi_sync_replica_enabled=1

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