半同步复制:
无损复制属于半同步复制的一种。
一、半同步复制介绍
1,两个插件实现半同步复制功能。主库有一个插件,从库有一个插件。
2,系统变量控制插件特性。几个列子
参数:
1)rpl_semi_sync_master_enabled
控制是否在主库上启用半同步复制。要启用或禁用插件,请分别将此变量设置为1或0。默认值是0(关闭)。
2)rpl_semi_sync_master_timeout
一个以毫秒为单位的值,用于控制主服务器等待来自从服务器的确认提交并恢复到异步复制的时间,超过这个值就是超时。 默认值是10000(10秒)。超时之后,就从半同步复制,返回到异步复制。
3)rpl_semi_sync_slave_enabled
作用和参数 rpl_semi_sync_master_enabled相似,但是控制的是从库的插件。
3,启用半同步复制监视的状态变量。一些例子:
参数:
1)Rpl_semi_sync_master_clients
半同步从库的数量。
2)Rpl_semi_sync_master_status
当前是否在主服务器上运行半同步复制。如果插件已启用并且未提交确认,则值为1。如果插件未启用,或者由于提交确认超时,主服务器已回退到异步复制,则为0。
3)Rpl_semi_sync_master_yes_tx
从库成功确认的提交数量。
4)Rpl_semi_sync_master_no_tx
从库未成功确认的提交数量。
5)Rpl_semi_sync_slave_status
当前是否在从站上运行半同步复制。如果插件已启用且从属I/O线程正在运行,则为1,否则为0。
二、半同步复制安装和配置
半同步复制是使用插件实现的,因此必须将插件安装到数据库中以使其可用。插件安装完成后,通过与其关联的系统变量来控制插件。直有关联的插件安装完成后,这些系统变量才可用。
要使用半同步复制,必须满足以下要求:
1)必须安装MySQL 5.5或更高版本。
2)安装插件的功能需要一个支持动态加载的MySQL服务器。要验证这一点,请检查have_dynamic_loading系统变量的值是否为YES。
3)复制必须已经在工作。
4)不能有多个复制通道配置。半同步复制仅与默认复制通道兼容。
要设置半同步复制,请使用以下说明。
这里提到的INSTALL PLUGIN,SET GLOBAL,STOP SLAVE和START SLAVE语句需要SUPER权限。
MySQL发布包括主端和从端的半同步复制插件文件。
要被主库或从库使用,相应的插件库文件必须位于MySQL插件目录(由plugin_dir系统变量命名的目录)中。如有必要,请在服务器启动时设置plugin_dir的值,以告知服务器插件目录位置。
插件库文件基名是semisync_master和semisync_slave。 每个平台的文件名后缀都不相同(例如,用于Unix和类Unix系统的.so,用于Windows的.dll)
主插件库文件必须存在于主服务器的插件目录中。从插件库文件必须存在于每个从服务器的插件目录中
要加载插件,请在主站和每个要半同步的从站上使用INSTALL PLUGIN语句(根据需要为您的平台调整.so后缀)。
MySQL发布包括主端和从端的半同步复制插件文件。
要被主库或从库使用,相应的插件库文件必须位于MySQL插件目录(由plugin_dir系统变量命名的目录)中。如有必要,请在服务器启动时设置plugin_dir的值,以告知服务器插件目录位置。
插件库文件基名是semisync_master和semisync_slave。 每个平台的文件名后缀都不相同(例如,用于Unix和类Unix系统的.so,用于Windows的.dll)
主插件库文件必须存在于主服务器的插件目录中。从插件库文件必须存在于每个从服务器的插件目录中
要加载插件,请在主站和每个要半同步的从站上使用INSTALL PLUGIN语句(根据需要为您的平台调整.so后缀)。
1,安装插件
On the master:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
On each slave:
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
如果尝试安装插件会导致类似于此处显示的错误,则必须安装libimf:
2,查看安装了哪些插件
要查看哪些插件已安装,请使用SHOW PLUGINS语句,或者查询INFORMATION_SCHEMA.PLUGINS表。
例如:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE '%semi%';
在安装半同步复制插件之后,默认情况下它是禁用的。主库和从库都必须启用插件才能启用半同步复制。 如果只启用了一方,复制将是异步的。
要控制是否启用已安装的插件,请设置适当的系统变量。可以在运行时使用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秒)。
3,如果在运行时在从库上启用半同步复制,则还必须启动从库I/O线程(如果它已在运行,则首先停止),以使从库连接到主库并注册为半同步从库:
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
如果I/O线程已经在运行,并且不重新启动,则从库设备将继续使用异步复制
在服务器启动时,可以将控制半同步复制的变量设置为命令行选项或选项文件。每次服务器启动时,选项文件中列出的设置都会生效。例如,您可以按如下方式设置主站和从站的my.cnf文件中的变量。
On the master:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 # 1 second
On each slave:
[mysqld]
rpl_semi_sync_slave_enabled=1
三,半同步复制监控
半同步复制功能的插件公开了可以检查的几个系统和状态变量,以确定其配置和操作状态。
系统变量反映了如何配置半同步复制。要检查它们的值,使用SHOW VARIABLES:
mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';
状态变量使您能够监视半同步复制的操作。要检查它们的值,使用SHOW STATUS:
mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';
当由于提交阻塞超时或从站追赶而导致主站在异步或半同步复制之间切换时,它会适当地设置Rpl_semi_sync_master_status状态变量的值。
从主机上的半同步复制到异步复制的自动回退意味着,即使在此时半同步复制实际上不可操作的情况下,rpl_semi_sync_master_enabled系统变量也可能在主端具有值1。 可以监视Rpl_semi_sync_master_status状态变量,以确定当前主服务器是使用异步还是半同步复制。
要查看连接了多少个半同步从站,请检查状态参数Rpl_semi_sync_master_clients。
show status like '%rpl_semi_sync_master_clients%';
Rpl_semi_sync_master_yes_tx和Rpl_semi_sync_master_no_tx变量指示已成功确认或从属失败的提交数。
show status like '%Rpl_semi_sync_master_yes_tx%';
show status like '%Rpl_semi_sync_master_no_tx%';
在从属方面,Rpl_semi_sync_slave_status指示当前是否正在运行半同步复制。
mysql> SHOW STATUS LIKE 'Rpl_semi_sync_slave_status%';
四:具体实验步骤
1)查看是否支持动态加载的MySQL服务器
mysql> show variables like '%dynamic%';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| have_dynamic_loading | YES |
+----------------------+-------+
2)主库安装semisync_master插件
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.05 sec)
3)备库安装semisync_slave插件
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.07 sec)
4)主库查看关于半同步复制的一些参数值
mysql> show variables like '%semi%';
+-------------------------------------------+------------+
| Variable_name | Value |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled | OFF |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_for_slave_count | 1 |
| rpl_semi_sync_master_wait_no_slave | ON |
| rpl_semi_sync_master_wait_point | AFTER_SYNC |
+-------------------------------------------+------------+
6 rows in set (0.00 sec)
5)主库重新设置
mysql> SET GLOBAL rpl_semi_sync_master_enabled =1;
Query OK, 0 rows affected (0.00 sec)
6)备库查看本同步复制的参数值
mysql> show variables like '%rpl_semi%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
7)备库重新设置参数
mysql> SET GLOBAL rpl_semi_sync_slave_enabled =1;
Query OK, 0 rows affected (0.00 sec)
8)从库重新关闭,再开启IO_THREAD线程
mysql> STOP SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)
mysql> START SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)
9)备库查看半同步复制状态,
mysql> SHOW STATUS LIKE 'Rpl_semi_sync_slave_status%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON |
+----------------------------+-------+
无损复制
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机无损复制(mysql5.7)
数据库2024-04-02
MySQL5.7--------基于无损复制搭建主从
数据库2024-04-02
mysql5.7 主从复制
数据库2024-04-02
MySQL5.7主从复制-GTID复制搭建
数据库2024-04-02
MySQL5.7主从复制-异步复制搭建
数据库2024-04-02
Mysql5.7如何并行复制
数据库2024-04-02
mysql5.7主主(双主)复制
数据库2024-04-02
MySQL5.7中GTID复制的改进
数据库2024-04-02
MySQL5.7多源复制的实验
数据库2024-04-02
MYSQL5.7进阶之主从复制
数据库2021-08-17
MySQL5.7的多源复制方法
数据库2024-04-02
【Mysql】Mysql5.7的多源复制搭建
数据库2024-04-02
MySQL5.7的AB复制以及 GTID多线程复制 配置
数据库2024-04-02
搭建MySQL5.7的多源复制方法
数据库2024-04-02
Mysql5.7中如何搭建主从复制
数据库2024-04-02
MySQL5.7并行复制原理及实现
数据库2022-06-01
Docker搭建MySQL5.7主从复制的实现
数据库2022-06-22
MySQL5.7 基于GTID的多源复制实践
数据库2024-04-02
MySQL5.7主从复制详细配置教程
数据库2024-04-02
MySQL5.7 传统复制和GTID复制间的在线互相切换
数据库2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