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

Mysql主从复制有哪些方式

MySQL 主从复制主要有以下几种方式,根据不同的分类标准(如同步机制、数据复制格式、拓扑结构等)可以分为:


一、按同步机制分类

1. 异步复制 (Asynchronous Replication)
  • 原理:主库提交事务后,立即返回给客户端成功,无需等待从库确认。
  • 特点
    • 性能高,但数据一致性较弱(主从可能存在延迟)。
    • 主库崩溃时,未同步的数据可能丢失。
  • 适用场景:对性能要求高、允许短暂数据不一致的场景(如读写分离、数据分析从库)。
2. 半同步复制 (Semi-Synchronous Replication)
  • 原理:主库提交事务后,至少等待一个从库接收并写入 relay log 后才返回客户端确认。
  • 特点
    • 平衡了性能和数据一致性。
    • 若从库无响应,主库会退化为异步复制。
  • 配置:需启用插件(如 rpl_semi_sync_masterrpl_semi_sync_slave)。
  • 适用场景:要求较高数据一致性的场景(如金融业务)。
3. 全同步复制 (Fully Synchronous Replication)
  • 原理:主库提交事务后,必须等待所有从库都提交事务后才返回成功。
  • 特点
    • 数据一致性最强,但性能影响大(延迟高)。
    • MySQL 原生不支持,需通过第三方工具(如 Galera Cluster)或组复制(Group Replication)实现。
  • 适用场景:强一致性要求的分布式系统(如 MySQL Group Replication)。

二、按数据复制格式分类

1. 基于语句的复制 (Statement-Based Replication, SBR)
  • 原理:主库将执行的 SQL 语句记录到二进制日志(binlog),从库重放这些语句。
  • 优点:日志量小,节省存储和带宽。
  • 缺点
    • 不确定性语句(如 NOW(), RAND())可能导致主从不一致。
    • 对存储过程、触发器的处理复杂。
  • 配置binlog_format = STATEMENT
2. 基于行的复制 (Row-Based Replication, RBR)
  • 原理:主库将每行数据的变更记录到 binlog(如更新前后的整行数据)。
  • 优点
    • 数据一致性高,避免不确定性语句问题。
    • 适合批量数据变更场景。
  • 缺点:日志量大(尤其是大表更新)。
  • 配置binlog_format = ROW
3. 混合模式复制 (Mixed-Based Replication, MBR)
  • 原理:根据操作类型自动选择 SBR 或 RBR。
  • 优点:兼顾性能和数据一致性。
  • 配置binlog_format = MIXED

三、按拓扑结构分类

1. 传统主从复制 (Master-Slave)
  • 单主库,多个从库,从库只读。
2. 链式复制 (Master-Slave Chain)
  • 从库作为其他从库的主库(级联复制),缓解主库压力。
3. 多源复制 (Multi-Source Replication)
  • 一个从库同时从多个主库同步数据(MySQL 5.7+ 支持)。
4. 组复制 (Group Replication)
  • 基于 Paxos 协议的多主同步集群(MySQL 5.7+ 的 InnoDB Cluster),支持自动故障转移。

四、其他特殊复制方式

1. 延迟复制 (Delayed Replication)
  • 从库故意延迟一定时间再应用主库的 binlog(用于误操作恢复)。
  • 配置CHANGE REPLICATION SOURCE TO SOURCE_DELAY = N;(单位:秒)
2. GTID 复制 (Global Transaction Identifier)
  • 通过全局唯一事务 ID 管理复制位置,简化主从切换。
  • 配置gtid_mode = ON
3. 并行复制 (Parallel Replication)
  • 从库多线程应用 binlog,提升同步速度(需配置 slave_parallel_workers)。

总结

  • 异步复制是默认方式,适合大多数场景。
  • 半同步复制适合对数据一致性要求较高的业务。
  • 组复制/全同步复制适合分布式强一致性需求。
  • RBR 是推荐的数据复制格式(尤其 MySQL 8.0 默认)。

根据业务需求选择合适的方式,并结合监控工具(如 SHOW SLAVE STATUS)确保复制健康。

相关文章:

Mysql主从复制有哪些方式

MySQL 主从复制主要有以下几种方式,根据不同的分类标准(如同步机制、数据复制格式、拓扑结构等)可以分为: 一、按同步机制分类 1. 异步复制 (Asynchronous Replication) 原理:主库提交事务后,立即返回给客…...

如何建立可复用的项目管理模板

建立可复用的项目管理模板能够显著提高项目执行效率、减少重复劳动、确保项目管理标准化。在企业中,项目管理往往涉及多个步骤和多个团队,然而每次开始一个新项目时,如果都从头开始设计流程和文档,势必浪费大量的时间和精力。通过…...

Spring Cloud 服务间调用深度解析

前言 在构建微服务架构时,服务间的高效通信是至关重要的。Spring Cloud 提供了一套完整的解决方案来实现服务间的调用、负载均衡、服务发现等功能。本文将深入探讨 Spring Cloud 中服务之间的调用机制,并通过源码片段和 Mermaid 图表帮助读者更好地理解…...

如何使用通义灵码玩转Docker - AI助手提升开发效率

