当前位置: 首页 > news >正文

MySQL半同步复制

1.MySQL主从复制模式

1.1异步复制

异步复制为 MySQL 默认的复制模式,指主库写 binlog、从库 I/O 线程读 binlog 并写入 relaylog、从库 SQL 线程重放事务这三步之间是异步的。
异步复制的主库不需要关心备库的状态,主库不保证事务被传输到从库,如果主库崩溃,某些事务可能还未发送到从库,切换后可能导致事务的丢失。
【优点】是可以有更高的吞吐量,【缺点】是不能保持数据实时一致,不适合要求主从数据一致性要求较高的应用场景。

1.2同步复制

同步复制的模式下,主库在提交事务前,必须确认事务在所有的备库上都已经完成提交。当主库执行完客户端提交的事务后,需要等到所有从库也都执行完这一事务后,才返回给客户端执行成功。因为要等到所有从库都执行完,【缺点】执行过程中会被阻塞,等待返回结果,所以性能上会有很严重的影响,其【优点】是任何时候主备库都是一致的,主库的崩溃不会丢失事务。

1.3半同步复制

它结合了异步复制和同步复制的优点。在半同步复制中,主服务器在确认从服务器已经接收并且记录了事件之后才继续执行其他事件,从而减少了数据丢失。MySQL5.5开始通过插件的方式支持半同步复制。

与同步复制相比,半同步复制速度快很多,因为它只需要至少1个从库确认写入 relaylog,并不需要完成在从库上的事务提交,同时又比异步复制更安全,因为主库在提交时,事务至少已经存在2个地方(主库的 binlog 和从库的 relaylog)。

由于半同步复制在提交事务前,需要从库返还确认信息,所以这里涉及到网络的往返通信开销,因此半同步复制只适合在网络条件较好且地理上距离不远的环境部署,否则可能会因为网络延迟大幅降低主库性能。

2.MySQL半同步复制

MySQL官方提供的半同步复制插件semisync_master.sosemisync_slave.so,登录MySQL服务器,在MySQL命令行客户端中执行以下命令来安装插件:
– 在主服务器上安装

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';  

– 在从服务器上安装

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

安装插件后,可以通过执行SHOW PLUGINS;命令来验证插件是否成功安装,在输出中查找rpl_semi_sync_masterrpl_semi_sync_slave插件,并确保它们的Status列为ACTIVE

如果需要卸载,则执行UNINSTALL PLUGIN plugin_name语句,其中plugin_name是要卸载的插件名称。

在主服务器的配置文件中添加:

[mysqld]  
rpl_semi_sync_master_enabled = 1  
rpl_semi_sync_master_timeout = 10000  # 超时时间,单位毫秒

在从服务器的配置文件中添加:

[mysqld]  
rpl_semi_sync_slave_enabled = 1

rpl_semi_sync_master_enabled 作用于主库(Master)是否启用半同步复制功能,开启后主服务器会等待至少一个从服务器确认它已经接收并记录了二进制日志事件中的事务,然后才会向客户端报告事务已提交;

如果在从库上尝试设置 rpl_semi_sync_master_enabled 为 ON,MySQL 实际上会忽略这个设置。由于从库不是复制过程中的“主”节点,因此设置该参数不会对复制过程产生任何积极影响。它不会改变从库的行为或性能。

rpl_semi_sync_slave_enabled 用于控制从库(Slave)是否启用半同步复制功能,开启后从服务器会将其接收到的事务写入中继日志并应用这些事务后,向主服务器发送一个确认消息。这个确认消息是半同步复制机制中主服务器等待的“至少一个确认”。

在某些情况下,如果主库无法及时从从库接收到确认信息(例如,从库宕机或网络故障),主库会根据 rpl_semi_sync_master_timeout 参数(单位毫秒,行内基线为5000)设置的超时时间来决定是否继续等待或降级为异步复制(过短的超时时间可能导致频繁地切换到异步复制模式);

