mysql5.6配置semi_sync
测试环境:
Red Hat Enterprise Linux Server release 6.3 (Santiago)
Server version: 5.6.22-log MySQL Community Server (GPL)
mysql的replication协议是异步的,虽然异步效率、性能很好,但是却无法保证主从数据一致性,
如果master crash,已经commit的事务不会被传送到任何的slave上,
从mysql5.5之后,mysql为了保证主从库数据一致性,引进了semi-sync功能,
semi-sync意思是MASTER只需要接收到其中一台SLAVE的返回信息,就会commit;否则需等待直至切换成异步再提交。
优点:
当事务返回客户端成功后,则日志一定在至少两台主机上存在。
MySQL的Semi-sync适合小事务,且两台主机的延迟又较小,则Semi-sync可以实现在性能很小损失的情况下的零数据丢失。
缺点:
完成单个事务增加了额外的等待延迟,延迟的大小取决于网络的好坏。
配置方法:
在主库安装semisync_master插件:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; //linux
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.dll'; //windows
在备库安装semisync_slave插件
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; //linux
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';//windows
主库上,新增如下参数:
$vi /etc/my.cnf
[mysqld]
...
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
...
备库上新增:
$vi /etc/my.cnf
[mysqld]
...
rpl_semi_sync_slave_enabled=1
重启master和slave,semi_sync插件会自动加载
重启后,master显示如下:
mysql> show variables like '%rpl_semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | ON    |
| rpl_semi_sync_master_timeout       | 1000  |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |  #表示即使没有SLAVE也会等待过期时间结束,是默认值
+------------------------------------+-------+
4 rows in set (0.00 sec)
mysql> show status like '%semi%';                        
+--------------------------------------------+----------+
| Variable_name                              | Value    |
+--------------------------------------------+----------+
| Rpl_semi_sync_master_clients               | 3        |  #有多少个Semi-sync的备库,我配置了3个
| Rpl_semi_sync_master_net_avg_wait_time     | 2525     |  #事务提交后,等待备库响应的平均时间
| Rpl_semi_sync_master_net_wait_time         | 45892342 |  #总的网络等待时间
| Rpl_semi_sync_master_net_waits             | 18174    |  #等待网络响应的总次数
| Rpl_semi_sync_master_no_times              | 0        |  #一共有几次从Semi-sync跌回普通状态
| Rpl_semi_sync_master_no_tx                 | 0        |  #备库未及时响应的事务数
| Rpl_semi_sync_master_status                | ON       |  #主库上Semi-sync是否正常开启
| Rpl_semi_sync_master_timefunc_failures     | 0        |  #时间函数未正常工作的次数
| Rpl_semi_sync_master_tx_avg_wait_time      | 1196     |  #开启Semi-sync,事务返回需要等待的平均时间
| Rpl_semi_sync_master_tx_wait_time          | 7918635  |  #事务等待备库响应的总时间
| Rpl_semi_sync_master_tx_waits              | 6620     |  #事务等待备库响应的总次数
| Rpl_semi_sync_master_wait_pos_backtraverse | 0        |  #改变当前等待最小二进制日志的次数
| Rpl_semi_sync_master_wait_sessions         | 0        |  #当前有几个线程在等备库响应
| Rpl_semi_sync_master_yes_tx                | 6549     |  #Semi-sync模式下,成功的事务数
+--------------------------------------------+----------+
14 rows in set (0.00 sec)
slave上显示如下:
mysql> show variables like '%rpl_semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
2 rows in set (0.01 sec)
mysql> show status like '%semi%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+
1 row in set (0.00 sec)
mysql5.6配置semi_sync的更多相关文章
- Centos7   操作系统 mysql5.7 配置远程登陆操作
		
Centos7 操作系统: mysql5.7 配置远程登陆操作: 首先登陆服务器,进入数据库: mysql -u root -p show databases; use mysql; show tab ...
 - MySQL5.7配置(第一次使用)
		
