测试环境:
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)

转载于:https://www.cnblogs.com/caibird2005/p/4311544.html

mysql5.6配置semi_sync相关推荐

  1. iis5.0+php5.0+mysql5.0配置完全手册_IIS5.0+PHP5.0+MySQL5.0配置完全手册

    IIS5.0+PHP5.0+MySQL5.0配置完全手册 环境: windows Xp sp2 IIS5.0 + MySQL 5.0 + PHP 5.0.4 + 使用PHPWind3.0论坛程序 使用 ...

  2. Centos7 操作系统 mysql5.7 配置远程登陆操作

    Centos7 操作系统: mysql5.7 配置远程登陆操作: 首先登陆服务器,进入数据库: mysql -u root -p show databases; use mysql; show tab ...

  3. mysql5.5配置向导官方文档【中文翻译版】

    这是mysql的官方文档的翻译版本,浏览器翻译的,基本上能看懂.图片看着更加方便.就是看着发虚,可以直接点击图片看大图. MySQL5.5配置向导中文说明

  4. Mysql5.5配置主从复制

    Mysql提供了主从复制的功能,作用类似oracle的dataguard,但是配置和管理远比dataguard简单,没有所谓的物理备库和逻辑备库之分,也没有提供相应的数据保护模式,只有master和s ...

  5. apache2.2.21 + php5.3.8 + mysql5.5配置

    最近在弄wordpress 需要apache + php ,网上有好多集成apache+php+mysql的工具,自己感觉还是动手自己配置比较好点,尝试很久,终于成功,留以后参考. 一.下载地址: a ...

  6. php5(isapi).mysql5.zendforiis.rar_WIN2003系统IIS下PHP5+MySQL5+ZendOptimizer配置图解教程第1/3页...

    一.下载好php5.mysql5及ZendOptimizer和phpmyadmin的安装程序 PHP下载地址http://www.php.net/downloads.php MySQL 4下载地址ht ...

  7. mysql5.7配置_MySQL5.7详细配置教程

    MySQL5.7免安装版配置详细教程 一. 软件下载 mysql5.7.29 64位下载地址: 本次教程采用的是mysql5.7.29 64位版本,可根据自己电脑系统和个人喜好酌情处理. 二. 操作步 ...

  8. mysql5.7配置innodb_MySQL_5.7新特性innodb-buffer-pool-size配置

    MySQL_5.7升级之后在配置上及性能优化上做了很大的处理了,我们会发现有一个innodb-buffer-pool-size了,那么这个innodb-buffer-pool-size如何配置会比较好 ...

  9. ubuntu mysql5.7配置_ubuntu系统mysql5.7忘记/设置root的坑

    关于修改root的密码有很多笔记了,但是在mysql5.7下面无效,后来找到同样是5.7的笔记,才真正修改好.现在记录下来. 第一步,修改mysql配置文件让Mysql跳过认证 我的mysql是通过a ...

最新文章

  1. Android:problem opening wizard the selected wizard could not be started
  2. 这样的极客大会千万别停!如今中国太需要为技术传道、为极客正名
  3. 17.看板方法——瓶颈和非即时可用资源笔记
  4. MySQL抽稀_Android GPS定位轨迹抽稀之道格拉斯-普克(Douglas-Peuker)算法详解
  5. php fig是什么,还是看好 PHP-FIG
  6. 有哪些免费的绘画软件比较好用?
  7. js 如何实现拖动滑块
  8. (二)Excel函数应用之数学和三角函数
  9. CSR8675项目实战:BlueAg蓝牙一拖二发射器
  10. 每日小结(就不平衡问题探讨)
  11. 关于物联网的各种转换,16进制 二进制 10进制 效验总结
  12. jQuery动态绑定事件或者原生js动态绑定事件
  13. SWR 用于数据请求的 React Hooks 库
  14. 学生成绩管理系统(xhh)
  15. java没有舞台_不会偷懒的程序员不是好程序员!
  16. 【深度学习人类语言处理】1 课程介绍、语音辨识1——人类语言处理六种模型、Token、五种Seq2Seq Model(LAS、CTC、RNN-T、Neural Transducer、MoChA)
  17. 在Linux中安装ALSA声卡驱动
  18. java管理和用户用一个入口登录_五、基于Struts的MVC案例:用户登录
  19. 打好“三场仗”,数据库新晋厂商石原子胜券在握
  20. 漆学军:MACD交叉,金叉做多,死叉做空的例子程序

热门文章

  1. java二维码生成与解析代码实现
  2. iOS 自定义相机,带水印!
  3. string.Format字符串格式化说明(转)
  4. 黑马程序员--java基础--其他对象
  5. .net mvc mssql easyui treegrid
  6. Java和Android中一些常用的公共方法
  7. ios html cookies,iOS-WKWebView携带cookie发送http请求,cookie失效
  8. python统计代码行数
  9. 普通平键的主要尺寸有_?办公桌分类及尺寸介绍
  10. 服务化改造实践 | 如何在 Dubbo 中支持 REST