新闻详情

新闻详情

首页 / 资讯中心 / 详情

MySQL 主从复制

发布时间:2026/9/27 23:50:47来源:尧图网络
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 错误是删除数据时找不到行。关于搭建复制实战演示案例详情可参考链接有道云笔记
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

做房产的有哪些网站?图解步骤揭秘模板丑病根 2026/9/27 23:50:41

做房产的有哪些网站?图解步骤揭秘模板丑病根

做房产的有哪些网站?图解步骤揭秘模板丑病根 很多华中地区的中小房企老板都在头疼,花钱做的官网打开一看,配色土气、布局僵硬,客户点进来两秒就关掉。这就是典型的模板网站太丑不够用,直接拉低了品牌档次。别急,今天咱们不聊虚的,直接拆解【做房产的有…

阅读更多 →
jose 本地 JWKS 密钥解析:createLocalJWKSet 从入门到源码级原理 2026/9/27 23:50:35

jose 本地 JWKS 密钥解析:createLocalJWKSet 从入门到源码级原理

网络安全认证鉴权后端 【免费下载链接】jose JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes 项目地址: https://gitcode.com/gh_mirrors/jo/jose 点击查看 免费下载 本篇技术指南围绕…

阅读更多 →
LeetCode //C - 1266. Minimum Time Visiting All Points 2026/9/27 23:50:34

LeetCode //C - 1266. Minimum Time Visiting All Points

1266. Minimum Time Visiting All Points On a 2D plane, there are n points with integer coordinates points[i][xi,yi]points[i] [x_i, y_i]points[i][xi​,yi​]. Return the minimum time in seconds to visit all the points in the order given by points. You can …

阅读更多 →
Python CNN垃圾分类毕设实战:6类别模型搭建、训练与避坑指南 2026/9/27 23:50:28

Python CNN垃圾分类毕设实战:6类别模型搭建、训练与避坑指南

简介:这份资源面向计算机相关专业的毕业设计学生与深度学习入门者,提供一套基于Python与卷积神经网络(CNN)实现六类别垃圾分类的完整项目方案,类别涵盖glass、cardboard、metal、paper、plastic与trash。内容围绕模型搭…

阅读更多 →
NodeMCU TCS34725 颜色传感器模块指南:setup/raw/setGain API 与驱动原理 2026/9/27 23:50:22

NodeMCU TCS34725 颜色传感器模块指南:setup/raw/setGain API 与驱动原理

物联网嵌入式 【免费下载链接】nodemcu-firmware Lua based interactive firmware for ESP8266, ESP8285 and ESP32 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-firmware 点击查看 免费下载 TCS34725 是一款基于 IC 接口的数字 RGB 颜色/亮度传感器&…

阅读更多 →
video-use:视频处理全链路自动化工作流解析 2026/9/27 23:50:22

video-use:视频处理全链路自动化工作流解析

1. 项目概述:一个围绕视频处理全链路的实用型工具集命名逻辑“video-use”这个标题乍看像随手打的标签,但放在当前技术语境下,它其实是个高度凝练的工程代号——不是某个具体软件,而是一套围绕视频获取、转码、剪辑、语音合成与时…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