最新文章专题视频专题关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
奥克斯空调故障代码e3怎么办 史上最好的Oracle体系架构浅析 长虹空调内机漏水 奥克斯空调故障代码f1怎么回事 美的空调压缩机不工作 新科空调内机漏水 海尔空调e6是什么故障代码 美的空调压缩机不启动 海尔空调故障代码e7 扬子空调内机漏水 海尔空调压缩机不工作 海尔空调压缩机不启动 1匹空调耗电量 格力空调故障代码e5怎么办 奥克斯空调压缩机不工作 澳柯玛空调压缩机不工作 惠康空调内机漏水 格力空调故障代码f0 格力空调故障代码e6代表什么故障 格力空调故障代码e6是什么问题 aux空调显示e4故障 aux空调e4故障代码 科龙空调内机漏水 奥克斯空调故障代码e4 说说IOT和mappingtable的那些事---几句话道出真相 三星空调内机漏水 aux空调显示e5 TCL空调内机漏水 空调显示e4怎么回事 澳柯玛空调如何拆装 夏普空调内机漏水 志高空调如何拆装 美的空调如何进行拆装 奥克斯空调如何拆装 海尔空调如何拆装 惠而浦空调内机漏水 Mysql主从同步原理实现的详情介绍(图文) MySql数据库分区和分表方法的详解及分区和分表介绍 Centos7下Mysql5.7.19安装方法介绍 史上最简单的MySQL数据备份与还原教程
当前位置: 首页 - 科技 - 知识百科 - 正文

说说MySQL的半同步复制

来源:懂视网 责编:小采 时间:2020-11-09 10:44:13
文档

说说MySQL的半同步复制

说说MySQL的半同步复制:MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。MySQL复制默认是异步复制,Master将事件写入binlog, MySQL Semisynchronous Replication MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。 异步复制的
推荐度:
导读说说MySQL的半同步复制:MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。MySQL复制默认是异步复制,Master将事件写入binlog, MySQL Semisynchronous Replication MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。 异步复制的

MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。MySQL复制默认是异步复制,Master将事件写入binlog,

MySQL Semisynchronous Replication

MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。

异步复制的缺点:

MySQL复制默认是异步复制,Master将事件写入binlog,但并不知道Slave是否或何时已经接收且已处理。在异步复制的机制的情况下,如果Master宕机,事务在Master上已提交,但很可能这些事务没有传到任何的Slave上。假设有Master->Salve故障转移的机制,此时Slave也可能会丢失事务。

半同步复制的概念:
i.
当Slave主机连接到Master时,能够查看其是否处于半同步复制的机制。

ii.
当Master上开启半同步复制的功能时,至少应该有一个Slave开启其功能。此时,一个线程在Master上提交事务将受到阻塞,直到得知一个已开启半同步复制功能的Slave已收到此事务的所有事件,或等待超时。

iii.
当一个事务的事件都已写入其relay-log中且已刷新到磁盘上,Slave才会告知已收到。

iv.
如果等待超时,也就是Master没被告知已收到,此时Master会自动转换为异步复制的机制。当至少一个半同步的Slave赶上了,Master与其Slave自动转换为半同步复制的机制。

v.
半同步复制的功能要在Master,Slave都开启,半同步复制才会起作用;否则,只开启一边,它依然为异步复制。


同步,异步,半同步复制的比较:

同步复制:Master提交事务,直到事务在所有的Slave都已提交,此时才会返回客户端,事务执行完毕。缺点:完成一个事务可能会有很大的延迟。

异步复制:当Slave准备好才会向Master请求binlog。缺点:不能保证一些事件都能够被所有的Slave所接收。

半同步复制:半同步复制工作的机制处于同步和异步之间,Master的事务提交阻塞,只要一个Slave已收到该事务的事件且已记录。它不会等待所有的Slave都告知已收到,且它只是接收,并不用等其完全执行且提交。

半同步复制的控制变量,状态监控变量:

控制变量

Variable Name Variable Scope Dynamic Variable Type Default Effect Host

rpl_semi_sync_master_enabled Global Yes boolean OFF Master

rpl_semi_sync_slave_enabled Global Yes boolean OFF Slave

rpl_semi_sync_master_timeout Global Yes numeric 10000 Master


解释:

rpl_semi_sync_master_enabled是控制Master是否开启半同步,开启或不开启,将其设置为ON或OFF(1or0).

rpl_semi_sync_master_timeout是控制Master等待多长时间被告知Slave已收到,也就是所谓的超时时间。

rpl_semi_sync_slave_enabled是控制Slave是否开启半同步,开启或不开启,将其设置为ON或OFF(1or0)。

监控半同步复制的状态变量(几个常用的)

Rpl_semi_sync_master_clients:查看有多少个开启半同步复制的插件的Slave

Rpl_semi_sync_master_status:查看在Master上半同步复制是否正在运行,其值为ON时,说明Master已启用半同步且已被告知有Slave收到;其值为OFF时,说明Master没启用半同步或是没被告知,,由于timeout等原因。

Rpl_semi_sync_master_no_tx:查看有多少事务没有用半同步复制的机制进行复制。

Rpl_semi_sync_master_yes_tx:查看有多少事务是通过半同步复制机制成功复制。

Rpl_semi_sync_slave_status:查看Slave上半同步复制是否正常运行,其值为ON时,说明Slave正通过半同步复制且Slave I/O正在运行;为OFF时,反之。

说明关于其它的请参阅:

半同步复制的安装,配置

环境要求:
i.
MySQL5.5或以上版本

ii.
在MySQL上安装插件需要数据库支持动态载入。检查是否支持,用如下检测:

mysql> show global variables like 'have_dynamic_loading';

+----------------------+-------+

| Variable_name | Value |

+----------------------+-------+

| have_dynamic_loading | YES |

+----------------------+-------+

1 row in set (0.00 sec)


iii.半同步复制是基于复制的环境。也就是说配置半同步复制前,已有复制的环境。

安装:

在Master上执行:

mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';


各个Slave上执行:

mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';


如果不清楚Plugin的目录,用如下查找:

mysql> show global variables like 'plugin_dir';

+---------------+----------------------------------+

| Variable_name | Value |

+---------------+----------------------------------+

| plugin_dir | /opt/usr/local/mysql/lib/plugin/ |

+---------------+----------------------------------+


检查Plugin是否已正确安装:

mysql> show plugins;

or

mysql> select * from information_schema.plugins;

配置:

在Master上执行:

mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> SET GLOBAL rpl_semi_sync_master_timeout = N;


在Slave上执行:

mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

说明:

如果在一个正在运行的Slave上开启半同步复制的功能,必须先停止Slave I/O,将其启用半同步后,再开启Slave I/O.

mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;


如果不这样做,Slave还是会以异步的方式进行复制。

正如大家所知,如果不将变量的设置写到配置文件,下次重启数据库,将失效。写入配置文件:

Master上:

[mysqld]

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000 # 1 second


Slave上:

[mysqld]

rpl_semi_sync_slave_enabled=1

总结:半同步复制个人感觉是维持数据完整性,安全性的的一个策略,虽会损失一点性能,还是值得的。配置很简单,关键是理解其工作机制。

linux

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:0731-84117792 E-MAIL:11247931@qq.com

文档

说说MySQL的半同步复制

说说MySQL的半同步复制:MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。MySQL复制默认是异步复制,Master将事件写入binlog, MySQL Semisynchronous Replication MySQL5.5 除了支持内置的异步复制机制,还提供了接口支持半同步复制的机制。 异步复制的
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top