首页/新闻资讯/正文详情

MySQL 主从复制

发布时间:2026/9/26 6:40:54 来源:云帆数科 栏目:资讯中心
MySQL 主从复制
一、什么是复制ReplicationMySQL Replication 使来自一个 MySQL 数据库服务器称为源 Source的数据能够复制到一个或多个 MySQL 服务器称为副本 Replica。默认情况下复制是异步的副本不需要永久连接即可从源接收更新。根据配置可以复制所有数据库、指定数据库甚至某个数据库中的指定表。术语说明旧版本的 MySQL 复制将源Source称为主Master将副本Replica称为从Slave。二、复制的优势与缺点2.1 复制的优势高可用通过配置一定的复制机制MySQL 实现了跨主机的数据复制从而获得一定的高可用能力。如果需要获得更高的可用性只需配置多个副本或进行级联复制即可达到目的。性能扩展复制机制提供了多个数据备份可通过配置一个或多个副本将读请求分发至副本节点从而获得整体上读写性能的提升。异地灾备只需将副本节点部署到异地机房即可轻松获得一定的异地灾备能力。实际中需考虑网络延迟等可能影响整体表现的因素。交易分离通过配置复制机制将低频、大运算量的交易发送至副本节点执行可避免这些交易与高频交易竞争运算资源从而避免整体性能问题。2.2 复制的缺点没有故障自动转移容易造成单点故障。主库从库之间存在主从复制延迟问题容易造成最终数据的不一致。从库过多会对主库的负载以及网络带宽带来很大负担。三、复制的方式与数据同步类型3.1 复制的方式MySQL 8.0 支持多种复制方式基于 binlog 位点复制传统方法是基于从源的二进制日志binlog复制事件并要求日志文件及其中的位置在源和副本之间进行同步。源实例将更新和更改作为“事件”写入二进制日志副本配置为从源中读取二进制日志并在本地数据库上执行其中的事件。基于 GTID 复制基于全局事务标识符GTID的方式是完全基于事务的很容易确定源和副本是否一致只要在源上提交的所有事务也在副本上提交就可以保证两者之间的一致性。3.2 复制的数据同步类型异步复制默认方式。执行事务操作的线程不会等待复制 Binlog 的线程。主库收到客户端提交事务请求后先写入 Binlog再提交事务更新存储引擎数据然后给客户端返回成功响应。从库有专门的复制线程接收 Binlog 并写入中继日志另有回放线程读取中继日志更新数据。提交事务和复制流程在不同线程执行互不等待。劣势是可能存在主从延迟主节点宕机可能丢数据。半同步复制MySQL 5.7 开始支持。主节点收到客户端请求后必须在完成本节点日志写入的同时等待至少一个从节点完成数据同步的响应或超时后才会响应请求。从节点只有在写入 relay-log 并完成刷盘后才向主节点响应。当从节点响应超时时主节点将同步机制退化为异步复制从节点恢复并完成数据追赶后恢复为半同步复制。相比异步复制半同步复制提高了数据可用性但增加了网络交互和刷盘耗时整体响应性能有所降低。延迟复制使副本故意落后于源至少指定的时间。3.3 半同步复制的重要参数rpl_semi_sync_master_wait_slave_count8.0.26 之后改为 rpl_semi_sync_source_wait_for_replica_count至少等待数据复制到几个从节点再返回。数量配置越大丢数据风险越小但集群性能和可用性越差。rpl_semi_sync_master_wait_point8.0.26 之后改为 rpl_semi_sync_source_wait_point控制主库执行事务的线程是在提交事务之前AFTER_SYNC等待复制还是在提交事务之后AFTER_COMMIT等待复制。默认是 AFTER_SYNC即先等待复制再提交事务这样不会丢数据。四、设计理念复制状态机任何一个存储系统无论存储什么数据、用什么数据结构都可以抽象成一个状态机。存储系统中的数据称为状态状态的全量备份称为快照Snapshot按顺序记录更新存储系统的每条操作命令就是操作日志Commit Log即 MySQL 中的 Binlog。复制数据时只要基于一个快照按照顺序执行快照之后的所有操作日志就可以得到一个完全一样的状态。在从节点持续地从主节点上复制操作日志并执行就可以让从节点上的状态数据和主节点保持同步。要点这种基于“快照 操作日志”的方法并非 MySQL 特有。Redis Cluster 的全量备份称为 Snapshot操作日志叫 backlogElasticsearch 使用 translog备份和恢复数据的原理与实现方式完全一样。五、基于 binlog 位点同步的主从复制原理基于 binlog 位点同步的主从复制原理步骤如下主库会生成多个 binlog 日志文件。从库的 I/O 线程请求指定文件和指定位置的 binlog 日志文件位点。主库 dump 线程获取指定位点的 binlog 日志。主库按照从库发送来的位点信息读取 binlog然后推送 binlog 给从库。从库将得到的 binlog 写到本地的 relay log中继日志文件中。从库的 SQL 线程读取和解析 relay log 文件。从库的 SQL 线程重放 relay log 中的命令。六、基于 binlog 位点主从复制痛点分析基于 binlog 位点复制存在两大痛点痛点 1首次开启主从复制的步骤复杂。第一次开启主从同步时要求从库和主库一致需要找到主库的 binlog 位点、设置从库的 binlog 位点、开启从库的复制线程。痛点 2恢复主从复制的步骤复杂。需要找到从库复制线程停止时的位点、解决复制异常的事务。无法解决时需手动跳过指定类型的错误比如通过设置 slave_skip_errors1032,10621062 错误是插入数据时唯一键冲突1032 错误是删除数据时找不到行。关于搭建复制实战演示案例详情可参考链接有道云笔记