【降级日志】
可以通过查看复制状态的相关变量(如SHOW STATUS LIKE 'Rpl_semi_sync_master_status';)来推断复制模式是否已更改
可以通过查看MySQL的错误日志(Error Log)来获取与降级相关的信息。

使用半同步复制的好处

  • 提高数据一致性:与异步复制相比,半同步复制能够确保至少有一个从服务器已经接收到并记录了主服务器上的事务,从而提高了数据的一致性。
  • 减少数据丢失的风险:在发生故障转移时,由于至少有一个从服务器已经接收到事务,因此可以减少数据丢失的风险。
  • 性能适中:虽然半同步复制可能会对主服务器的性能产生一定影响(因为需要等待确认),但这种影响通常小于同步复制,并且比异步复制提供了更高的数据一致性保障。如果网络延迟较高或不稳定,可能会影响事务的提交性能。

相关文章:

MySQL半同步复制

1.MySQL主从复制模式 1.1异步复制 异步复制为 MySQL 默认的复制模式,指主库写 binlog、从库 I/O 线程读 binlog 并写入 relaylog、从库 SQL 线程重放事务这三步之间是异步的。 异步复制的主库不需要关心备库的状态,主库不保证事务被传输到从库&#xf…...

[一本通提高数位动态规划]数字游戏:取模数题解