MySQL5.7配置(第一次使用) 最近因为工作需要学习mysql的增删改查.用的公司的电脑,之前有人已经安装过mysql5.7,等于使用了免安装版,重新开始配置.参考了以下文章 http://blo ...
 - [很郁闷]python2.7连接mysql5.5配置
		
前言:今天在公司电脑上python版本跟自己家里电脑上的一样,不一样的是mysql公司版本5.6,结果花了两天的时间都没配置好python和mysql 简单说就是python连接mysql一直报200 ...
 - CentOS7+mysql5.6配置主从
		
一.安装环境 操作系统:CentOS-7-x86_64-DVD-1611.iso数据库版本:mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz数据库地址: 192.1 ...
 - MySQL5.7配置基于GTID的复制
		
MySQL5.7下配置GTID复制的方法: 修改主库和从库的配置文件,加入下列部分的配置项:主库:[mysqld]log-bin=mysql-binbinlog_format= ROWgtid-mod ...
 - centos7.2+php7.2+nginx1.12.0+mysql5.7配置
		
一. 源码安装php7.2 选择需要的php版本 从 php官网: http://cn2.php.net/downloads.php 选择需要的php版本,选择.tar.gz 的下载包,点击进入,选择 ...
 - php5.6 + apache2.4+mysql5.7 配置
		
----------------------------------------------------- ★软件工具:(下载时注意下载相应版本,不同版本安装细节可能会有差异!!) 1>http ...
 - linux下免安装版本mysql5.5 配置
		
进入/usr/local #cd /usr/local 下载 #wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.39-linux ...
 - mysql5.7配置
		
my3306.cnf [client] port = 3306 #端口socket = /data/mysql3306/mysql3306.sock #mysql以socket方式运行的soc ...
 
随机推荐
- logcat调试系统
			
日志存放位置:/dev/log shell@xxx:/ $ ls /dev/log -l crw-rw-rw- root log , -- : events crw-rw-rw- root log , ...
 - 如何把SQLServer数据库从高版本降级到低版本
			
如何把SQLServer数据库从高版本降级到低版本 编写人:CC阿爸 2015-4-7 近期在给一个客户推行ECM系统时,基本客户的硬件环境,我们为其安装的为SQL2008 64位的数据库系统.在安装 ...
 - 64位windows系统安装javaee6.0不成功解决方案
			
64位windows系统安装javaee6.0不成功解决方案 (2013-01-19 14:59:51) 转载▼ 标签: 杂谈 could not find the required versio ...
 - C++中const使用注意要点(一)
			
最近看<C++编程思想>发现自己的基础确实不牢固,也想起了以前写代码时也因为const的事情浪费过时间,这里总结下几个要点. 首先说下内部链接和外部链接. 当一个cpp文件在编译时,预处理 ...
 - bc显示小数点前的0
			
bc是强大而常用的计算工具.不过在除法运算时,如果得到的结果值小于1,得到的小数前面的0不存.本篇提供几个常用小数点前缺0的解决方法. [root@maqing ~]# bc bc Copyright ...
 - Mac OS Virtualbox 倒入 ova 镜像文件
			
原文:https://www.zhihu.com/question/40785995 ------------------ 自己亲测 --------------------- 把 windows 系 ...
 - [Java][Web]Web 工程中的各类地址的写法
			
// 1. request.getRequestDispatcher("/index.html").forward(request,response); // 以 / 开头,对于浏 ...
 - HTC8X V版 电信上网方法
			
原始V版电信上网设置,转自百度贴吧(http://tieba.baidu.com/p/3224177802). 修改SIM卡设置 修改MIP_MODE 转自贴吧:http://tieba.baidu. ...
 - C++ cosnt的一点总结
			
1,C++在定义函数重载的时候形参不管是不是const的他们都是等价的,除非形参是const引用.举个例子: void fun(int a){...}与void fun(const int a){.. ...
 - node连接mongoDB篇
			
一般介绍: 由于mongodb数据库在javascript脚本环境中支持bson对象(json对象的二进制形式)的存取,因此对于数据的存取的效率是非常高的.在mongodb数据库中,将每一条等待插入的 ...