一、引言 Docker 作为一种流行的虚拟化技术,能够帮助开发者快速搭建所需的运行环境。然而,对于初学者来说,掌握 Docker 的基本概念和使用方法可能会遇到一些挑战。本文将介绍如何利用通义灵码这一智能编码助手,帮助你更高效地学习…...

GGML源码逐行调试(下)

目录 前言1. 简述2. 预分配计算图内存2.1 创建图内存分配器2.2 构建最坏情况的计算图2.3 预留计算图内存 3. 分词4. 模型推理与生成4.1 模型推理4.2 采样 结语下载链接参考 前言 学习 UP 主 比飞鸟贵重的多_HKL 的 GGML源码逐行调试 视频,记录下个人学习笔记&#x…...

uniapp的通用页面及组件基本封装

1.基本布局页面 适用于自定义Navbar头部 <template><view class"bar" :style"{height : systemInfo.statusBarHeight px, background: param.barBgColor }"></view><view class"headBox" :style"{ height: param.h…...

YOLO11改进——融合BAM注意力机制增强图像分类与目标检测能力

深度学习在计算机视觉领域的应用取得了显著进展,尤其是在目标检测(Object Detection)和图像分类(Image Classification)任务中。YOLO(You Only Look Once)系列算法凭借其高效的单阶段检测框架和卓越的实时性能,成为目标检测领域的研究热点。然而,随着应用场景的复杂化…...

Spring Boot循环依赖全解析:原理、解决方案与最佳实践

&#x1f6a8; Spring Boot循环依赖全解析&#xff1a;原理、解决方案与最佳实践 #SpringBoot核心 #依赖注入 #设计模式 #性能优化 一、循环依赖的本质与危害 1.1 什么是循环依赖&#xff1f; 循环依赖指两个或多个Bean相互直接或间接引用&#xff0c;形成闭环依赖关系。 典…...

力扣 283 移动零的两种高效解法详解

目录 方法一&#xff1a;两次遍历法 方法二&#xff1a;单次遍历交换法 两种方法对比 在解决数组中的零移动到末尾的问题时&#xff0c;我们需要保持非零元素的顺序&#xff0c;并原地修改数组。以下是两种高效的解法及其详细分析。 方法一&#xff1a;两次遍历法 思路分析…...

「2025AIGC终极形态」AI系统源码:文本→图像→音乐→视频生成

—从技术痛点到企业级部署&#xff0c;手把手实现全流程AI内容工厂 行业核心痛点&#xff1a;为什么需要多模态AIGC系统&#xff1f; 1. 工具割裂&#xff0c;效率低下 传统流程&#xff1a; 文案&#xff08;ChatGPT&#xff09;→ 配图&#xff08;Midjourney&#xff09;→…...

使用CS Roofline Toolkit测量带宽

使用CS Roofline Toolkit测量带宽 工程下载&#xff1a;使用CS Roofline Toolkit测量带宽-案例工程文件&#xff0c;也可以按照下面的说明使用git clone下载 目录 使用CS Roofline Toolkit测量带宽0、Roofline模型理解1、CS Roofline Toolkit下载1.1、设置代理1.2、git clone下…...

L1-4 拯救外星人

题目 你的外星人朋友不认得地球上的加减乘除符号&#xff0c;但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”&#xff0c;是从 1 到 N 的连乘积。所以当他不知道“57”等于多少时&#xff0c;如果你告诉他等于“12!”&#xff0c;他就写出了“479001600”这个答案。 本题就请你…...

现代c++获取linux系统名称

现代c获取linux系统名称 前言一、使用命令获取操作系统名称二、使用c代码获取操作系统名称三、验证四、总结 前言 本文介绍一种使用c获取当前操作系统名称的方法 一、使用命令获取操作系统名称 在linux系统中可以使用uname或者uname -s命令来获取当前操作系统名称&#xff0c…...

力扣刷题HOT100——53.最大子数组和

给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&#xff1a;6…...

Java面试黄金宝典48

1. C++ 的拷贝构造函数,深拷贝和浅拷贝 定义 拷贝构造函数:在 C++ 里,拷贝构造函数属于特殊的构造函数,其功能是使用一个已存在的对象来初始化一个新对象。当对象以值传递的方式作为参数传给函数、函数返回对象、用一个对象初始化另一个对象时,拷贝构造函数会被调用。浅拷…...

QuickAPI 核心能力解析:构建数据服务化的三位一体生态

在企业数据资产化运营的进程中&#xff0c;如何打破数据开发与共享的效率瓶颈&#xff0c;实现从 “数据可用” 到 “数据好用” 的跨越&#xff1f;麦聪软件的 QuickAPI 给出了系统性答案。作为 SQL2API 理念的标杆产品&#xff0c;QuickAPI 通过SQL 编辑器、数据 API、数据市…...

ES和MySQL概念对比

基本概念 ES和MySQL都属于数据库&#xff0c;不过各有各的特性&#xff0c;大致使用方法与MySQL类似并无区别。 MySQL&#xff1a;擅长事务持有ACID的特性&#xff0c;确保数据的一致性和安全。 ES&#xff1a;持有倒排索引&#xff0c;适合海量数据搜索和分析。 ES和MySQL如何…...

