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

MariaDB 多源复制

1️⃣ 什么是多源复制?

一句话定义

一台从库 同时从 多台主库 拉取数据,每条链路独立命名、独立过滤、独立故障处理。
多主(multi-master) 不同——后者是多台服务器互为主从并可同时写入;多源复制仍是单向,仅从库聚合


2️⃣ 典型场景

场景价值
数据中心聚合把各地分库汇总到一台分析库
分片后统一查询每个分片=一个源,从库做全局报表
零停机迁移并行同步老库+新库,最后流量切换
灾备聚合多地机房 → 异地灾备中心

3️⃣ 30 秒架构图

┌───────┐   ┌───────┐   ┌───────┐
│  M1   │   │  M2   │   │  M3   │
└──┬────┘   └──┬────┘   └──┬────┘│           │           │└───────────┴───────────┘▲┌──────────┴──────────┐│   单台从库 S        ││  multi-source       │└─────────────────────┘
  • M1/M2/M3 独立业务库
  • S 通过 3 条通道 分别同步

4️⃣ 快速部署(MariaDB 10.3+)

4.1 主库统一配置

第一台

[mysqld]
server-id       = 1          # 每台唯一
log-bin         = mysql-bin
binlog-format   = ROW
gtid-strict-mode = 1

第二台

[mysqld]
server-id       = 2         # 每台唯一
log-bin         = mysql-bin
binlog-format   = ROW
gtid-strict-mode = 1

第三台

[mysqld]
server-id       = 3         # 每台唯一
log-bin         = mysql-bin
binlog-format   = ROW
gtid-strict-mode = 1

4.2 从库配置

[mysqld]
server-id       = 101
gtid-ignore-duplicates = 1   # 多源必开

4.3 建立通道

-- 通道 m1
CHANGE MASTER 'm1' TOMASTER_HOST='10.0.0.1',MASTER_USER='repl',MASTER_PASSWORD='repl123',MASTER_USE_GTID=current_pos;-- 通道 m2
CHANGE MASTER 'm2' TOMASTER_HOST='10.0.0.2',MASTER_USER='repl',MASTER_PASSWORD='repl123',MASTER_USE_GTID=current_pos;CHANGE MASTER 'm3' TOMASTER_HOST='10.0.0.3',MASTER_USER='repl',MASTER_PASSWORD='repl123',MASTER_USE_GTID=current_pos;START ALL SLAVES;

5️⃣ 过滤规则(每通道独立)

-- m1 只同步 db1
CHANGE REPLICATION FILTER 'm1'replicate_wild_do_table = ('db1.%');-- m2 忽略系统库
CHANGE REPLICATION FILTER 'm2'replicate_wild_ignore_table = ('mysql.%','test.%');

MariaDB 用 SET GLOBAL channel.var=value;MySQL 用 FOR CHANNEL 语法。

http://www.xdnf.cn/news/18041.html

相关文章:

  • Windchill 11 Enumerated Type Customization Utility-枚举类型自定义实用程序
  • 嵌入式开发入门—电子元器件~半导体
  • Linux设备模型深度解析
  • 运动场和光流-动手学计算机视觉17
  • Spring 源码学习(十一)—— webmvc 配置
  • 【k8s、docker】Headless Service(无头服务)
  • Tomcat Connector连接器原理
  • 阶段二:7-上网行为安全概述
  • Spring Boot 项目配置 MySQL SSL 加密访问
  • SQL详细语法教程(四)约束和多表查询
  • 智能汽车领域研发,复用云原始开发范式?
  • 开源数据发现平台:Amundsen Search Service 搜索服务
  • SparkSQL性能优化实践指南
  • gRPC网络模型详解
  • 从0开始学习Java+AI知识点总结-17.web基础知识(数据库)
  • ARM汇编代码新手入门
  • 【人工智能99问】残差链接是什么,是如何起作用的?(28/99)
  • C语言相关简单数据结构:双向链表
  • 影刀 RAP 迁移华为云备忘录数据到得到笔记
  • C++编程实战:高效解决算法与数据结构问题
  • Python多线程、锁、多进程、异步编程
  • 自动驾驶中的传感器技术34——Lidar(9)
  • Python训练营打卡Day35-复习日
  • 2025年5月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(五)
  • Pandas 和 NumPy的区别和联系
  • 安卓开发中遇到Medium Phone API 36.0 is already running as process XXX.
  • RK3568平台开发系列讲解:PCIE trainning失败怎么办
  • 计算机网络 OSI 七层模型和 TCP 五层模型
  • day43_2025-08-17
  • git stash临时保存工作区