关于 YMatrix
部署数据库
使用数据库
管理集群
最佳实践
高级功能
高级查询
联邦查询
Grafana 监控
备份恢复
灾难恢复
管理手册
性能调优
故障诊断
工具指南
系统配置参数
SQL 参考
YMatrix 集群的稳定运行依赖三大核心进程模块,各模块各司其职、协同联动,构成完整的分布式数据处理架构。
集群进程的 “总管家”,是随集群安装启动的常驻系统服务,拥有 root 权限。核心功能包括启动并托管所有其他 YMatrix 服务进程、维护进程状态持久化、保障服务高可用,同时暴露 RPC 接口供外部管理操作,是集群进程启动与监控的基础。
集群的 “调度中枢”,以 mxbox 系列进程为核心,整合分布式管理所需的各类服务能力。核心功能涵盖集群拓扑管理(cluster 模块)、数据分片调度(shard 模块)、数据复制与故障切换(replication 模块)、自动化部署(deployer 模块),同时依托 etcd 实现集群元数据存储与一致性保障,支撑集群分布式协作。
集群的数据 “处理核心”,以 postgres 主进程为载体,分布在 Master、Standby、Segment 各类节点上。核心功能包括接收并解析 SQL 请求、执行数据存储与计算、日志记录与数据持久化、分布式事务处理等,同时衍生出日志、存储、监控等各类附属进程,支撑数据全生命周期管理。
核心定位:集群进程的 “总管家”
集群所有服务进程的根托管进程,是 YMatrix 集群启动与运维的基础。
关键特性
/etc/matrixdb6/supervisor.conf,通过配置文件定义托管的进程列表与启动参数。所在节点
集群所有节点(Master、Standby、Segment)均部署,每个节点独立运行一个 supervisord 实例,管理本节点的所有服务进程。
核心定位:集群元数据的 “分布式账本”
SOA 服务层的核心组件,负责集群元数据的存储与一致性保障。
关键特性
所在节点
etcd 的存储可以理解为全复制表,因此节点数量不必太多。在实践层面,推荐的配置为 1、3、5、7 节点,安装部署过程会自动根据主机数量选定部署几个 etcd 实例。
因此如果集群里的主机个数是偶数,或者超过 7 台主机,那么有些机器上是没有 etcd 节点的。可以通过 ps 命令查看当前主机上有没有 etcd 进程。
通常 Master 和 Standby 的主机上会优先安放 etcd 节点。
核心定位:SOA 服务的 “功能载体”
集群分布式管理的核心执行组件,按功能模块化设计,支撑集群全生命周期管理。
主要模块及功能 | 模块 | 核心功能 | |--- | --- | | mxbox cluster | 维护集群拓扑关系,管理节点加入 / 退出、状态同步等操作 | | mxbox shard | 负责数据分片的分配、调度与负载均衡,关联分片与 Segment 节点的映射关系 | | mxbox replication | 管控集群数据复制策略,实现 Master-Standby、Primary-Mirror 之间的同步与故障切换 | | mxbox deployer | 提供集群自动化部署能力,支持节点初始化、软件安装、配置同步等运维操作 |
关键作用 作为 SOA 服务的 “执行器”,将集群管理逻辑拆分为独立模块,降低维护复杂度,同时通过标准化接口与 supervisord、etcd 协同,实现集群的灵活扩展与高效运维。
核心定位:数据处理的 “核心引擎”
数据库实例的核心进程,是数据存储、查询执行、事务处理的载体,不同节点的实例进程承担差异化角色。
节点差异化配置与功能
| 节点类型 | 进程角色(gp_role) | 核心配置示例 | 核心功能 |
|---|---|---|---|
| Master | dispatch(调度) | -p 5432 -D /mxdata/master/mxseg-1 | 接收客户端连接、生成分布式查询计划、调度 QE 执行、汇总查询结果 |
| Standby | dispatch(调度) | -p 5432 -D /mxdata/standby/mxseg-1 | 同步 Master 数据、提供故障切换能力,接管 Master 功能当主节点异常时 |
| Segment(Primary) | execute(执行) | -p 6000 -D /mxdata/primary/mxseg0 | 存储原始数据、执行 QD 分发的 Slice 任务、向 Mirror 发送 WAL 日志 |
| Segment(Mirror) | execute(执行) | -p 7001 -D /mxdata/mirror/mxseg6 | 同步 Primary 数据、提供数据冗余,Primary 异常时切换为 Primary 节点 |
衍生进程依赖
每个 postgres 主进程会衍生出日志处理、存储优化、事务保障等附属进程,共同支撑核心数据处理能力,是集群数据操作的 “最终执行者”。
核心定位:查询的 “智能调度官”
Master 节点的会话专属进程,是分布式查询的 “大脑”,负责查询全生命周期的管控。
核心功能
关联进程
核心定位:查询的 “一线执行者”
Segment 节点的会话专属进程,是分布式查询的 “手脚”,负责具体 Slice 任务的执行。
核心功能
关键特性
核心定位:分布式事务的 “守护者”
Master 节点独有进程,专门负责分布式场景下的死锁检测,保障事务执行的安全性。
核心功能
关键意义
YMatrix 作为分布式数据库,跨节点事务场景频繁,该进程有效解决了分布式环境下死锁难以检测的问题,保障了事务并发执行的稳定性。
核心定位:数据一致性的 “铁三角”
三者协同构成 YMatrix 数据同步的核心链路,保障节点间数据一致性与故障可恢复性。
分工协作逻辑
核心价值
通过 WAL 日志的实时同步,实现 Standby 对 Master、Mirror 对 Primary 的数据冗余,当主节点异常时,备节点可快速通过 WAL 日志恢复数据,保障集群高可用。
YMatrix 集群进程以 supervisord 为根进程,呈层级化树形结构分布,以下按核心分组展开,聚焦关键进程的关联与作用:
supervisord(根进程)
├─ SOA 服务层
│ ├─ mxbox cluster(集群拓扑管理)
│ ├─ mxbox shard(分片调度管理)
│ ├─ mxbox replication(数据复制与故障切换)
│ ├─ mxbox deployer(自动化部署)
│ └─ etcd(集群元数据存储)
├─ 系统管理与监控层
│ ├─ mxui(Web 管理界面)
│ ├─ cylinder(周期性运维任务)
│ └─ telegraf(集群监控数据采集与指标暴露)
└─ 数据库实例层(按节点类型分支)
├─ Master 节点
│ ├─ postgres(主实例进程,gp_role=dispatch)
│ │ ├─ 日志与基础进程(master logger、mxlogstat 等)
│ │ ├─ 存储优化进程(checkpointer、walwriter 等)
│ │ ├─ 分布式特性进程(dtx recovery、global deadlock detector 等)
│ │ └─ 查询调度进程(QD:Query Dispatcher)
│ └─ matrixgate warden(网关连接管理)
├─ Standby 节点
│ └─ postgres(备实例进程,gp_role=dispatch)
│ ├─ 基础保障进程(logger、checkpointer 等)
│ └─ 数据同步进程(walreceiver、startup recovering)
└─ Segment 节点(Primary/Mirror)
├─ postgres(实例进程,gp_role=execute)
│ ├─ 基础保障进程(logger、mxlogstat 等)
│ └─ 查询执行进程(QE:Query Executor)
├─ Primary 独有进程(walsender:WAL 日志发送)
└─ Mirror 独有进程(walreceiver:WAL 日志接收、startup recovering:数据恢复)
客户端通过 libpq 协议与 Master 建立连接,由 QD 串联所有相关 Segment 节点的 QE 进程,形成端到端的会话链路,实现分布式查询的协同执行。
客户端会话
├─ Master 节点:postmaster(监听连接)→ fork 子进程 QD(会话专属调度器)
│ └─ QD 通过 libpq 协议连接各 Segment 节点 postmaster
└─ Segment 节点:postmaster → fork 子进程 QE(会话专属执行器)
├─ QD 与 QE 建立双向通信:libpq 协议(控制命令/状态反馈)、interconnect(数据交互)
└─ 会话生命周期:QD 统一管控查询解析、计划分发、结果汇总,QE 执行具体数据处理
Slice 切片进程:查询并行的核心单元 核心作用:通过 Slice 划分将复杂查询拆解为多个并行任务,每个任务由不同节点的 QE 独立执行,大幅提升查询处理效率。
查询计划
└─ 按 Motion(数据移动操作)划分为多个 Slice(独立处理单元)
├─ 每个 Slice 对应一个独立的查询处理任务(如数据过滤、聚合、连接)
├─ 物理载体:单个 QE 进程负责执行一个 Slice
└─ 层级关系:发送方 Slice(数据产出)→ Motion 操作 → 接收方 Slice(数据消费)
Gang:分布式执行的进程协作组
Slice 任务
└─ Gang(进程组)
├─ 组成:不同 Segment 节点上,执行同一个 Slice 任务的所有 QE 进程
├─ 特性:进程组内 QE 进程协同工作,同步执行相同的 Slice 逻辑
└─ 作用:保障分布式场景下,同一查询单元的并行执行一致性,实现跨节点数据协同处理