mysql的半同步复制-semisync是基于默认的异步复制和完全同步复制之间,它是在master在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个slave收到并写到relay log中才返回给客户端。相对于异步复制,semisync提高了数据的安全性,但是又比完全同步性能好,所以master和slave之间的时间一定要一致,以免造成semisync失败。mysql的半同步复制的插件是由Google免费提供的在mysql的$basedir/lib/plugin下有相应的动态库文件,linux中是.so,DOS系统中是.dll,在默认情况下mysql是没有装载semisync的插件,所以要制作semisync要手动在mysql的shell中装载插件,下面就简单的说一说mysql的semisync配置,这里要注意要使用mysql的super用户来配置,并且mysql要5.5及以上版本才有,并且要在有异步复制的基础上才可以做配置

#master中mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | OFF   |
| rpl_semi_sync_master_timeout       | 10000 |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+
4 rows in set (0.01 sec)
mysql> set global rpl_semi_sync_master_enabled = 1;#开启master上的semisync,设置超时时间,可以通过设置rpl_semi_sync_master_timeout变量来修改,默认单位为毫秒
Query OK, 0 rows affected (0.00 sec)
mysql> show status like '%Rpl_semi_sync%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 565   |
| Rpl_semi_sync_master_net_wait_time         | 3391  |
| Rpl_semi_sync_master_net_waits             | 6     |
| Rpl_semi_sync_master_no_times              | 1     |
| Rpl_semi_sync_master_no_tx                 | 12    |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 588   |
| Rpl_semi_sync_master_tx_wait_time          | 3528  |
| Rpl_semi_sync_master_tx_waits              | 6     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 6     |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)#slave中mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.00 sec)mysql> show global variables like '%semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | OFF   |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
2 rows in set (0.00 sec)
mysql> set global rpl_semi_sync_slave_enabled = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> stop slave IO_THREAD;start slave IO_THREAD;#重启slave上的IO线程
Query OK, 0 rows affected (0.09 sec)Query OK, 0 rows affected (0.00 sec)
mysql> show status like '%Rpl_semi_sync%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+
1 row in set (0.00 sec)

这样简单的semisync就配置好了,这里要注意的是如果master超过超时时间没有接收到slave的消息时会自动转为异步复制,当然如果不需要semisync可以直接uninstall相应的插件

mysql> uninstall plugin rpl_semi_sync_master;
Query OK, 0 rows affected (0.00 sec)
mysql> uninstall plugin rpl_semi_sync_slave;
Query OK, 0 rows affected (0.00 sec)

转载于:https://blog.51cto.com/jim123/1903678

简述mysql半同步复制—semisync相关推荐

  1. mysql 半同步复制_Mysql半同步复制原理及问题排查

    mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master ...

  2. mysql半同步复制

    从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...

  3. MySQL · 源码分析 · MySQL 半同步复制数据一致性分析

    简介 MySQL Replication为MySQL用户提供了高可用性和可扩展性解决方案.本文介绍了MySQL Replication的主要发展历程,然后通过三个参数rpl_semi_sync_mas ...

  4. MySQL半同步复制(文章讲解很透彻!)

    从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 一.三种同步 异步复制(Asynchronous replication) MySQL ...

  5. mysql半同步复制实现

    mysql半同步复制和异步复制的区别如上述架构图所看到的:在mysql异步复制的情况下.Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Mast ...

  6. mysql 5.5半同步复制_(5.5)mysql高可用系列——MySQL半同步复制(实践)

    关键词,mysql半同步复制 [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复 ...

  7. mysql半同步复制问题排查

    1.问题背景       默认情况下,线上的mysql复制都是异步复制,因此在极端情况下,主备切换时,会有一定的概率备库比主库数据少,因此切换后,我们会通过工具进行回滚回补,确保数据不丢失.半同步复制 ...

  8. MySQL 半同步复制+MMM架构

    介绍 上篇文章介绍了MMM架构的实现方法,但是上篇文章的MMM方案的复制是异步复制,异步复制的主要问题在于当主从存在延时时如果主机出现了故障导致了主从切换时这时将会存在数据丢失:mysql为了解决异步 ...

  9. MHA-结合MySQL半同步复制高可用集群(Centos7)

    目录 一.理论概述 本案例部署思路 二.环境 三.部署 部署MHA 部署二进制包MySQL及部署主从复制 部署半同步复制 配置MHA MHA测试 部署lvs+keepalived(lvs1,lvs2) ...

最新文章

  1. windows 自动化目录大纲(各企业架构不一样,按需选择)
  2. 如何在TensorFlow中用深度学习修复图像
  3. 循环相关函数range、enumerate、zip
  4. C++bucket sort桶排序的实现算法(附完整源码)
  5. Gradle与project(三)
  6. python笔记之利用scrapy框架爬取糗事百科首页段子
  7. 您的主机不满足在启用Hyper-V 或DeviceCredential Guard的情况下运行VMware player的最低要求
  8. Java基于springMVC的验证码案例
  9. Silverlight 异步单元测试
  10. 读懂python代码_Python面试|一文让你读懂if __name__==’__main__’的含义
  11. flutter ios上踩的一个坑
  12. 【ClickHouse】ClickHouse 同步 MySQL 数据库
  13. docker下搭建JupyterNotebook远程登录
  14. gson 解析json_Gson示例教程解析JSON
  15. 政府12345便民服务热线 -- MICC全媒体智能呼叫中心建设方案
  16. 绝地反击 我的战胜贫困的经历01 转载 整理
  17. 听比喻,懂原理(1)超五类双绞线和六类双绞线的区别
  18. 数据结构实验题——一元多项式计算
  19. 界面组件Kendo UI for React R3 2022新版,让Web应用更酷炫
  20. java实训项目-模拟自动挡汽车

热门文章

  1. Android源代码下载与编译 - 2019
  2. Bootstrap之Carousel不能自动播放的解决办法(转)
  3. cocos2d-x自制工具03:AnimatePacker for Mac/Win32 v1.1 Build1发布!
  4. 基于BitBox的Wormhole SDK 已迭代至1.0.0版本
  5. WakaTime数据同步展示工具
  6. 10、Mapreduce的一些场景
  7. 使用Jekyll搭建博客
  8. phpmyadmin 忘记密码重设password
  9. lvs keepalived的tcp 长连接的问题解决办法
  10. Yenista光学发布新型无源器件测试平台CTP10