mysql 半同步复制(semi_sync_replication)搭建及使用

2023-11-01

      google为mysql开发了一个补丁一个基于半同步的补丁,应用与mysql5.0。回来mysql打上了该补丁,并在5.5版本中使用。半同步复制的理念是什么呢?在数据库更改操作执行前,确保更改操作至少被写入一台slave磁盘中,意味着着对于每一个连接,最多只有一个事务会由于master崩溃丢失。主要是保证数据完整性,防止事务的丢失。
半同步配置
前提主从复制环境已搭建好(省略)
master操作
安装插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.21 sec)

mysql> show variables like 'rpl_%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_recovery_rank                  | 0     |
| 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    |
+------------------------------------+-------+
5 rows in set (0.00 sec)
设置变量,启用半同步复制
mysql> set global rpl_semi_sync_master_enabled=on ;
Query OK, 0 rows affected (0.02 sec)

slave 操作
安装插件
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.06 sec)

mysql> show variables like 'rpl_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=on ;
Query OK, 0 rows affected (0.00 sec)
rpl_semi_sync_master_enabled和rpl_semi_sync_slave_enabled也可以配置在master和slave的配置文件中,这样服务器重启也生效。
这样一个半同步复制就配置完成。配置完slave,我们需要考虑如下两个问题
 1 如果所有slave崩溃怎么办?这时将没有slave通知master,事务已写入中继日志中。
 2 如果所有的slave断开怎么办?在这种情况下,没有slave通知master处于安全考虑而发送事务。
 还有两个参数解决以上情况
rpl_semi_sync_master_timeout=milliseconds
防止半同步复制在没有收到确认的情况下,发送堵塞可以使用rpl-semi-sync-mastertimeout=milliseconds选项设置计数器。master在超时之前没有收到确认,将恢复到异步复制,继续执行半同步没有进行的操作
通过 set global rep-semi-sync-master-timeout=milliseconds 设置。需要注意的是作为服务器变量,服务器重启此值不被保存
rpl-semi-sync-master-wait-no-slave=on/off
如果一个事务被提交,而master没有slave连接,这时slave不可能将事务发送到其他地方保存,默认情况下,master会在时间限制范围内急性等待slave的,并确认该事务被正确写入磁盘上。此种情况下,master还是会恢复到异步复制。

