MySQL 异步复制、半同步复制、增强半同步复制(史上最全)

news2024/11/25 4:00:02

背景:来自于小伙伴问题

小伙伴的难题:

mysql主从同步的时候,半同步和增强半同步是怎样的一个概念,我看网上说的有点不明不白的,也没找到合适的解释。

在这里插入图片描述

这里尼恩给大家做一下系统化、体系化的梳理。也一并把这个题目以及参考答案,收入咱们的 《尼恩Java面试宝典 PDF》MySQL专题,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。

注:本文以 PDF 持续更新,最新尼恩 架构笔记、面试题 的PDF文件,请从下面的链接获取: 码云

目前MySQL主要有三种复制方式

1)异步复制

2)半同步复制

3)增强半同步复制

推荐使用:对性能要求较高的推荐使用异步复制 ,如果运行的金融类业务推荐使用增强半同步复制,并使用ROW+GTID+5.7以上

异步复制

MySQL复制的默认方式

说明:

如果对这个不好理解,这个就是rocketmq的 异步刷盘+异步复制

具体请参见尼恩的rocketmq 高可用视频,第17章视频

半同步复制

5bfef20d053a20f3221f93b190e17726.png

rpl_semi_sync_master_wait_point=after_commit

说明:

如果对这个不好理解,这个就是rocketmq的 同步刷盘+异步复制

具体请参见尼恩的rocketmq 高可用视频,第17章视频

半同步复制的优缺点

缺点1: 幻读

当用户发起一个事务,该事务已经写入redo日志和binlog日志,但该事务还没写入从库,此时处在waiting slave dump处,此时另一个用户可以读取到这条数据,而他自己却不能;

缺点2:数据丢失

一个事务在waiting slave dump处crash后,主库将比从库多一条数据

疑问:此时如果主从复制恢复后,该数据时候可以正常同步到从服务器?(未测试!!)

增强半同步复制

7834e199a9c2f014f7cb743da0b43fec.png

rpl_semi_rsync_master_wait_point=after_sync

改善1:解决幻读

当用户发起一个事务,该事务写入二进制后,便向从库进行同步,此时其他用户无法读取到该数据,解决了幻读

改善2:解决数据丢失

一个事务在waiting slave dump处crash掉后,可以通过观察从库上是否存在主库的last gtid值,如果存在,这条数据正常恢复,如果不存在则删除主库的那条多余的GTID值,然后恢复,保证了数据的完整性;

说明:

如果对这个不好理解,这个就是rocketmq的 同步刷盘+同步复制

具体请参见尼恩的rocketmq 高可用视频,第17章视频

部署测试

异步复制环境:一主一从

主IP:192.168.20.206

从IP:192.168.20.212

需要3个步骤:

1.给主库加载半同步复制插件,并件修改主库的my.cnf参数,;

2.给从库加载半同步复制插,并件修改从库的my.cnf参数,;

3.在从库中执行使用stop salve io_thread 、start slave io_thread命令搞定

1.1)主库加载半同步复制插件

install plugin rpl_semi_sync_master soname 'semisync_master.so';

1.2)主库开启半同步复制模式

set global rpl_semi_sync_master_enabled=1;

set global rpl_semi_sync_master_timeout=1000;

2.3)主库修改my.cnf文件

vim /etc/my.cnf

[mysqld]

###:for replcation

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000

2.1)从库加载半同步复制插件

install plugin rpl_semi_sync_SLAVE soname 'semisync_slave.so';

2.2)从库开启半同步复制模式

set global rpl_semi_sync_slave_enabled=1;

2.3)从库修改my.cnf文件

vim /etc/my.cnf

[mysqld]

###:for replcation

rpl_semi_sync_slave_enabled=1

3.3)在从库中执行使用stop salve io_thread 、start slave io_thread;

stop slave io_thread;

start slave io_thread;

半同步复制监控命令:

show plugins;

show global status like '%semi%';

show global variables like '%semi%';

参考文献

https://blog.csdn.net/weixin_35555531/article/details/113948452

技术自由的实现路径 PDF 获取:

实现你的 架构自由:

《吃透8图1模板,人人可以做架构》

《10Wqps评论中台,如何架构?B站是这么做的!!!》

《阿里二面:千万级、亿级数据,如何性能优化? 教科书级 答案来了》

《峰值21WQps、亿级DAU,小游戏《羊了个羊》是怎么架构的?》

《100亿级订单怎么调度,来一个大厂的极品方案》

《2个大厂 100亿级 超大流量 红包 架构方案》