相关推荐

华为手机装个《模拟仲裁》,上庭前就能先练一遍,鸿蒙原生开发,模拟劳动仲裁
华为手机装个《模拟仲裁》,上庭前就能先练一遍,鸿蒙原生开发,模拟劳动仲裁

早上刷手机,看到前同事的消息:"被裁了,HR说N1只能给0.5,不给就耗着。"回完消息,胸口闷闷的。打工人最怕遇上这种事——公司一套话术把你绕晕,自己连仲裁庭长什么样子都不知道,更别提质… · 2026/9/26 6:40:54

金融服务产品设计实战:从账户体系到用户生命周期的全流程解析
金融服务产品设计实战:从账户体系到用户生命周期的全流程解析

干金融服务这一行,有一种非常独特的体验:你做的每个功能都要比别的行业多想十步,因为钱的事容不得试错。这个叫financial-services的项目,实际上就是我这些年做金融服务业务的一段浓缩经验:既有面向C端用户的支付、理财… · 2026/9/26 6:40:47

DeepSeek-v4代码补全实战:从协议层搭建本地AI编程工作流
DeepSeek-v4代码补全实战:从协议层搭建本地AI编程工作流

1. 这不是“Claude Code”——先拆穿一个正在全网蔓延的命名误会最近在多个技术社区、AI工具交流群甚至新手教程帖里,频繁刷到“Claude Code haha”这个名称,配图是VS Code侧边栏弹出一个带笑脸图标的插件面板,标题写着“支持DeepSeek-v4”。… · 2026/9/26 6:40:47

AI论文工具实测:8款网站如何辅助毕业论文写作全流程
AI论文工具实测:8款网站如何辅助毕业论文写作全流程

“救命神器”这四个字放在AI论文工具上,我评估下来:一半是夸张,一半是真的。夸张在于,没有一个工具能替你把毕业论文写完。真的是在于,用对了方法,你确实能把原本要熬三周的文献综述压缩到一周,… · 2026/9/26 7:12:24

离线QQ群机器人:TextRank+本地词向量实现每日智能总结
离线QQ群机器人:TextRank+本地词向量实现每日智能总结

简介:这是一份面向Python开发者与AI初学者的智能社交工具实践项目,基于Nonebot框架实现QQ群聊天记录的自动化分析与每日总结生成,融合机器学习文本处理技术解决群信息过载问题。资源包共28个文件,含18个核心Python脚本&#xff08… · 2026/9/26 7:12:24

VC++运行库精准修复指南:架构/版本/签名全解析
VC++运行库精准修复指南:架构/版本/签名全解析

1. 这不是“随便装个补丁”——VC运行库到底在替谁扛事?你双击一个软件,弹出“无法启动此程序,因为计算机中丢失 VCRUNTIME140_1.dll”;打开游戏提示“MSVCP140.dll 找不到”;甚至安装 Photoshop 或 AutoCAD 时卡在“正… · 2026/9/26 7:12:24

Xshell8个人免费许可申请与离线激活指南
Xshell8个人免费许可申请与离线激活指南

1. 这不是“破解教程”,而是一份真实可用的 Xshell8 免费版落地指南 Xshell8 是 Windows 平台下最主流的 SSH 终端工具之一,尤其在运维、开发、测试、教学等需要频繁连接 Linux 服务器的场景中,几乎成了开箱即用的标配。但很多人一搜“Xshel… · 2026/9/26 7:12:24

Atlas 300V NPU推理卡:从CANN环境到YOLO模型部署全指南
Atlas 300V NPU推理卡:从CANN环境到YOLO模型部署全指南

很多人第一次拿到这块卡的时候,问的问题基本都一样:Atlas 300V 24G 到底是不是运算加速卡?为什么插上去没有视频输出口?能不能像 GPU 那样跑 CUDA?接着又会在部署 YOLO 的时候被一整套 CANN 环境、模型转换、ACL 接口折… · 2026/9/26 7:12:24

Prometheus 拉取模型与远程写入:从原理到实战的监控架构解析
Prometheus 拉取模型与远程写入:从原理到实战的监控架构解析

做监控系统这几年,被问得最多的一个问题就是:“Prometheus 明明是拉数据的,你们为什么还要接远程写入?这不是自己打自己脸吗?”这个问题问得特别好。因为刚从 Zabbix 这种“客户端主动上报”切换过来的时候&#xff0c… · 2026/9/26 7:12:18

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码