Spring如何解决项目中的循环依赖问题?

目录 什么是循环依赖&#xff1f; 如何解决&#xff1f; 采用两级缓存解决 需要AOP的Bean的循环依赖问题&#xff1f; 三级缓存解决 什么是循环依赖&#xff1f; 循环依赖就是Spring在初始化Bean时两个不同的Bean你依赖我&#xff0c;我依赖你的情况 例如A依赖B&#xf…...

计算机系统---烤机(性能测评)

计算机烤机 一、烤机的定义与核心目的 烤机&#xff08;Burn-in Test&#xff09; 是通过对计算机硬件施加持续高负载&#xff0c;模拟极端运行环境&#xff0c;以验证硬件稳定性、性能极限、散热能力及潜在缺陷的测试方法。核心目标包括&#xff1a; 硬件稳定性验证&#x…...

Android开发过程中遇到的SELINUX权限问题

1、selinux权限一般问题 问题详情 log输出如下所示&#xff1a; 01-01 00:00:12.210 1 1 I auditd : type1107 audit(0.0:33): uid0 auid4294967295 ses4294967295 subju:r:init:s0 msg‘avc: denied{ set } for propertypersist.sys.locale pid476 uid1000 gid1000 scontext…...

[Java实战经验]链式编程与Builder模式

目录 链式编程Builder模式 链式编程 链式编程&#xff08;Fluent AP&#xff09;是一种编程风格&#xff0c;它通过在同一个对象上连续调用多个方法来执行一系列操作&#xff08;让方法返回对象本身&#xff08;return this&#xff09;&#xff09;。这种风格的编程使代码更加…...

Windows系统docker desktop安装(学习记录)

目前在学习docker&#xff0c;在网上扒了很多老师的教程&#xff0c;终于装好了&#xff0c;于是决定再装一遍做个记录&#xff0c;省的以后再这么麻烦 一&#xff1a;什么是docker Docker 是一个开源的应用容器引擎&#xff0c;它可以让开发者打包他们的应用以及依赖包到一个…...

MIP-Splatting:全流程配置与自制数据集测试【ubuntu20.04】【2025最新版】

一、引言 在计算机视觉和神经渲染领域&#xff0c;3D场景重建与渲染一直是热门研究方向。近期&#xff0c;3D高斯散射&#xff08;3D Gaussian Splatting&#xff09;因其高效的渲染速度和优秀的视觉质量而受到广泛关注。然而&#xff0c;当处理大型复杂场景时&#xff0c;这种…...

怎样完成本地模型知识库检索问答RAG

怎样完成本地模型知识库检索问答RAG 目录 怎样完成本地模型知识库检索问答RAG使用密集检索器和系数检索器混合方式完成知识库相似检索1. 导入必要的库2. 加载文档3. 文本分割4. 初始化嵌入模型5. 创建向量数据库6. 初始化大语言模型7. 构建问答链8. 提出问题并检索相关文档9. 合…...

XCTF-web(三)

xff_referer 拦截数据包添加&#xff1a;X-Forwarded-For: 123.123.123.123 添加&#xff1a;Referer: https://www.google.com baby_web 提示&#xff1a;想想初始页面是哪个 查看/index.php simple_js 尝试万能密码&#xff0c;没有成功&#xff0c;在源码中找到如下&#xf…...

使用Python+xml+shutil修改目标检测图片和对应xml标注文件

使用Pythonxmlshutil修改目标检测图片文件名和对应xml标注文件&#xff1a; import os import glob import xml.etree.ElementTree as et import shutildef change_labels(source_dir):name_id 18001file_list glob.glob(os.path.join(source_dir, "*.xml"))print…...

How AI could empower any business - Andrew Ng

How AI could empower any business - Andrew Ng References 人工智能如何为任何业务提供支持 empower /ɪmˈpaʊə(r)/ vt. 授权&#xff1b;给 (某人) ...的权力&#xff1b;使控制局势&#xff1b;增加 (某人的) 自主权When I think about the rise of AI, I’m reminded …...

地理人工智能中位置编码的综述:方法与应用

以下是对论文 《A Review of Location Encoding for GeoAI: Methods and Applications》 的大纲和摘要整理&#xff1a; A Review of Location Encoding for GeoAI: Methods and Applications 摘要&#xff08;Summary&#xff09; 本文系统综述了地理人工智能&#xff08;G…...

Verilog的整数除法

1、可变系数除法实现----利用除法的本质 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2025/04/15 13:45:39 // Design Name: // Module Name: divide_1 // Project Name: // Target Devices: // Tool Versions: // Description: // // Depe…...

C++ | STL之list详解:双向链表的灵活操作与高效实践

引言 std::list 是C STL中基于双向链表实现的顺序容器&#xff0c;擅长高效插入和删除操作&#xff0c;尤其适用于频繁修改中间元素的场景。与std::vector不同&#xff0c;std::list的内存非连续&#xff0c;但提供了稳定的迭代器和灵活的元素管理。本文将全面解析std::list的…...