暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ACDU翻译】 MySQL 17.4.10.1 安装半同步复制

原创 由迪 2022-10-20
594

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

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

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

从 MySQL 8.0.26 开始,提供了实现半同步复制的插件的新版本,一个用于源服务器,一个用于副本。新插件将术语 “ master ”和“ slave ”替换 为“ source ”和“ replica ”在系统变量和状态变量中,您可以安装这些版本而不是旧版本。您不能在实例上同时安装相关插件的新旧版本。如果您使用新版本的插件,新的系统变量和状态变量可用,但旧的不可用。如果您使用旧版本的插件,旧的系统变量和状态变量可用,但新的不可用。

插件库文件的文件名后缀因平台而异(例如,.so对于 Unix 和类 Unix 系统,以及.dll对于 Windows)。插件和库文件名如下:

  • 源服务器,旧术语: rpl_semi_sync_master插件(semisync_master.sosemisync_master.dll库)
  • 源服务器,新术语(来自 MySQL 8.0.26): rpl_semi_sync_source插件(semisync_source.sosemisync_source.dll库)
  • 副本,旧术语: rpl_semi_sync_slave插件(semisync_slave.sosemisync_slave.dll库)
  • 副本,新术语(来自 MySQL 8.0.26): 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_master SONAME 'semisync_master.so'; Or from MySQL 8.0.26: INSTALL PLUGIN rpl_semi_sync_source SONAME 'semisync_source.so';

在每个副本上:

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';

如果尝试安装插件在 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)

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

要验证插件安装,请检查 INFORMATION_SCHEMA.PLUGINS表或使用SHOW PLUGINS语句(请参阅第 5.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或在服务器启动时在命令行或选项文件中设置适当的系统变量。例如:

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;

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

STOP SLAVE IO_THREAD; START SLAVE IO_THREAD; Or from MySQL 8.0.22: STOP REPLICA IO_THREAD; START REPLICA IO_THREAD;

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

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

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=1

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论