使用 Memgraph 的复制功能(Replication with Memgraph)

复制(Replication)允许你将数据从一个 Memgraph 实例(MAIN)复制到一个或多个 REPLICA 实例。 这样可以提升读取扩展性(read scalability)、提供额外的数据副本,以及降低单个节点故障的影响。

在一个复制设置中:

  • MAIN 实例 处理读和写请求
  • REPLICA 实例 只处理读操作,并持续从 MAIN 复制数据

复制适合以下场景:

  • 希望横向扩展读取负载
  • 需要数据的多个副本以提高弹性
  • 能够自行管理手动故障切换和集群编排

本指南面向 Memgraph Community 版本用户,帮助你在多个实例之间设置数据复制。

若你拥有 Memgraph Enterprise 授权,我们强烈建议使用 高可用性(High Availability) 功能。

高可用性(HA) 构建在复制之上,并添加:

  • 自动故障切换(无需人工提升副本)
  • 基于 Raft 共识协议的协调器实例
  • 内建路由以及更好的数据丢失保护
  • 更稳定的平台以实现真正的 24×7 持续可用

在开始之前,我们建议先阅读 复制底层原理 部分,以理解复制的基本概念:角色(MAIN / REPLICA)、复制模式(SYNC、ASYNC、STRICT_SYNC)、持久性机制(快照、WAL、deltas)、以及副本恢复行为。


本章节内容(What you’ll find in this section)

本“复制”部分主要关注于设置和操作一个复制集群的实用内容,可作为:

  • 选择部署方式(Docker 或 Kubernetes)
  • 应用可靠性与性能的最佳实践
  • 使用可用命令管理与检查集群

复制底层原理(How replication works)

本小节讲解 Memgraph 复制的底层工作原理,包括:

  • CAP 定理的权衡
  • MAIN 与 REPLICA 的角色
  • 使用 deltas、WALs、快照复制数据
  • 副本状态与恢复
  • 复制模式(ASYNC、SYNC、STRICT_SYNC)及其保证
  • 中断后副本如何追赶最新状态
  • 多租户复制(Enterprise)
  • 时间戳、epoch ID 以及持久化处理等内部细节

使用 Docker 设置复制集群(Set up replication cluster using Docker)

创建一个本地复制集群,使用 Docker 运行一个 MAIN 和两个 REPLICA 实例,配置 SYNC/ASYNC 模式,并验证数据是否正确复制。

这是在本地试验或基于容器的简单部署的推荐起点。


使用 Kubernetes 设置复制集群(Set up replication cluster on K8s)

使用自定义 Kubernetes manifests 或独立 Helm chart 在 Kubernetes 上部署复制集群。

目前官方暂未提供 Community 版的 Helm chart,因此本指南侧重于使用原始 Kubernetes manifests 与概念。


复制最佳实践(Replication best practices)

提供关于选择复制模式、配置存储、硬件规格、设置标志位、管理手动故障切换,以及在 Memgraph Community 中安全运行复制的指南。


复制命令参考指南(Replication commands reference guide)

列出所有 Community Edition 复制相关的命令,包括角色变更、副本注册、监控以及集群维护操作。

参考资料

https://memgraph.com/docs/clustering/replication