MySQL的半同步复制

1>半同步复制的出现:

默认情况下,复制是异步的,就是客户端提交事务给主库,主库将事务写入到存储引擎和binlog中后会立即返回给客户端告诉其事务执行成功。如果此时该事务还未来得及复制到从库上,如果主库在此时发生崩溃或者服务器宕机,会导致主从切换,此时客户端访问新选举的主库时,就会看不到刚提交的数据。

2>半同步复制的原理:

mysql5.5开始通过插件的方式支持半同步复制,主库执行完客户端提交的事务后不会立即返回给客户端,而是等待至少一个从库接收到该事务后才返回给客户端。

半同步复制是全同步和异步同步的一个折中方案。与异步复制相比,半同步复制提高数据的安全性---可以保证至少两个地方存在该事务,同时也增加了一定的延迟(至少是一个tcp/ip往返的时间),最好在低延迟的网络中使用,比如局域网。

3>半同步复制的安装配置

须满足以下条件:

MySQL5.5或者以上版本

has_dynamic_loading系统变量设置为YES

复制已经配置并且在运行。

半同步复制是以插件形式实现的。所以讲semisync_master*文件复制到主库的plugins文件夹中,讲semisync_slave*文件复制到所有从库的plugins文件夹中。

接下来分别在主库和从库上执行INSTALL PLUGIN命令加载插件。

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

从库上执行

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

查看插件的安装情况:

mysql>SHOW PLUGINS;

主从都开启半同步插件:

主库上开启半同步插件:

mysql>SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql>SET GLOBAL rpl_semi_sync_master_timeout = N;//单位是毫秒

在从库上开启半同步插件:

mysql>SET GLOBAL rpl_semi_sync_slave_enabled = 1;

rpl_semi_sync_master_timeout表示主库等待从库相应的超市时间,如果在时间内没有收到从库相应,复制切换到异步模式。

停止slave IO 线程,然后重新开启该线程。以使slave IO 线程从新连接到主库,并以半同步方式在主库注册。

在从库上执行以下命令重启slave IO线程:

mysql>STOP SLAVE IO_THREAD;

mysql>START SLAVE IO_THREAD;

注意点:

在mysql启动前将全局变量写入到配置文件中。以避免忘记设置使半同步不生效。

主库配置文件

[mysqld]

rpl_semi_sync_master_enabled = 1

rpl_semi_sync_master_timeout=10000 #10秒

从库配置文件

[mysqld]

rpl_semi_sync_slave_enabled = 1

时间: 2025-01-20 00:50:53

MySQL的半同步复制的相关文章

MariaDB(MySQL):半同步复制+ssl+复制过滤

一.半同步复制   1.mysql的复制 通过记录主服务器的二进制日志,并在从服务器上进行重放(replay)完成复制,默认都是异步进行的. 2.半同步复制 半同步复制是google贡献给MySQL的一个补丁,在MySQL 5.5之后就支持了,MariaDB都是支持的. MySQL的插件,一般在MySQL安装目录下; 半同步复制插件默认没有启用,需要自己安装,/usr/local/mysql/lib/plugin可以看到semisync_master.so和semisync_slave.so和其

MySQL数据库半同步复制

半同步复制,是有一个从节点或者一部分从节点与主节点之间是同步复制的,其他的从节点仍是异步复制 半同步复制是谷歌公司贡献给MySQL的一个插件,默认在MySQL中没有此插件,所以要实现主从的版同步复制需要安装此插件 rpm -ql mariadb-server| grep semi #找到需要安装的插件,以so结尾 SHOW PLUGINS; #查看当前支持的插件,此处也能看到myisam和innodb也是插件类型 下面开始介绍如何配置主从版同步复制: 1.创建传统的主从复制功能的mysql,请参

mysql GTID 半同步复制

1)什么是GTID GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号.GTID实际上是由UUID+TID组成的.其中UUID是一个MySQL实例的唯一标 识,保存在mysql数据目录下的auto.cnf文件里.TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增.下面是一个GTID的具 体形式:3E11FA47-71CA-11E1-9E33-C80AA9429562:23.2)GTID的作用 根据GTID可以知道事务最初是在哪

MySQL主从复制半同步复制原理及搭建

在MySQL5.5之前的版本中,MySQL的复制是异步复制,主库和从库的数据之间存在一定的延迟,比如网络故障等各种原因,这样子容易存在隐患就是:当在主库写入一个事务成功后并提交了,但是由于从库延迟没有及时得到主库推送的Binlog日志时,主库突然宕机了,那么此时从库就可能损失这个事务,从而造成主从不一致的状况. 因此我们MySQL5.5版本之后引入了半同步复制的概念 半同步复制的原理: 半同步复制时,为了保证主库上的每一个Binlog事务都能够被可靠的复制到从库上,主库在每次事务成功提交时,并不

简述mysql半同步复制—semisync

mysql的半同步复制-semisync是基于默认的异步复制和完全同步复制之间,它是在master在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个slave收到并写到relay log中才返回给客户端.相对于异步复制,semisync提高了数据的安全性,但是又比完全同步性能好,所以master和slave之间的时间一定要一致,以免造成semisync失败.mysql的半同步复制的插件是由Google免费提供的在mysql的$basedir/lib/plugin下有相应的动态库文件

mysql的主从、主主及半同步复制

mysql复制 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接

MySQL数据的主从复制、半同步复制和主主复制详解

一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费多久,不容乐观的未来,但是我们还是要能熟练掌握MySQL数据的架构和安全备份等功能,毕竟现在它还算是开源界的老大吧! MySQL数据库支持同步复制.单向.异步复制,在复制的过程中一个服务器充当主服务,而一个或多个服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环

MySQL半同步复制的数据一致性探讨微信后台团队实践【转】

MySQL是一个RDBMS(关系型数据库管理系统),由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.由于其体积小.速度快.拥有成本低,尤其是开放源码这一特点,广受各大企业欢迎,包括腾讯,阿里,百度,网易,Google,FaceBook等互联网巨头企业. 随着互联网的高速发展,互联网服务可用性变得越发重要,数据容灾也随之成为各企业的关键任务.在数据容灾中,数据库集群如何处理数据一致性也成为了各企业需要解决的问题.特别在一些新兴的金融服务中,MySQL也逐渐成为其核心数据库,如何

MySQL 半同步复制模式说明及配置示例 - 运维小结

MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二进制日志写入binlog文件之后就返回客户端结果,不会考虑二进制日志是否完整传输到从服务器以及是否完整存放到从服务器上的relay日志中,这种模式一旦主服务(器)宕机,数据就可能会发生丢失. 异步模式是一种基于偏移量的主从复制,实现原理是: 主库开启binlog功能并授权从库连接主库,从库通过cha