半同步复制是使用插件实现的,必须在源和副本上安装插件,才能在实例上使用半同步复制。源和副本有不同的插件。在安装了插件之后,您可以通过与它相关联的系统变量来控制它。这些系统变量只有在安装了相关的插件后才可用。
介绍安装半同步复制插件的操作步骤。有关安装插件的一般信息,请参见章节5.6.1,“安装和卸载插件”.
使用半同步复制功能,需要满足以下条件:
安装插件的能力要求MySQL服务器支持动态加载。的值来验证这一点
have_dynamic_loading
系统变量为是的
.二进制发行版应该支持动态加载。复制必须已经开始工作了第17.1节,“配置复制”.
不能配置多个复制区域通道。半同步复制功能只兼容默认复制区域通道。看到第17.2.2节,“复制通道”.
从MySQL 8.0.26开始,提供了实现半同步复制的新版本插件,一个用于源服务器,一个用于副本。新的插件取代了这些条款”主”而且”奴隶”与”源”而且”副本”在系统变量和状态变量中,您可以安装这些版本而不是旧版本。你不能在一个实例中同时安装相关插件的新版本和旧版本。如果您使用新版本的插件,新的系统变量和状态变量是可用的,而旧的是不可用的。如果您使用旧版本的插件,旧的系统变量和状态变量是可用的,但新的是不可用的。
插件库文件的文件名后缀因平台而异(例如,所以
用于Unix和类Unix系统,以及. dll
对于Windows)。插件和库文件名如下:
源服务器,旧术语:
rpl_semi_sync_master
插件(semisync_master.so
或semisync_master.dll
库)源服务器,新术语(来自MySQL 8.0.26):
rpl_semi_sync_source
插件(semisync_source.so
或semisync_source.dll
库)副本,旧术语:
rpl_semi_sync_slave
插件(semisync_slave.so
或semisync_slave.dll
库)复制,新术语(来自MySQL 8.0.26):
rpl_semi_sync_replica
插件(semisync_replica.so
或semisync_replica.dll
库)
为了供源服务器或复制服务器使用,适当的插件库文件必须位于MySQL插件目录(由plugin_dir
系统变量)。如果需要,可以通过设置的值来配置插件的目录位置plugin_dir
在服务器启动时。源插件库文件必须存在于源服务器的插件目录中。副本插件库文件必须存在于每个副本服务器的插件目录中。
设置半同步复制的操作步骤如下。的安装插件
,集全球
,停止复制
,开始复制
这里提到的语句需要REPLICATION_SLAVE_ADMIN
特权(或已弃用的特权超级
特权)。
要加载插件,请使用安装插件
语句在源和将要半同步的每个副本上执行所以
为您的平台添加必要的后缀。
关于来源:
INSTALL PLUGIN rpl_semi_sync_master .so;或者从MySQL 8.0.26安装插件rpl_semi_sync_source .so;
在每个副本上:
安装rpl_semi_sync_slave SONAME 'semisync_slave.so';rpl_semi_sync_replica SONAME 'semisync_replica.so';
如果尝试在Linux上安装插件导致类似于此处显示的错误,则必须安装libimf
:
mysql> INSTALL PLUGIN rpl_semi_sync_source .so;错误1126 (HY000):不能打开共享库'/usr/local/mysql/lib/plugin/semisync_source。所以' (errno: 22 libimf。无法打开共享对象文件:没有这样的文件或目录)
你可以获得libimf
从https://dev.10bet靠谱mys10bet手机中文版ql.com/downloads/os-linux.html.
要验证插件安装,请检查INFORMATION_SCHEMA。插件
表或使用显示插件
声明(见章节5.6.2“获取服务器插件信息”).例如:
从信息模式中选择PLUGIN_NAME, PLUGIN_STATUSPLUGIN_NAME为'%semi%'的插件;+----------------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +----------------------+---------------+ | rpl_semi_sync_source |活跃 | +----------------------+---------------+
如果插件初始化失败,请检查服务器错误日志中的诊断消息。
安装半同步复制插件后,默认禁用该插件。为了启用半同步复制,必须在源端和副本端都启用插件。如果只启用了一方,则复制为异步复制。要启用插件,请在运行时使用设置适当的系统变量集全球
,或者在服务器启动时在命令行或选项文件中。例如:
SET GLOBAL rpl_semi_sync_master_enabled = 1;或者从MySQL 8.0.26的rpl_semi_sync_source插件:SET GLOBAL rpl_semi_sync_source_enabled = 1;
在每个副本上:SET GLOBAL rpl_semi_sync_slave_enabled = 1;或者从MySQL 8.0.26的rpl_semi_sync_replica插件:SET GLOBAL rpl_semi_sync_replica_enabled = 1;
如果你在运行时在副本上启用了半同步复制,你还必须启动复制I/O(接收者)线程(如果它已经在运行,则首先停止它),以导致副本连接到源并注册为半同步副本:
停止从io_thread;启动slave io_thread;或者从MySQL 8.0.22停止复制IO_THREAD;启动副本io_thread;
如果复制I/O(接收者)线程已经在运行,并且您没有重新启动它,副本将继续使用异步复制。
选项文件中列出的设置在服务器每次启动时生效。例如,你可以在my.cnf
源服务器和副本服务器上的文件如下:
在source: [mysqld] rpl_semi_sync_master_enabled=1或者在MySQL 8.0.26中使用rpl_semi_sync_source插件:rpl_semi_sync_source_enabled=1
在每个副本上:[mysqld] rpl_semi_sync_slave_enabled=1或从MySQL 8.0.26使用rpl_semi_sync_source插件:rpl_semi_sync_replica_enabled=1
您可以使用在安装插件时可用的系统变量来配置半同步复制插件的行为。有关关键系统变量的信息,请参见17.4.10.2节“配置半同步复制”.