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

17.3.9.2 Semisynchronous Replication Installation and Configuration

原创 由迪 2020-03-31
441

半同步复制是使用插件实现的,因此必须将插件安装到服务器中才能使用它们。安装插件后,您可以通过与其关联的系统变量来控制它。在安装了相关的插件之前,这些系统变量不可用。

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

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

安装插件的能力需要支持动态加载的MySQL服务器。要验证这一点,请检查 have_dynamic_loading系统变量的值为YES。二进制发行版应支持动态加载。

复制必须已经可以正常工作,请参见 第17.1节“复制配置”。

要设置半同步复制,请使用以下说明。在INSTALL PLUGIN, SET GLOBAL,STOP SLAVE,和 START SLAVE语句这里提到需要SUPER特权。

MySQL发行版包括用于主端和从属端的半同步复制插件文件。

要由主服务器或从属服务器使用,相应的插件库文件必须位于MySQL插件目录(由plugin_dir系统变量命名的目录 )中。如有必要,通过设置plugin_dir服务器启动时的值来配置插件目录位置。

插件库文件的基本名称为 semisync_master和 semisync_slave。每个平台的文件名后缀都不同(例如,.so对于Unix和类似Unix的系统,.dll对于Windows)。

主插件库文件必须存在于主服务器的插件目录中。从属插件库文件必须存在于每个从属服务器的插件目录中。

要加载插件,请INSTALL PLUGIN在将要半同步的主服务器和每个从服务器上使用以下语句(.so 根据需要调整平台的后缀)。

在master:

INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;
在每slave上:

INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;
如果尝试安装插件导致在Linux上显示类似于此处所示的错误,则必须安装 libimf:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;
ERROR 1126 (HY000): Can’t open shared library
‘/usr/local/mysql/lib/plugin/semisync_master.so’
(errno: 22 libimf.so: cannot open shared object file:
No such file or directory)
您可以libimf从 https://dev.mysql.com/downloads/os-linux.html获得。

要查看安装了哪些插件,请使用以下 SHOW PLUGINS语句或查询INFORMATION_SCHEMA.PLUGINS 表。

要验证插件安装,请检查 INFORMATION_SCHEMA.PLUGINS表或使用以下SHOW PLUGINS语句(请参见第5.5.2节“获取服务器插件信息”)。例如:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE ‘%semi%’;
±---------------------±--------------+
| PLUGIN_NAME | PLUGIN_STATUS |
±---------------------±--------------+
| rpl_semi_sync_master | ACTIVE |
±---------------------±--------------+
如果插件未能初始化,请检查服务器错误日志以获取诊断消息。

安装了半同步复制插件后,默认情况下将其禁用。必须在主端和从端都启用插件才能启用半同步复制。如果仅启用一侧,则复制将是异步的。

要控制是否启用了已安装的插件,请设置适当的系统变量。您可以在运行时使用SET GLOBAL或在服务器启动时在命令行或选项文件中设置这些变量。

在运行时,这些主端系统变量可用:

SET GLOBAL rpl_semi_sync_master_enabled = {0|1};
SET GLOBAL rpl_semi_sync_master_timeout = N;
在从属端,此系统变量可用:

SET GLOBAL rpl_semi_sync_slave_enabled = {0|1};
对于 rpl_semi_sync_master_enabled或 rpl_semi_sync_slave_enabled,该值应为1以启用半同步复制,或为0以禁用它。默认情况下,这些变量设置为0。

对于 rpl_semi_sync_master_timeout,该值N以毫秒为单位。默认值为10000(10秒)。

如果在运行时在从属服务器上启用半同步复制,则还必须启动从属I / O线程(如果已经在运行,则先将其停止),以使从属服务器连接到主服务器并注册为半同步从属服务器:

STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
如果I / O线程已经在运行,并且您没有重新启动它,则从服务器将继续使用异步复制。

服务器启动时,可以将控制半同步复制的变量设置为命令行选项或在选项文件中。服务器每次启动时,选项文件中列出的设置都会生效。例如,您可以my.cnf按以下方式在主服务器和从服务器上的文件中设置变量 。

在master:

[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 # 1 second
在每个slave上:

[mysqld]
rpl_semi_sync_slave_enabled=1

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

评论