… 更多架构文章,正在添加中

实现你的 响应式 自由:

《响应式圣经:10W字,实现Spring响应式编程自由》

这是老版本 《Flux、Mono、Reactor 实战(史上最全)》

实现你的 spring cloud 自由:

《Spring cloud Alibaba 学习圣经》 PDF

《分库分表 Sharding-JDBC 底层原理、核心实战(史上最全)》

《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之间混乱关系(史上最全)》

实现你的 linux 自由:

《Linux命令大全:2W多字,一次实现Linux自由》

实现你的 网络 自由:

《TCP协议详解 (史上最全)》

《网络三张表:ARP表, MAC表, 路由表,实现你的网络自由!!》

实现你的 分布式锁 自由:

《Redis分布式锁(图解 - 秒懂 - 史上最全)》

《Zookeeper 分布式锁 - 图解 - 秒懂》

实现你的 王者组件 自由:

《队列之王: Disruptor 原理、架构、源码 一文穿透》

《缓存之王:Caffeine 源码、架构、原理(史上最全,10W字 超级长文)》

《缓存之王:Caffeine 的使用(史上最全)》

《Java Agent 探针、字节码增强 ByteBuddy(史上最全)》

实现你的 面试题 自由:

4000页《尼恩Java面试宝典 》 40个专题

以上尼恩 架构笔记、面试题 的PDF文件更新,请到《技术自由圈》公号获取↓↓↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【每天学习一点点】RocketMQ的架构、写数据、高效的数据查询索引、负载均衡

Rocket一、学习目标二、RocketMQ的架构运行图2.1、NameServer2.1.1 为什么需要NameServer2.1.1.1 不可以没有nameserver吗?2.1.2 NameServer需要单独部署吗2.1.3 Nameserver可以动态注册和注销Broker、Topic和Consume 是什么意思2.1.4 可以使用nacos的配置中心替代N…

成本与体验的“非零和博弈”

随着移动互联网和智能终端的普及,越来越多的海内外互联网企业开始发力短视频业务。在短视频用户全球化,短视频产品及内容消费井喷式增长的今天,用户开始逐渐对体验有了越来越高的要求。为了更清晰更流畅地播放,用户播放成本也随着…

TensorFlow GPU不可用,WSL2安装

这个帖子写给23年刚买电脑、系统是win11,tensorflow版本是2.10以上的兄弟们。不符合的可以去看其他答案了。 这是以我三天来的安装经历来写的,希望能给后来的兄弟们减少时间的浪费。 win11,安装的tensorflow的版本都是2.12的,但…

(二)Cmd Markdown 编辑阅读器的使用效果 | 以 Cmd Markdown 编辑阅读器为例

