You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Citus集群协调器完全丢失后,如何将元数据同步的Worker提升为协调器?

将Citus集群的Worker节点升级为Coordinator

前提

  • 选定的Worker节点必须已同步全部Citus元数据(pg_dist_node、pg_dist_partition等系统表数据完整)
  • 集群内其余Worker节点状态正常、可正常访问

操作步骤

1. 修改目标Worker的PostgreSQL配置

编辑postgresql.conf文件,调整以下参数:

# 开启Coordinator模式的DDL传播
citus.enable_ddl_propagation = on
# 设置节点类型为Coordinator
citus.node_type = 'coordinator'
# 根据集群实际Worker数量设置最大节点数
citus.max_worker_nodes = 3

修改完成后重启PostgreSQL服务:

sudo systemctl restart postgresql

2. 重新注册集群内所有Worker节点

在新Coordinator的psql终端中执行:

-- 删除旧Coordinator的节点记录(若存在)
DELETE FROM pg_dist_node WHERE nodeid = 0;

-- 注册剩余的Worker节点(替换为实际节点的IP和端口)
SELECT citus_add_node('worker1-ip', 5432);
SELECT citus_add_node('worker2-ip', 5432);
SELECT citus_add_node('worker3-ip', 5432);

注:如果目标Worker本身就是集群的一员,无需注册自己。

3. 验证新Coordinator状态

执行以下命令确认集群运行正常:

-- 查看活跃Worker节点
SELECT * FROM citus_get_active_worker_nodes();

-- 检查分布式表元数据完整性
SELECT * FROM pg_dist_partition;

-- 测试DDL操作(比如创建测试分布式表)
CREATE TABLE test_dist (id int, content text);
SELECT create_distributed_table('test_dist', 'id');

4. 切换应用连接

将所有业务应用的数据库连接地址从旧Coordinator替换为新Coordinator的IP和端口,确保流量正常切换。

5. 清理旧Coordinator记录(可选)

如果旧Coordinator彻底无法恢复,在新Coordinator中执行以下命令移除其节点信息:

DELETE FROM pg_dist_node WHERE nodename = 'old-coordinator-ip';

内容的提问来源于stack exchange,提问作者Archon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:06:35