【MySQL】第12节|MySQL 8.0 主从复制原理分析与实战(二)

一、组复制(MGR)核心概念

1. 定义与定位
  • 目标:解决传统主从复制的单点故障、数据不一致问题,提供高可用、高扩展的分布式数据库方案。
  • 基于 GTID:依赖全局事务标识符(GTID)实现事务一致性,确保跨节点事务唯一且有序。
  • 分布式协议:基于 Paxos 协议实现节点间数据共识,保证事务在多数节点提交后才生效。
2. 核心优势

传统主从复制

组复制(MGR)

单主节点,存在单点故障

多节点集群,支持单主或多主模式

异步复制,可能丢数据

半同步或强一致性(取决于配置)

手动故障转移

自动选主(单主模式)

从节点只读

多主模式下节点可读写

3. 应用场景
  • 高可用性集群:金融、电商等不能容忍单点故障的场景。
  • 多活数据中心:支持多主写入,适合跨地域数据同步。
  • 读写高并发:多主模式下分摊写压力(需解决冲突)。

二、组复制模式与原理

1. 单主模式(推荐)
  • 特点
    • 集群中仅有一个主节点(Primary)接受写请求,其余节点为从节点(Secondary,只读)。
    • 主节点故障时,自动选举新主节点(基于 Paxos 协议)。
  • 适用场景:大多数业务场景,避免多主写入冲突。
2. 多主模式
  • 特点
    • 所有节点均可读写,适合分布式事务或跨地域写入。
    • 需启用 冲突检测(如 group_replication_enforce_update_everywhere_checks=ON),避免主键冲突。
  • 风险:写入冲突可能导致事务回滚,需谨慎设计业务逻辑。
3. 核心组件
  • Group Replication 插件:实现节点间通信、事务认证和复制。
  • GTID 集合:记录已执行的事务,确保节点数据一致。
  • 分布式恢复机制:新节点加入时,通过全量备份+增量 GTID 同步数据。

三、单主模式部署步骤(基于 Docker)

1. 环境规划

节点角色

server_id

端口

配置文件

mgr-node1(主)

1

3321

custom.cnf(主节点配置)

mgr-node2(从)

2

3322

custom.cnf(从节点配置)

mgr-node3(从)

3

3323

custom.cnf(从节点配置)

2. 关键配置文件(custom.cnf
[mysqld]
# 基础配置
server_id=1                 # 唯一节点ID
gtid_mode=ON                # 启用GTID
enforce_gtid_consistency=ON # 强制GTID一致性
log-bin=mysql-bin           # 二进制日志
default-time_zone='+8:00'   # 时区# 组复制配置
plugin_load_add='group_replication.so' # 加载组复制插件
group_replication_group_name="117dc7ea-b9bd-11ee-9bdb-0242ac120002" # 统一组名(UUID格式)
group_replication_local_address="mgr-node1:33061" # 内部通信地址(端口自定义)
group_replication_group_seeds="mgr-node1:33061,mgr-node2:33061,mgr-node3:33061" # 种子节点列表
group_replication_bootstrap_group=OFF # 非引导节点设为OFF
3. 创建复制用户
-- 在所有节点执行
CREATE USER 'fox'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, GROUP_REPLICATION_STREAM ON *.* TO 'fox'@'%';
FLUSH PRIVILEGES;
4. 启动组复制
  1. 引导主节点(mgr-node1)
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
  1. 加入从节点(mgr-node2/mgr-node3)
START GROUP_REPLICATION;
5. 验证集群状态
-- 查看组成员
SELECT MEMBER_HOST, MEMBER_ROLE, MEMBER_STATE FROM performance_schema.replication_group_members;-- 查看主节点
SHOW STATUS LIKE 'group_replication_primary_member';

四、多主模式关键调整

  1. 关闭单主模式
SET GLOBAL group_replication_single_primary_mode=OFF;
  1. 启用冲突检测
SET GLOBAL group_replication_enforce_update_everywhere_checks=ON;
  1. 注意事项
    • 避免跨节点更新同一数据(如共享主键表)。
    • 使用中间件(如 MySQL Router)路由读写请求。

五、与传统主从复制的对比

维度

传统主从复制

组复制(MGR)

复制协议

异步/半同步

基于 Paxos 的共识协议

故障转移

手动或依赖外部工具(如 MHA)

自动选举(单主模式)

数据一致性

最终一致(异步)

强一致(多节点确认)

写扩展性

单主写入

多主写入(需处理冲突)

部署复杂度

较低

较高(需配置插件和分布式协议)

六、注意事项与最佳实践

  1. 节点数量:建议奇数节点(如 3/5 个),确保多数派共识(N ≥ 2f+1,f 为允许故障节点数)。
  2. 网络要求:低延迟、高可靠网络,避免脑裂(Split-Brain)。
  3. 监控告警
    • 跟踪 Seconds_Behind_Master(单主模式)或冲突日志。
    • 使用 Prometheus + MySQL Exporter 监控集群状态。
  4. 备份与恢复
    • 新节点加入需全量备份(如 mysqldump)+ GTID 增量同步。
    • 避免在复制中直接删除数据文件,可能导致 GTID 空洞。

七、总结

组复制(MGR)是 MySQL 官方提供的高可用解决方案,通过 GTID 和分布式协议解决了传统复制的痛点。单主模式适合大多数场景,而多主模式需谨慎评估业务冲突风险。实际应用中,建议结合中间件(如 MySQL Router)和监控工具,构建健壮的分布式数据库集群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React 泛型组件:用TS来打造灵活的组件。

文章目录 前言一、什么是泛型组件?二、为什么需要泛型组件?三、如何在 React 中定义泛型组件?基础泛型组件示例使用泛型组件 四、泛型组件的高级用法带默认类型的泛型组件多个泛型参数 五、泛型组件的实际应用场景数据展示组件表单组件状态管…

如何手搓一个查询天气的mcp server

环境配置烦请移步上一篇博客 这里直接步入主题,天气查询的api用的是openweather,免费注册就可以使用了 每天1000次内使用时免费的,大概的api 如下 https://api.openweathermap.org/data/2.5/weather?qBeijing,cn&APPID注册后可以拿到一个…

深入解析计算机网络核心协议:ARP、DHCP、DNS与HTTP

文章目录 一、ARP(地址解析协议)1.1 定义与功能1.2 工作原理1.3 应用场景1.4 安全风险与防御 二、DHCP(动态主机配置协议)2.1 定义与功能2.2 工作原理2.3 应用场景2.4 优缺点与安全建议 三、DNS(域名系统)3…

《Java 单例模式:从类加载机制到高并发设计的深度技术剖析》

【作者简介】“琢磨先生”--资深系统架构师、985高校计算机硕士,长期从事大中型软件开发和技术研究,每天分享Java硬核知识和主流工程技术,欢迎点赞收藏! 一、单例模式的核心概念与设计目标 在软件开发中,我们经常会遇…

NL2SQL代表,Vanna

Vanna 核心功能、应用场景与技术特性详解 一、核心功能 1. 自然语言转SQL查询 Vanna 允许用户通过自然语言提问(如“显示2024年销售额最高的产品”),自动生成符合数据库规范的SQL查询语句。其底层采用 RAG(检索增强生成&#xf…

【动态规划】子数组系列(二)

📝前言说明: 本专栏主要记录本人的动态规划算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;&…

68元开发板,开启智能硬件新篇章——明远智睿SSD2351深度解析

在智能硬件开发领域,开发板的选择至关重要。它不仅关系到项目的开发效率,还直接影响到最终产品的性能与稳定性。而今天,我要为大家介绍的这款明远智睿SSD2351开发板,仅需68元,却拥有远超同价位产品的性能与功能&#x…

篇章六 数据结构——链表(二)

目录 1. LinkedList的模拟实现 1.1 双向链表结构图​编辑 1.2 三个简单方法的实现 1.3 头插法 1.4 尾插法 1.5 中间插入 1.6 删除 key 1.7 删除所有key 1.8 clear 2.LinkedList的使用 2.1 什么是LinkedList 5.2 LinkedList的使用 1.LinkedList的构造 2. LinkedList的…

删除队列中整数

给定一个长度为N的整数数列A_1,A_2,...,A_N,请重复以下操作K次。 每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除,并把与它相邻的整数加上被删除的数值。 请问K次操作后的序列是什…

[神经网络]使用olivettiface数据集进行训练并优化,观察对比loss结果

结合归一化和正则化来优化网络模型结构,观察对比loss结果 搭建的神经网络,使用olivettiface数据集进行训练,结合归一化和正则化来优化网络模型结构,观察对比loss结果 from sklearn.datasets import fetch_olivetti_faces #倒入数…

算法分析·回溯法

回溯法 方法概述算法框架问题实例TSP 问题n皇后问题 回溯法效率分析 方法概述 回溯法是一个既带有系统性又带有跳跃性的搜索算法; **系统性:**它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。…

Golang分布式系统开发实践指南

Golang分布式系统开发实践指南 一、为什么选择Golang? ​原生并发模型​ Goroutine和Channel机制天然适合分布式系统的并发需求​高性能编译​ 静态编译生成二进制文件,部署简单,内存占用低​丰富生态​ Go Module管理、标准库支持HTTP/2、…

基于stm32风速风向温湿度和瓦斯检测(仿真+代码)

资料下载地址:基于stm32风速风向温湿度和瓦斯检测 一、项目功能 1.风速,风向,温湿度,瓦斯,报警。 2.可以设置温湿度,瓦斯,风速报警阈值。 3.数据上传到云平台。 二、仿真图 三、程序 #inc…

桃黑黑反斗战

1.编写求解Hanoi汉诺塔的递归算法代码&#xff0c;输出移动过程&#xff0c;并统计总移动次数。 对不同规模的汉诺塔&#xff0c;给出测试的结果 #include <stdio.h> #include <time.h> int moveCount 0; void hanoi(int n,char source,char auxiliary,char targ…

react-native的token认证流程

在 React Native 中实现 Token 认证是移动应用开发中的常见需求&#xff0c;它用于验证用户的身份并授权其访问受保护的 API 资源。 Token 认证的核心流程&#xff1a; 用户登录 (Login): 用户在前端输入用户名和密码。前端将这些凭据发送到后端 API。后端验证凭据。如果验证成…

Dify:详解 docker-compose.yaml配置文件

详解 docker-compose.yaml 配置文件 docker-compose.yaml 是用于定义和运行多容器 Docker 应用的配置文件。下面&#xff0c;我们将详细解释您提供的 docker-compose.yaml 文件&#xff0c;包括各个服务的作用、配置&#xff0c;以及它们与 .env 文件之间的关系。 文件概览 自…

Python基于Django的主观题自动阅卷系统【附源码、文档说明】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

今日行情明日机会——20250528

上证指数缩量收小阴线&#xff0c;个股跌多涨少&#xff0c;总体情绪偏差&#xff0c;注意风险为主。 深证指数&#xff0c;缩量收小阴线&#xff0c;连续5天阴线&#xff0c;明后天反弹的概率增大&#xff0c;但仍要注意风险。 2025年5月28日涨停股主要行业方向分析 1. 无人…

基于stm32LORA无线抄表系统仿真

资料下载地址&#xff1a;基于stm32LORA无线抄表系统仿真 1、项目介绍 基于LoRa的无线通信的电力抄表系统&#xff0c;采集节点数据&#xff0c;通过LoRa无线通信进行数据传输&#xff0c;最后再网关节点上显示。 2、仿真图 3、仿真代码 #include "oled.h" #incl…

不同电脑同一个网络ip地址一样吗

不同电脑在连接同一个WiFi时&#xff0c;它们的IP地址会相同吗&#xff1f;相信不少朋友都对这个问题感到好奇&#xff0c;今天我们就来详细探讨一下。 一、基础概念&#xff1a;IP地址的本质与分类 IP地址是分配给网络设备的唯一标识符&#xff0c;用于在互联网或局域网中定位…