[一本通提高数位动态规划]数字游戏:取模数题解 1前言2问题3状态的设置4数位dp-part1预处理5数位dp-part2利用状态求解6代码7后记 1前言 本文为数字游戏:取模数的题解 需要读者对数位dp有基础的了解,建议先阅读 论数位dp–胎教级教学 B3883 […...

[Day 39] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

區塊鏈的安全性分析 區塊鏈技術已經成為現代數字經濟的一個重要組成部分,提供了去中心化、透明和不可篡改的數據存儲與交易系統。然而,隨著區塊鏈技術的廣泛應用,其安全性問題也日益受到關注。本篇文章將詳細探討區塊鏈技術的安全性&#xf…...

OpenStack入门体验

一、云计算概述 1.1什么是云计算 云计算(cloud computing)是一种基于网络的超级计算模式,基于用户的不同需求,提供所需的资源,包括计算资源、存储资源、网络资源等。云计算服务运行在若干台高性能物理服务器之上,提供每秒 10万亿次的运算能力…...

预测未来 | MATLAB实现RF随机森林多变量时间序列预测未来-预测新数据

预测未来 | MATLAB实现RF随机森林多变量时间序列预测未来-预测新数据 预测效果 基本介绍 随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法。如果用图来表示他们之间的关系如下: 随机森林是由很多决策树构成的,不同决策树之间没有关联。当我们进行…...

iOS 系统提供的媒体资源选择器(UIImagePickerController)

简介 图片或者视频的选择功能几乎是每个APP必不可少的,UIImagePickerController 是 iOS 系统提供的一个方便的媒体选择器,允许用户从照片库中选择图片或视频,或者使用相机拍摄新照片和视频。 它的页面简单易用,代码稳定可靠&…...

电脑如何扩展硬盘分区?告别空间不足困扰

在数字化时代,电脑硬盘的存储空间显得愈发重要。随着个人文件、应用程序和系统更新的不断累积,原有的硬盘分区可能很快就会被填满。为了解决这个问题,扩展硬盘分区成为了一个非常实用的方法。那么,电脑如何扩展硬盘分区呢&#xf…...

论文阅读:Mammoth: Building math generalist models through hybrid instruction tuning

Mammoth: Building math generalist models through hybrid instruction tuning https://arxiv.org/pdf/2309.05653 MAmmoTH:通过混合指令调优构建数学通才模型 摘要 我们介绍了MAmmoTH,一系列特别为通用数学问题解决而设计的开源大型语言模型&#…...

什么样的双筒式防爆器把煤矿吸引?

什么样的双筒式防爆器把煤矿吸引?要有好的服务和态度,要用心去聆听客户的需求,去解决客户的疑虑,用诚信去赢得客户的信任。 150产品的技术特点 双筒式防爆器采用双罐结构,其水封水位观测直观、能够快速有效排污、操作…...

如何保证冰河AL0 400G 100W 的稳定运行?

要保证冰河 AL0 400G 100w 的稳定运行,可以考虑以下几点: 1. 适宜的工作环境:确保设备放置在通风良好、温度适宜的环境中。良好的散热条件有助于防止设备过热,因为过热可能会导致性能下降或故障。该设备采用纯铝合金外壳&#xf…...

剪画小程序:巴黎奥运会,从画面到声音!

在巴黎奥运会的赛场上,每一个瞬间都伴随着独特的声音。那是观众的欢呼,是运动员冲刺的呐喊,是国歌奏响的激昂旋律。 如今,通过剪画音频提取,我们能够将这些珍贵的声音从精彩的画面中分离出来,单独珍藏。 想…...

【leetcode详解】心算挑战: 一题搞懂涉及奇偶数问题的 “万金油” 思路(思路详解)

前记: 做了几日的leetcode每日一题,几乎全是十分钟结束战斗的【中等】题,今日杀出来个【简单】题,反倒开始难以想出很清楚的解题思路,反复调试修改才将题目逐渐考虑全面,看到了原本思路的漏洞&#xff0c…...

【资料集】数据库设计说明书(Word原件提供)

2 数据库环境说明 3 数据库的命名规则 4 逻辑设计 5 物理设计 5.1 表汇总 5.2 表结构设计 6 数据规划 6.1 表空间设计 6.2 数据文件设计 6.3 表、索引分区设计 6.4 优化方法 7 安全性设计 7.1 防止用户直接操作数据库 7.2 用户帐号加密处理 7.3 角色与权限控制 8 数据库管理与维…...

MySQL 常用查询语句精粹

引言 MySQL 是一种广泛使用的开源关系型数据库管理系统,其强大的查询语言为用户提供了丰富的数据处理能力。掌握 MySQL 的常用查询语句对于数据库管理和数据分析至关重要。本文将介绍一些 MySQL 中的常用查询语句,并提供实际的示例。 基础查询 1. 选择…...

hive的内部表(MANAGED_TABLE)和外部表(EXTERNAL_TABLE)的区别

1.hive的表类型分为外部表和内部表 内部表和外部表的主要区别在于数据的存储方式。 外部表:外部表的存储在hdfs中,是我们指定的文件目录,当我们删除数据或者删除分区的时候不会将元数据删除,数据还会在hdfs目录中,我们…...

【AutoSar网络管理】验证ecu能够从RepeatMessage状态切换到ReadySleep

本专栏将为您提供: Autosar网络管理介绍,包括:状态迁移、状态行为、状态表现、切换条件、时间参数、消息类型等。DUT模拟节点介绍,包括:设计思路、代码展示、编写须知等。测试用例介绍,包括:测试内容、测试步骤、期望结果等。测试脚本介绍,包括:编写思路、代码展示、脚…...

js逻辑或(||)和且()

重点: JavaScript 中的逻辑运算符按照布尔逻辑进行计算,并且返回值是操作数本身 || ||:逻辑或,只要有一个表达式为真(truthy),整个表达式就为真 逻辑或 (||) 的行为: ||运算符可以用来连接两个…...

ElasticSearch入门(六)SpringBoot2

private String author; Field(name “word_count”, type FieldType.Integer) private Integer wordCount; /** Jackson日期时间序列化问题: Cannot deserialize value of type java.time.LocalDateTime from String “2020-06-04 15:07:54”: Failed to des…...

vue项目Nginx部署启动

1.vue打包 (1)package.json增加打包命令 "scripts": {"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 10.16.14.110","start": "npm run dev","un…...

Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules。Android studio纯java代码报错

我使用java代码 构建项目,初始代码运行就会报错。我使用的是Android Studio Giraffe(Adroid-studio-2022.3.1.18-windows)。我在网上找的解决办法是删除重复的类,但这操作起来真的太麻烦了。 这是全部报错代码: Dupli…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...