开启半同步复制

#在有的高可用架构下,master和slave需同时启动,以便在切换后能继续使用半同步复制

/etc/my.cnf

  1. plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
  2. rpl-semi-sync-master-enabled =
  3. rpl-semi-sync-slave-enabled =

查看半同步是否在运行

master:
mysql> show status like 'Rpl_semi_sync_master_status';
+-----------------------------+-------+
| Variable_name              | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | ON    |
+-----------------------------+-------+

slave:
mysql> show status like 'Rpl_semi_sync_slave_status';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+

重启slave上的IO线程使半同步生效

mysql> stop slave io_thread;

mysql> start slave io_thread;
#如果没有重启,则默认还是异步复制,重启后,slave会在master上注册为半同步复制的slave角色。

半同步复制测试

  1. master:
  2. mysql> create database db;
  3. mysql> use db
  4. Database changed
  5. mysql> create table t1(id int);
  6. mysql> insert into t1 values();
  7. mysql> select * from t1;
  8. +------+| id |+------+| |+------+ row in set (0.00 sec)
  9. slave:
  10. mysql> select * from db.t1;
  11. +------+| id |+------+| |+------+ row in set (0.00 sec)
  12.  
  13. #可以看到数据很快同步到了从库上,下面关闭io_thread测试
  14. slave
  15. mysql> stop slave io_thread;
  16. Query OK, rows affected (0.00 sec)
  17. master
  18. mysql> insert into t1 values(); #此处有一个10s的超时等待时间,超时后转为异步插入
  19. Query OK, row affected (10.11 sec)
  20. mysql> show status like 'Rpl_semi_sync_master_status'; #半同步已失效
  21. +-----------------------------+-------+| Variable_name | Value |
  22. +-----------------------------+-------+| Rpl_semi_sync_master_status | OFF |
  23. +-----------------------------+-------+
  24.  

  25. slave
  26. mysql> show status like 'Rpl_semi_sync_slave_status'; #从库的半同步也失效
  27. +----------------------------+-------+| Variable_name | Value |
  28. +----------------------------+-------+| Rpl_semi_sync_slave_status | OFF |
  29. +----------------------------+-------+ row in set (0.01 sec)
  30. slave
  31. mysql> start slave io_thread; #从库开启io线程
  32. Query OK, rows affected (0.00 sec)
  33. master
  34. mysql> show status like 'Rpl_semi_sync_master_status'; #又重新转为半同步复制
  35. +-----------------------------+-------+| Variable_name | Value |
  36. +-----------------------------+-------+| Rpl_semi_sync_master_status | ON |
  37. +-----------------------------+-------+ row in set (0.00 sec)
  38. slave
  39. mysql> select * from db.t1; #从库上数据已同步
  40. +------+| id |+------+| || |+------+ rows in set (0.00 sec)

mysql半同步开启的更多相关文章

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

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

  2. MySQL半同步复制

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

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

    MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二 ...

  4. MySQL半同步安装以及参数

    MySQL半同步安装以及参数 基于MySQL5.5 官档地址: Semisynchronous Replication Administrative Interface https://dev.mys ...

  5. 安装MySQL半同步复制

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

  6. MySQL半同步复制搭建

    默认情况下,MySQL 5.5/5.6/5.7和MariaDB 10.0/10.1的复制是异步的,异步复制可以提供最佳性能,主库把binlog日志发送给从库,这一动作就结束了,并不会验证从库是否接收完 ...

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

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

  8. MySQL半同步复制源码解析

    今天 DBA 同事问了一个问题,MySQL在半同步复制的场景下,当关闭从节点时使得从节点的数量 < rpl_semi_sync_master_wait_for_slave_count时,show ...

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

    MySQL是一个RDBMS(关系型数据库管理系统),由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.由于其体积小.速度快.拥有成本低,尤其是开放源码这一特点,广受各大企业欢迎,包括 ...

随机推荐

  1. 【Spring Security】三、自定义数据库实现对用户信息和权限信息的管理

    一 自定义表结构 这里还是用的mysql数据库,所以pom.xml文件都不用修改.这里只要新建三张表即可,user表.role表.user_role表.其中user用户表,role角色表为保存用户权限 ...

  2. SQL语句总结2018-11-7

    增加一条数据 insert into table (列字段1,列字段2)values(列1值,列2值) 删除一条数据 delete from table where 列名1=值1 修改一条数据 upd ...

  3. 【Net Core】DNX概述

    1. 什么是.NET执行环境 ? .NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件.它提供一个主机进程,C ...

  4. 非托管C++互操作

    .NET简谈互操作(一:开篇介绍) .NET简谈互操作(二:先睹为快) .NET简谈互操作(三:基础知识之DllImport特性) .NET简谈互操作(四:基础知识之Dispose非托管内存) .NE ...

  5. Jquery相关插件

    jQuery 插件autocomplete 应用 介绍 $("#AccountNames").autocomplete(Accounts, { minChars: 0, match ...

  6. Ubuntu 14.04 安装sublime

    参考 How do I install Sublime Text 2/3? Ubuntu 14.04 安装sublime 通过apt-get包管理器安装sublime. sublime2.0: sud ...

  7. 51nod 1422 沙拉酱前缀

    http://www.51nod.com/onlineJudge/questionCode.html#problemId=1422&noticeId=399940 题意: 思路: 先把所有步骤 ...

  8. Spring框架学习

    没有状态变化的对象(无状态对象):应当做成单例. Spring-framework的下载:http://repo.spring.io/release/org/springframework/sprin ...

  9. struct和typedef struct用法和区别

    1 首先://注意在C和C++里不同 1.1 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu ...

  10. Centos6.8安装nginx(一)

    在这里对nginx的安装简单的做个记录,后续有时间的话在详细补充. 1.yum安装g++: yum install -y gcc gcc-c++ [enter] 2.下载必需的依赖库:zlib(为了g ...