Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

19.4.10.1 安装半同步复制

半同步复制使用插件实现,插件必须在源服务器和副本服务器上安装,以使半同步复制在实例上可用。有不同的插件用于源服务器和副本服务器。安装插件后,您可以通过相关插件的系统变量来控制它。这些系统变量只有在相关插件安装后可用。

本节描述了如何安装半同步复制插件。关于安装插件的常规信息,请见第7.6.1节,“安装和卸载插件”

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

插件库文件的文件名后缀根据平台不同(例如,.so用于Unix和Unix-like系统,.dll用于Windows)。插件和库文件名如下:

  • 源服务器: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

要验证插件安装,请检查信息架构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节,“半同步复制配置”