mysql半同步复制实现
mysql半同步复制和异步复制的区别如上述架构图所看到的:在mysql异步复制的情况下。Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自己主动返回数据给client。而无论slave上是否接受到了这个二进制日志。在半同步复制的架构下。当master在将自己binlog发给slave上的时候。要确保slave已经接受到了这个二进制日志以后,才会返回数据给client。
对照两种架构:异步复制对于用户来说,能够确保得到高速的响应结构,可是不能确保二进制日志确实到达了slave上。半同步复制对于客户的请求响应略微慢点,可是他能够保证二进制日志的完整性。
以下来配置一个半同步复制实现的主从架构:
192.168.1.141为mysql的主server
192.168.1.142为mysql的从server
1.为mysql主server提供配置
编辑/etc/my.cnf,提供下面的配置
log_bin=index
server_id=1
在主server上授权
# mysql> grant replication slave,replication client on user@'192.168.1.142' identified by "123456";
# mysql> flush privileges;
2.为mysql从服务提供配置
编辑/etc/my.cnf,提供下面的配置
server_id=10
relay_log=relay
read_only=on
skip-slave-start=1
进入mysql命令行接口
# mysql > change master to MASTER_HOST="192.168.1.141",MASTER_USER="user",MASTER_PASSWORD="123456",MASTER_LOG_FILE="index.000004",MASTER_LOG_POS=429;
# mysql > start slave;
假设可以看到Slave_IO_Running: Yes和Slave_SQL_Running:Yes两行信息的话。证明主从配置已经成功。
要使用mysql的半同步复制功能须要为mysql装插件,mysql默认支持的插件在/usr/local/mysql/lib/plugin/,里面有两个semisync_master.so和semisync_slave.so的共享库是我们实现mysql半同步复制的关键
3.设置半同步复制
在mysql主server的命令行接口下运行例如以下代码:
# mysql > install plugin rpl_semi_sync_master SONAME 'semisync_master.so';
# mysql > show variables like "%semi%";(假设看到新增的semi变量的话证明安装模块成功)
| rpl_semi_sync_master_enabled | OFF | 是否启动半同步复制,默认关闭
| rpl_semi_sync_master_timeout | 10000 | 等待从server告诉接受到的超时时间,假设时间到了。还没接受到,自己主动降级为异步
| rpl_semi_sync_master_trace_level | 32 | 执行级别
| rpl_semi_sync_master_wait_no_slave | ON | 没有slave的时候是否也须要等待。默觉得也须要等待
# mysql > set global rpl_semi_sync_master_enabled = 1;
# mysql > set global rpl_semi_sync_master_timeout = 1000;
在mysql从server的命令行接口下运行例如以下代码:
# mysql > install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';
# mysql > show variables like "%semi%";(假设看到新增的semi变量的话证明安装模块成功)
# mysql > set global rpl_semi_sync_slave_enabled = 1;
# stop slave;
# start slave;
最后把经常使用的配置參数写如配置文件里:
192.168.1.141:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
192.168.1.142:
[mysqld]
rpl_semi_sync_slave_enabled=1
4.查看半同步复制的状况信息
在192.168.1.141运行例如以下命令:
mysql> show status like "%semi%";
+-------------------------------------------------------------------+----------+
| Variable_name | Value |
+-------------------------------------------------------------------+----------+
| Rpl_semi_sync_master_clients | 1 | 半同步复制客户端的个数
| Rpl_semi_sync_master_net_avg_wait_time | 555 | 平均等待时间(默认毫秒)
| Rpl_semi_sync_master_net_wait_time | 1665 | 总共等待时间
| Rpl_semi_sync_master_net_waits | 3 | 等待次数
| Rpl_semi_sync_master_no_times | 0 | 关闭半同步复制的次数
| Rpl_semi_sync_master_no_tx | 0 | 表示没有成功接收slave提交的次数
| Rpl_semi_sync_master_status | ON | 表示当前是异步模式还是半同步模式。on为半同步
| Rpl_semi_sync_master_timefunc_failures | 0 | 调用时间函数失败的次数
| Rpl_semi_sync_master_tx_avg_wait_time | 575 | 事物的平均传输时间
| Rpl_semi_sync_master_tx_wait_time | 1725 | 事物的总共传输时间
| Rpl_semi_sync_master_tx_waits | 3 | 事物等待次数
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 | 当前有多少个session由于slave的回复而造成等待
| Rpl_semi_sync_master_yes_tx | 3 | 成功接受到slave事物回复的次数
+-------------------------------------------------------------------+---------+
5.取消半同步复制的插件
192.168.1.141上:
# mysql > uninstall plugin rpl_semi_sync_master;
# mysql > show status like "%semi%"
192.168.1.142上:
# mysql > uninstall plugin rpl_semi_sync_slave;
# mysql > show status like "%semi%"
mysql半同步复制实现的更多相关文章
- MySQL半同步复制
从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...
- MySQL半同步复制的数据一致性探讨微信后台团队实践【转】
MySQL是一个RDBMS(关系型数据库管理系统),由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.由于其体积小.速度快.拥有成本低,尤其是开放源码这一特点,广受各大企业欢迎,包括 ...
- Mysql半同步复制模式说明及配置示例 - 运维小结
MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二 ...
- 安装MySQL半同步复制
一.简介 从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认 ...
- MySQL半同步复制(5.5之后引入)
半同步复制架构在主库提交一个事务后,commit完成即反馈客户端,无需等待推送binlog完成,如图: 半同步复制在主库完成一个事务后,需等待事务信息写入binlog日志并且至少有一个从库写入rela ...
- MySQL半同步复制搭建
默认情况下,MySQL 5.5/5.6/5.7和MariaDB 10.0/10.1的复制是异步的,异步复制可以提供最佳性能,主库把binlog日志发送给从库,这一动作就结束了,并不会验证从库是否接收完 ...
- (5.5)mysql高可用系列——MySQL半同步复制(实践)
关键词,mysql半同步复制 [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复 ...
- mysql半同步复制跟无损半同步区别
mysql半同步复制跟无损半同步复制的区别: 无损复制其实就是对semi sync增加了rpl_semi_sync_master_wait_point参数,来控制半同步模式下主库在返回给会话事务成功之 ...
- MySQL半同步复制源码解析
今天 DBA 同事问了一个问题,MySQL在半同步复制的场景下,当关闭从节点时使得从节点的数量 < rpl_semi_sync_master_wait_for_slave_count时,show ...
随机推荐
- Node.js笔记 请求方式 GET
三种方法解析url 1. 传统的字符串split切割方法 2. querystring 只能解析数据部分,不能解析前面 index.html之类的地址部分. 3. url 可以解析地址和数 ...
- ArcGIS在线帮助的使用指南
一直感觉ArcGIS的在线帮助就是鸡肋,没想到网络常见的所谓的高大上的博文,也不过是对GIS 在线帮助的拷贝,或者简单修改而已.其实ArcGIS的在线帮助包含了以下几个很好用的模块: 备注 ArcGI ...
- Lintcode 将整数A转换为B
例子 如把31转换为14,须要改变2个bit位. ()10=()2 ()10=()2 贴代码 class Solution { public: /** *@param a, b: Two intege ...
- Swiper+ ejs模板引擎+ iScroll插件知识总结
一. Swiper swiper是一个应用于移动端的动画插件,原理类似于轮播图 官网 http://www.swiper.com.cn/# html结构 <div class="swi ...
- vue-cli 构建vue项目
师父说,咱们还是要用vue-cli 去构建前端项目.然后我就开始了 懵逼之旅. 今天上午主要就是搞懂用webpack和vue-cli怎么搭建 运行项目 首先找到了咱们博客园 园友的博客,提供了大概五个 ...
- 6、修改应用程序数码相框以支持自动关闭LCD
1. 修改数码相框以自动关闭LCD关闭LCD : 在读取触摸屏的函数中判断:如果15S内无数据,执行: echo auto > /sys/devices/platform/mylcd/power ...
- 在sublime text 3中安装中文支持 分类: C_OHTERS 2015-04-24 22:04 229人阅读 评论(0) 收藏
1.安装package control 使用control+~打开终端,然后输入以下内容并确定: import urllib.request,os;pf='Package Control.subli ...
- [Node] Using dotenv to config env variables
Install: npm install dotenv --save For example, we can store the sensitive information or env relate ...
- Win或Linux中编译安装软件的命令解析: configure; make; make install
原文地址:http://www.cnblogs.com/Jerry-Chou/archive/2010/12/18/1909843.html 翻译一篇文章,我最早从这篇文章中了解到为什么Linux平台 ...
- js如何将字符串作为函数名调用函数
js将如何字符串作为函数名调用函数 一.总结 一句话总结:用eval来实现.eval可以执行参数字符串. 二.js将字符串作为函数名调用函数 比如我现在有一个字符串str = "func_a ...