如何监控半同步复制
安装的插件提供了大量状态变量,可以利用这些状态变量监控半同步复制,简绍一些最有用的变量,其他变量,可以查询在线手册(http://dev.mysql.com/doc/refman/5.5/en/replication-semisync-interface.html)
rpl_semi_sync_master-clients  
此状态变量报告了支持和主从半同步复制已连接的slave数量
rpl_semi_sync_master_status
master的半同步复制状态 1是活动状态,0是非活动状态。要么是没有被启用,或是因为已恢复到异步复制
使用show status命令或通过information_schema模式下的global_status来查询这些状态变量。
mysql> show status like 'rpl_semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 0     |
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 0     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | ON    |
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |
| Rpl_semi_sync_master_tx_wait_time          | 0     |
| Rpl_semi_sync_master_tx_waits              | 0     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 0     |
+--------------------------------------------+-------+
使用半同步复制,性能也许会受到影响,主要原则是来保证数据完整性,在这里完整性才是最重要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 半同步复制(semi_sync_replication)搭建及使用 的相关文章

  • 大搜索时代!SEO如何挖掘关键词?方法都在这里!-搜嗖工具箱

    做SEO关键词挖掘是关键 好的关键词可以帮助您的网站在搜索引擎中获得更好的排名 要问都有哪些挖掘关键词的方法 那就太多了 下边就列举几个我常用的方式吧 方法一实用工具挖掘关键词 我们知道有很多关键词在线挖掘工具可以帮助我们快速实现关键词挖掘
  • 这款开源神器,让你能在 iPad 上随心所欲写代码!

    注意 这篇文章就是在劝你买iPad Pro 手动狗头 最近 苹果推出了新的iPad Pro 号称生产力工具 然而对程序员来说 不能写代码 就难以称得上生产力 虽然也有一些优秀的写代码App可供程序员使用 但本着能不花钱就不花钱的原则 还是可
  • epoll实现原理

    epoll的使用 epoll只有以下的三个系统函数调用 epoll create epoll ctl和epoll wait int epoll create int size 其中参数 1 size指明了生成描述符的最大范围 该函数返回一个
  • Java_.jar .war .ear区别

    jar 全称 java archive 包含 class properties文件 是文件封装的最小单元 部署文件 application client xml 级别 小 war 全称 web archive 包含 Servlet JSP页
  • es搜索引擎

    ES的优势及使用场景 ES的功能及使用简介 简介 Elaticsearch简称为ES 是一个开源的可扩展的分布式的全文检索引擎 它可以近乎实时的存储 检索数 据 本身扩展性很好 可扩展到上百台服务器 处理PB级别的数据 ES使用Java开发
  • switch删除用户显示无法连接服务器,switch无法连接互联网怎么办 NS无法联机联网详细解决办法...

    switch最经常碰到的问题是就是联网的问题 很多玩家会遇到无法联网以及联机对战的情况 那么遇到这样的问题该怎么办呢 下面就来为大家分享一下解决办法 可能的原因 网络NAT类型不是创建与其他用户的对等连接 Peer to Peer P2P
  • 软件测试相关试题知识点

    软件测试相关试题 1 下面不属于软件测试步骤的是 A 集成测试 B 回归测试 C 确认测试 D 单元测试 解析 B 回归测试是指修改旧代码后重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误 因此不是软件测试的步骤 2 Junit
  • MAC下jupyter的安装及使用

    一 安装 在终端输入以下命令 conda install jupyter notebook 运行结果如下 Collecting package metadata done Solving environment done Package P
  • date时间加减(linux,aix)

    需求是这样的 有一个在日志中的时间 格式化为 Y m d H M S格式的 那现在想比较这个时间与当前时间差值是否大于一天 这个应该怎么做呢 设计到日期的减法运算 首先先man date来看一下用法吧 DATE 1 User Command
  • java排序之快排

    这篇文章来谈谈快排 最近有一种感觉 只要有规律可循的代码 分解成为两部分以后效率就会提高很多 代码思想如下 这个代码写的是快排 快排最主要的思维就是寻找一个分界值 大的放在一边 小的放在一边 然后递归分别处理大的和小的 这里需要注意的是我们
  • 拓扑 排序

    拓扑排序的适用范围 有向无环图 DAG 实际上拓扑排序不止可以用来求拓扑序 在 D A G DAG DAG 中 我们即可以用 t o
  • c++11 智能指针 (std::shared_ptr)(一)

    定义于头文件
  • 有趣的数据结构算法14——二叉树的构建

    有趣的数据结构算法14 二叉树的构建 什么是树 什么是二叉树 二叉树特点 二叉树内的常用概念 二叉树的实现 整体实现代码 GITHUB下载连接 每天学习一点点 我就能变成马云哥哥的打工仔 什么是树 树状图是一种数据结构 它是由n n gt
  • 对一句话木马的初步认识

    在之前只停留在怎么使用一句话木马的层次上 但不懂原理总觉得不太踏实 今天稍微查询了一些资料 个人对一句话有了一些了解 我们分析一下最简单的一句话木马 能理解一句话木马也得益于最近刚好了解了一下php语音 P O S T
  • 面板模型在python上的实现

    背景 有一份城镇GDP相关的数据 共有9个地区分别11年 2008 2018 的数据 无缺失数据 数据中包括X1 城乡居民年末储蓄存款 X2 年末常住人口 X3 城镇化率 X4 教育支出 共4个自变量 因变量为GDP 现希望研究4个自变量对
  • js的array.some()和array.every()

    一 检测数组 ages 的所有元素是否都大于等于 18 var ages 32 33 16 40 function checkAdult age return age gt 18 function myFunction document g
  • STM32F407ZGT6实现OLED显示屏

    1 调试工具 2 OLED简介 3 硬件电路 接线 本文采用7脚 倘若采用4脚 资料代码啥的可以在江科大B站视频下载 资料下载 https pan baidu com s 1SqKyKr5Fsl 9gBJi8aVxTw 提取码 8kzh 链
  • SQL表连接中如何根据条件不同关联不同的字段

    在实际的项目开发中 对于数据库的连接条件是根据项目的需求来关联的 今天博主遇到了这样的一个问题 在数据库中的某张表中 有资产组织 所有权 使用部门三个字段 现在需要给定一个单位 根据实际的需求 需要关联这三个维度 举个例子 现在需要查找单位
  • Android Spider XX兔 Wechat Cookie 校验 注册案例(二)

    声明 此次案例只为学习交流使用 抓包内容 敏感网址 数据接口均已做脱敏处理 切勿用于其他非法用途 文章目录 声明 前言 一 资源推荐 二 任务说明 三 App抓包分析 四 还原JS加密 1 Date类 2 MD5类 3 组合调用还原 api

随机推荐

  • Mysql高可用高性能存储应用系列3 - mysqld_multi配置主从集群

    概述 主从复制要解决的问题 1 写操作锁表 影响读操作 影响业务 2 数据库备份 3 随着数据增加 I O操作增多 单机出现瓶颈 主从复制就是从服务器的主节点 复制到多个从节点 默认采用异步的方式 主从复制原理 从库服务器会开启两个一部的独
  • 域名解析成ip的过程

    解析过程如图 图片来自黑马程序员 当一个用户在地址栏输入网址时会经历以下过程 1 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址 如果有 解析结束 同时域名被缓存的时间也可通过TTL属性来设置 2 如果浏览器缓存中没有 专业点
  • Unity打包安卓Apk

    如果遇到很多坑 不顺利 知乎传送门专治各种bug https zhuanlan zhihu com p 113007406 Unity想要打包安卓应用 需要Jdk与SDK 1 配置jdk环境变量 版本1 8 系统以windows10截图为例
  • ipad pro键盘快捷键

    主屏幕 前往主屏幕 shift H 搜索 space 切换应用 tab 文稿快捷键 剪切
  • 【事件驱动】【数码管识别】(C++动态链接库的封装和调用)

    一 问题的背景 在数码管识别项目中 由于采用多个摄像头 目前又要增加一倍的摄像头数 所以图片的处理速度就不得不考虑了 目前拟才用的方案是将数码管识别过程中比较耗时的操作代码封装成动态链接库的形式 然后采用多线程方法 对多幅图像并行处理 提高
  • Robotframework 入门教程(一)

    最近工作中用Robot Framework框架来做自动化 所以 花时间学习了一下 网上好的文档不多 大多都是复制粘贴如何安装环境 要么就是介绍了一堆RIDE的界面 活活把这么强大的一个工具讲成了个photoshop 我目前用了1个多月 这个
  • GMT、UTC、DST、CST时区

    GMT Greenwich Mean Time 格林威治标准时间 UTC Coordinated Universal Time 世界协调时间 DST Daylight Saving Time 夏季节约时间 CST 四个不同时区的缩写 1 C
  • 全网最新,解决maven配置本地仓库,IDEA不显示本地仓库的问题,IDEA创建maven项目,maven下载失败

    导语 在本地安装了maven后 使用IDEA创建maven项目后 IDEA下载到本地仓库会失败 配置了maven的本地仓库 IDEA不自动显示 我的maven的版本是3 8 1 IDEA的版本2020 2 s 正确配置maven的本地仓库的
  • chromedp入门

    chromedp是什么 chromedp是go写的 支持Chrome DevTools Protocol 的一个驱动浏览器的库 并且它不需要依赖其他的外界服务 比如 Selenium 和 PhantomJs Chrome DevTools
  • Markdown自动生成左侧导航栏

    导出Mardown为html 复制粘贴上去即可
  • 心理学十五讲

    真的应该看看这种科普类的作品 1 原来对于催眠这些东西 早就有系统的研究 有人赞同 有人不赞同 而我却不知道 不知道呀 必须勤读书才行呀 2013 12 9 2 中国人为什么趋同 女人为什么会要买广告上的东西 人们会根据周围的人的反应来判断
  • python使用plot画图

    参考地址 matplot官方文档 调用方法 from matplotlib import pyplot as plt 引入库 matplotlib inline 嵌入内部 matplotlib 跳出交互 plt plot x y fmt d
  • SAS EM(五)贷款评分卡制作(数据集+实战)(小白上手简易版)

    SAS EM 五 贷款模型评分卡制作 在完成评分卡制作前 需要确保sas相对应的功能是否能使用 正所谓工欲善其事必先利其器 这篇博客主要是实践为主 至于理论知识可查看我的评分卡专栏 有相关博文介绍 https blog csdn net l
  • vue鼠标移入添加class样式,鼠标移出去除样式

    div ul li li ul div
  • VTK Python 代码详解(五)读取点云数据、旋转平移、合并显示

    VTK Python 代码整理 读取点云 txt 数据并显示 txt 点云数据 代码 效果图 代码2 背面效果 代码封装优化 两个点云模型同时显示 代码 效果图 旋转 平移动点云模型 旋转 平移 变换代码 完整代码 最终效果 读取点云 tx
  • Error: Activity class {com.example.wusuowei.uniapp_simple/io.dcloud.PandoraEntry} does not exist.

    问题 uniapp离线打包时 将原本烧到手机的apk删除后 重新编译 出现了下面的错误 adb shell am start n com example wusuowei uniapp simple io dcloud PandoraEnt
  • Required request body is missing 错误解决

    今天测试接口的时候报错如下 ERROR c j d a c PartCleanController Required request body content is missing org springframework web metho
  • John Carmack:我们为什么不开发Linux游戏

    http www csdn net article 2013 02 13 2814126 John Carmack why we dont develop linux game 摘要 虽然Valve已经公开支持Linux游戏 Blizzar
  • Nignx优化与防盗链

    目录 前言 1 nginx优化 2 修改用户和组 3 设置缓存时间 4 日志分割 5 连接超时 6 更改进程数 7 网页压缩 8 盗链与防盗链 9 FPM模块参数优化 小结 前言 在企业信息化应用环境中 服务器的安全性和响应速度需要根据实际
  • mysql 半同步复制(semi_sync_replication)搭建及使用

    google为mysql开发了一个补丁一个基于半同步的补丁 应用与mysql5 0 回来mysql打上了该补丁 并在5 5版本中使用 半同步复制的理念是什么呢 在数据库更改操作执行前 确保更改操作至少被写入一台slave磁盘中 意味着着对于