Cmd Markdown 编辑阅读器使用指南 (一)Cmd Markdown 编辑阅读器的使用示例 | 以 Cmd Markdown 编辑阅读器为例(二)Cmd Markdown 编辑阅读器的使用效果 | 以 Cmd Markdown 编辑阅读器为例 在 Cmd Markdown 编辑阅读器( …

C语言实现Allan方差计算

Allan方差专有概念解释 1.量化噪声 量化噪声是一切量化操作所固有的噪声,只要进行数字量化编码采样,传感器输出的理想值与量化值之间就必然会存在微小的差别,量化噪声代表了传感器检测的最小分辨率水平。 2.角度随机游走 角度随机游走是宽带角速率白噪声积分的结果,即陀螺…

金三银四,大伙冲刺,SpringCloud 的 25 个面试考点

今天给大家分享SpringCloud高频面试题。 Spring Cloud核心知识总结 下面是一张Spring Cloud核心组件关系图: 从这张图中,其实我们是可以获取很多信息的,希望大家细细品尝。 话不多说,我们直接开始 Spring Cloud 连环炮。 连环炮…

直播协议:RTSP、RTP、RTCP、RTMP、HLS

流媒体传输一般采用HTTP/TCP(RTCP)协议来传输控制信息,而用UDP(RTP)协议来传输实时媒体数据(TCP开销相对较大,所以不太适合传输实时数据)。 流媒体传输一般都是采用建立在UDP协议上的RTP/RTSP等实时传输协议。为何要在UDP而不在T…

Spring事务:事务的基础 以及使用

目录 GTP前言 一、关于事务 1.事务的四大特性ACID 2.脏读、不可重复读、幻读 ① 脏读 ② 不可重复读 ③ 幻读 3.事务的隔离级别 4.事务的传播机制 ① Propagation.REQUIRED 默认 ② Propagation.SUPPORTS ③ Propagation.MANDATORY ④ Propagation.REQUIRES_NEW ⑤…

APK一键注入网络验证后台PHP源码ThinkPHP开发版

APK一键注入网络验证后台PHP源码ThinkPHP开发版 APK一键注入网络验证后台PHP源码ThinkPHP开发版 源码: https://url11.ctfile.com/d/25976711-55383299-827d49?p6724 (访问密码:6724) 修复 已去除登录提示到期问题。 功能简介 - 无注…

庄懂的TA笔记(十三)<特效-混合模式:四种主要透明通道用法 AC,AB,AD,自定义混合>

庄懂的TA笔记(十三)<特效-混合模式:四种主要透明通道用法 AC,AB,AD,自定义混合> 效果展示: 正文: 一、特效类大纲: 1、特效 透 2、特效 动 3、特效 映 二、特效:AC:透…

学习 Python 之 Pygame 开发魂斗罗(十三)

学习 Python 之 Pygame 开发魂斗罗(十三)继续编写魂斗罗1. 创建敌人2类2. 编写敌人2类的draw()函数3. 编写敌人越界消失函数4. 编写敌人开火函数5. 把敌人2加入地图进行测试继续编写魂斗罗 在上次的博客学习 Python 之 Pygame 开发魂斗罗(十…

英特尔CEO基辛格:开创可持续计算新时代

近日,帕特基辛格作为英特尔CEO后,第一次来华访问。在2023英特尔可持续发展高峰论坛上,笔者有幸聆听他的演讲。他严谨又不乏幽默地给我们分享了英特尔如何践行可持续发展的思考和举措。 基辛格表示,身处科技行业,我们不…

Jetson Nano驱动机器人的左右两路电机

基于Jetson Nano板子搭建一个无人车,少不了减速电机驱动轮子滚动,那如何驱动呢?从Jetson.GPIO库文件来说,里面没有支持产生PWM的引脚,也就意味着Jetson nano没有硬件产生PWM的能力,所以我们不得不使用别的方…

容器的崛起——Docker与K8s的相爱相杀

容器的崛起 对于K8s启用docker,作为普通开发者的体感是,k8s不就是docker的集群操作吗?k8s弃用docker就像鱼反对水一样不可思议,那么这两个技术究竟是什么关系,Kubernetes 是如何一步步与 Docker 解耦的,请…

k8s学习-CKS真题-Runtime设置gVisor

目录题目环境搭建解题参考题目 该 cluster 使用 containerd 作为 CRI 运行时。containerd 的默认运行时处理程序是 runc。 containerd 已准备好支持额外的运行时处理程序 runsc (gVisor)。 Task 使用名为 runsc 的现有运行时处理程序,创建一个名为 untrusted 的 Ru…

MIPI D-PHYv2.5笔记(20) -- High-Speed Data-Clock Timing

PHY是在Forward Direction中的源同步接口(source synchronous interface)。无论是处于Forward还是Reverse信号模式,只能有一个时钟源。在Reverve Direction中,时钟是在Forward Direction中被发送的。 图1 Conceptual D-PHY Data a…

本地目录映射到公网访问

1 环境搭建 1.1 nodejs安装 首先是安装nodejs,下载地址:https://nodejs.org/zh-cn/download 选择windows exe版本直接下载。 解压可以得到如下文件: 然后添加环境变量保证在任意终端可以直接使用命令。 当然也可以直接下载msi文件进行安装…

AD8226ARZ-R7-ASEMI代理亚德诺AD8226ARZ-R7车规级芯片

编辑-Z AD8226ARZ-R7芯片参数: 型号:AD8226ARZ-R7 输入电压噪声:22 nV/√Hz 输出电压噪声:120 nV/√Hz 电流噪声:100 fA/√Hz 输入偏移:200μV 输出偏移:1000μV 输入偏置电流&#xff…

得物 API一站式协作平台的一些思考

1.背景 Mooncake是得物API一站式协作平台。从2022年3月份开始负责Mooncake,到现在已经一年了,回顾这一年,Mooncake大的阶段上,总共经历过两个版本: 1、Mooncake 1.0: 面向前端和客户端的mock平台,主要解决接口调用者…

PHP实现以函数的方式计算阶乘,使用函数输入数值逆序输出的两个代码程序

目录 前言 一、实现以函数的方式计算阶乘 1.1运行流程(思想) 1.2代码段 1.3运行截图 二、使用函数输入3个数求和,并以表单形式输出 2.1运行流程(思想) 2.2代码段 2.3运行截图 前言 1.因多重原因,…