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

MySQL 8.0 主从复制原理分析与实战

MySQL复制技术深度解析:从原理到实践

一、MySQL复制概述

MySQL复制(Replication)是官方提供的主从同步方案,用于将一个MySQL实例数据同步到其他实例,是最广泛使用的容灾方案。

核心概念

  • 源(Source):旧称Master,数据变更的源头
  • 副本(Replica):旧称Slave,接收源数据的节点
  • 同步方式:默认异步,也可配置半同步

二、复制原理与架构

1. 复制工作流程

1. 写入binlog
2. 提交事务
3. 返回响应
4. 传输日志
5. 写入relaylog
6. SQL线程重放
主库
二进制日志
存储引擎
客户端
从库I/O线程
中继日志
从库存储引擎

2. 数据同步类型对比

类型特点数据一致性性能影响
异步复制默认方式,主从不互相等待可能丢失数据影响最小
半同步复制主库等待至少1个从库确认较强一致性中等影响
延迟复制从库故意延迟指定时间最终一致影响较小

三、复制配置实战

1. 基于binlog位点的配置

主库关键配置:

[mysqld]
server-id = 10
log-bin = mysql-bin
binlog_format = ROW

从库关键步骤:

CHANGE REPLICATION SOURCE TOSOURCE_HOST='192.168.65.185',SOURCE_USER='fox',SOURCE_PASSWORD='123456',SOURCE_PORT=3307,SOURCE_LOG_FILE='mysql-bin.000003',SOURCE_LOG_POS=1273;
START REPLICA;

2. 半同步复制配置

主从节点均需安装插件:

-- 主库
INSTALL PLUGIN rpl_semi_sync_source SONAME 'semisync_source.so';
SET GLOBAL rpl_semi_sync_source_enabled=1;-- 从库
INSTALL PLUGIN rpl_semi_sync_replica SONAME 'semisync_replica.so';
SET GLOBAL rpl_semi_sync_replica_enabled=1;

关键参数说明:

  • rpl_semi_sync_source_wait_for_replica_count:等待的从库数量
  • rpl_semi_sync_source_wait_point:等待时机(AFTER_SYNC/AFTER_COMMIT)

四、GTID复制方案

1. GTID核心优势

  • 自动定位复制位置,无需手动指定binlog文件及位置
  • 保证事务全局唯一性,避免重复执行
  • 简化故障转移和主从切换流程

2. 配置要点

[mysqld]
gtid_mode = ON
enforce_gtid_consistency = ON

从库配置命令:

CHANGE REPLICATION SOURCE TOSOURCE_HOST='192.168.65.185',SOURCE_USER='fox',SOURCE_PASSWORD='123456',SOURCE_PORT=3307,SOURCE_AUTO_POSITION=1;

五、组复制(Group Replication)

1. 核心特点

  • 基于Paxos协议实现分布式状态机
  • 支持单主和多主模式
  • 自动故障检测与成员管理
  • 多数节点存活即可提供服务(3节点容错1个)

2. 单主模式配置示例

[mysqld]
plugin_load_add = 'group_replication.so'
group_replication_group_name = "117dc7ea-b9bd-11ee-9bdb-0242ac120002"
group_replication_start_on_boot = off
group_replication_local_address = "mgr-node1:33061"
group_replication_group_seeds = "mgr-node1:33061,mgr-node2:33061,mgr-node3:33061"

六、应用场景与选型建议

1. 典型应用场景

  • 电商平台:读写分离提升并发能力
  • 社交网络:快速读取+数据备份
  • 金融系统:数据安全与高可用保障
  • 新闻媒体:应对高访问量压力

2. 技术选型矩阵

需求场景推荐方案
最高性能异步复制
强一致性半同步复制
自动容灾组复制(MGR)
多活架构多主模式组复制

七、常见问题处理

1. GTID复制中断修复

-- 跳过特定GTID事务
STOP REPLICA;
SET @@SESSION.GTID_NEXT='aac92b21-b6a4-11ee-bab5-0242ac120002:7';
BEGIN; COMMIT;
SET SESSION GTID_NEXT=AUTOMATIC;
START REPLICA;

2. 主从切换演练要点

  1. 验证从库数据完整性
  2. 提升新主库读写权限
  3. 其他从库指向新主库
  4. 监控复制延迟情况

http://www.dtcms.com/a/267901.html

相关文章:

  • 传统微商困境与开源链动2+1模式、AI智能名片及S2B2C商城小程序的转型破局
  • 数据挖掘:从理论到实践的深度探索
  • 基于腾讯云开发与“人·事·财·物”架构理念的家政预约小程序设计与实现
  • 【PyTorch】PyTorch中torch.nn模块的卷积层
  • 10.1《3步用ChatGPT+LangChain打造高质量私有数据集,模型效果提升200%》
  • Java多线程知识小结:Synchronized
  • Flink ClickHouse 连接器数据读取源码深度解析
  • G-sensor运动检测功能开源:打破技术壁垒,加速智能硬件开发!
  • Java JDBC的初步了解
  • 力扣网编程45题:跳跃游戏II之正向查找方法(中等)
  • 【深度学习新浪潮】AI在材料力学领域的研究进展一览
  • 基于51单片机智能婴儿床
  • SQL 一键生成 Go Struct!支持字段注释、类型映射、结构体命名规范
  • 从前端转go开发的学习路线
  • 3、Configuring Topics
  • I-Cache、D-Cache 和 SRAM 的区别与联系
  • 系统架构设计师论文分享-论软件体系结构的演化
  • Docker容器中安装MongoDB,导入数据
  • nvm常用指令汇总
  • Spark流水线数据质量检查组件
  • 【认知】如何在高强度工作中保持心理健康和情绪稳定?
  • WizTree v4.2.5 x86 x64 单文件版
  • 让你的asp.net网站在调试模式下也能在局域网通过ip访问
  • Java 双亲委派机制笔记
  • GitCode项目创建指南
  • 一文掌握Qt Quick数字图像处理项目开发(基于Qt 6.9 C++和QML,代码开源)
  • 【黑马点评】(二)缓存
  • PyTorch 2.7深度技术解析:新一代深度学习框架的革命性演进
  • Python作业1
  • 实现Spring MVC登录验证与拦截器保护:从原理到实战