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%"

转载于:https://www.cnblogs.com/gcczhongduan/p/5043171.html

mysql半同步复制实现相关推荐

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

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

  2. mysql半同步复制

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

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

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

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

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

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

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

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

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

  7. 简述mysql半同步复制—semisync

    mysql的半同步复制-semisync是基于默认的异步复制和完全同步复制之间,它是在master在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个slave收到并写到relay log ...

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

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

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

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

最新文章

  1. 明星软件工程师的十种特质
  2. 美军称五角大楼遭网络袭击 2.4万份敏感文件被盗
  3. 【控制】影响系统响应的因素
  4. 抽象类,接口都与继承有关
  5. Centos 7 搭建nginx 服务 使得别人能够访问自己的个人网站
  6. char a[]和char *a的比较,数组名,数组首地址,a,a,a[0]
  7. python的基本语术_一起学python-彻底掌握专业术语“变量”的概念
  8. 设计社交网络的数据结构
  9. MySQL/InnoDB的并发插入Concurrent Insert
  10. 国产达梦数据库安装教程(DM7,Windows)
  11. 新能源汽车动力电池(热管理)热流体仿真分析-基于SCDM和STAR-CCM+热仿真分析课程(评论发链接)
  12. 计算机技术与电气工程专业代码,电气工程及其自动化专业代码:080601 [本科]
  13. 论如何用电脑开手游辅助,实现QQ飞车自动跑图
  14. 兄弟连Linux(二)--Linux常用命令
  15. Word编号设置和跳到尾页快捷键
  16. cocos2d-js的(layer)生命周期,ctor,onEnter,onExit的使用
  17. win7已经阻止此发行者在您的计算机上运行软件,Win7系统提示Windows已经阻止此软件因为无法验证发行者解决方法...
  18. Python | 人脸识别系统 — 活体检测
  19. RAM、ROM、emmc、iNand、SD卡、mmc 与 Nandflash 的区别
  20. 剖析云计算技术及架构(2 云存储)

热门文章

  1. xd怎么制作年月日选项_Adobe XD从入门到精通(上)
  2. 在Unity实现游戏命令模式
  3. LOL手游王者局诺手教学,3级压制阿卡丽,全程一个拼字
  4. ASP.NET MVC (五、HttpClient接口解析)
  5. 如何修改Xshell默认存储路径
  6. 牛客网暑期ACM多校训练营(第三场)A.PACM Team(多重01背包)
  7. 从未后悔认识你,只是不知如何面对分开的结局
  8. “进度条”博客——第四周
  9. 2012年总结,2013年的计划
  10. 关于多线程的一个例子(UI实时显示)