前言
不同镜像策略如何对集群高可用表现产生影响?
在数据库中, 高可用性 是保障业务连续性的核心------一旦 Primary 节点故障,能否快速切换到备份节点,直接决定了业务的"抗风险能力"。YMatrix 的 Mirror 机制正是实现这一目标的关键,而 Mirror 节点的分布策略 ,则直接影响集群的稳定性、负载均衡效果甚至扩容灵活性。
今天我们来拆解 YMatrix 的三种镜像分布策略,帮你选对适合业务的高可用方案。
01 YMatrix 镜像机制是什么?
镜像(Mirror)是 YMatrix 中 Primary 节点的热备份实例 ,核心作用有两个:
- 故障无缝切换:当 Primary 节点宕机/故障时,Mirror 会自动升级为 Primary,接管查询与写入服务,避免业务中断;
- 实时数据同步:通过事务日志复制(WAL Replication),Mirror 与 Primary 保持数据完全一致 ------ Primary的每一笔变更都会同步到Mirror。
02 三种镜像分布策略:一张表看清差异
YMatrix 支持三种镜像分布策略, 默认使用环状镜像分布(Ring Mirroring) 。我们用一张表对比它们的核心特性:

03 逐个拆解:每种策略的核心逻辑
- 散列镜像分布(Spread Mirroring):"分散式"备份

逻辑 :将每台主机的 Mirror 节点均匀散布到集群中其他主机。
前提条件 :集群主机数量必须大于每台主机的 Primary 数量 (例如4台主机,每台有 3 个 Primary,则4>3,满足条件)。
特点:负载均衡效果最好,但系统稳定性弱 ------ 因为 Mirror 分布太分散,单主机故障可能影响多个 Mirror 节点。
适用场景:适用于主机数量充足、追求"极致负载均衡"的场景(比如高并发的互联网业务)。
单主机故障时,由于每台主机的镜像都散布在多台主机上,现假设上图 Segment01 主机故障,其余三台主机会将 Segment01 上的 P0,P1,P2 节点的对应 mirror 节点在各自主机上拉起并升级为 Primary,每个集群负载将增加约 33%,存活的 3 台主机将 Segment01 原有的负载均分。

多主机同时故障时,在这我们以 Segment01 和 Segment02 同时故障为例,由于 P0 和 P5 对应的 Mirror 节点存在于两台故障主机上,当两台主机故障时,P0 和 P5 将无法提供服务,此时整个集群将不可用。

- 环状镜像分布(Ring Mirroring):"均衡式"备份(默认策略)

逻辑:将主机的 Primary 序号序列看作"一维纸带",将主机上的 Mirror 按顺序排列,从中间对折后,在其他主机顺时针方向进行 Mirror 排列 。
💡环状镜像成环和镜像分布的规律如下:1.当集群 Segment 数量 <=4 台时,假设 n 为当前主机号,n 号主机对应的 Mirror 会被按照顺序排列从中拆分后位于 n+1,n+2 号主机上;2.当集群 Segment 数量 >=5 台时,假设 n 为当前主机号,n 号主机对应的 Mirror 会被按照顺序排列从中拆分后位于 n+2,n+3 号主机上。
核心优势:扩容不影响旧环 ------ 新增 Primary 会开启新的"镜像环",不会干扰现有集群的运行。
特点:兼顾稳定性与负载均衡,是"稳中有快"的最优解。
适用场景:默认策略,适用于绝大多数生产环境(比如零售、制造等需要"稳定+高效"的业务)。
注意:在生产环境下,环状镜像分布需确保集群中至少具备 5 台 segment 主机,才能"有意义地"支持多主机故障。预期的性能影响与环的大小和每台主机 primary 个数有关,环状镜像的目标不是"无限容忍",而是在固定资源下最大化容错概率。
现以 5 个 Segment 为例,讲解主机负载变化情况。

当单主机故障时。假设 Segment01 出现故障,Segment03 和 Segment04 会将 Segment01 的 Mirror 节点在各自主机上拉起并升级为 Primary,此时 Segment03 与 Segment04 主机负载提升 50%,负载被"环形均匀分散",Segment05 负载保持不变。

当多主机故障时。假设 Segment01 和 Segment02 同时故障,两台主机对应的 Mirror 会在 Segment03、Segment04 和 Segment05 三台主机上被拉起并升级为 Primary,失效风险被"打散",此时拉起 Mirror 节点的 Segment03 和 Segment05 负载将增加 50%,Segment04 负载将增加 100%。

- 组镜像分布(Group Mirroring):"集中式"备份

**逻辑:**将同一主机上的所有 Primary 的 Mirror 打包成"一组",集中部署到另一台主机。
**特点:**系统稳定性最高,但负载均衡差 ------ 因为 Mirror 集中在少数主机,故障影响范围小,但承担 Mirror 的主机可能成为性能瓶颈。
**适用场景:**适用于对稳定性要求极高、可以接受部分负载不均衡的场景(比如金融核心交易系统)。
只要故障的主机不是连续的,组镜像分布配置可以容忍多主机故障。当出现单主机故障时,故障主机上 Primary 对应的 Mirror 节点将会在下一台主机中被拉起升级为 Primary,将引发新主机的负载翻倍,木桶效应明显。除同一个 Segment 的 Primary 和 Mirror 都出现故障外,只要资源(CPU、内存和 IO)足以满足需求,最多可以有一半的主机故障的情况下,正常运行集群。
04 Mirror 的"底线要求":生产环境必做
- **跨主机部署:**Mirror 与 Primary 必须在不同物理主机------这是避免单机故障的核心;
- **强制开启:**生产环境强烈建议开启 Mirror ------这是集群高可用的基础;
- **扩容友好:**使用环状镜像分布时,新增 Primary 会形成新环,无需担心扩容对现有集群的冲击。
05 选对策略,让集群更稳更快
YMatrix 的三种镜像分布策略,对应不同的业务需求:
- 追求负载均衡 → 散列镜像;
- 追求极致稳定 → 组镜像;
- 兼顾稳定与均衡 → 环状镜像(默认)。
掌握这些策略,就能为你的 YMatrix 集群打造"抗造"的高可用架构,让业务在故障面前"稳如泰山"!
如果你想要在 YMatrix 中使用除环状镜像分布的分布策略,可以通过自定义配置 mxaddmirrors 实现,也可通过 MatrixUI 实现快速配置。
⭕️ MatrixUI 参考: