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

如何在Citus集群中删除PostgreSQL数据库?解决会话占用问题

Citus集群删除数据库的推荐方法

Citus集群的数据库删除必须从协调器(Controller)节点发起,无需手动逐个操作Worker节点。协调器会自动同步删除命令到所有Worker节点,这是官方推荐的标准流程,能避免元数据不一致和手动操作失误。

执行命令:

DROP DATABASE <database_name>;

解决Worker节点删库的连接占用问题

你直接在Worker节点删库时遇到的ERROR: database "" is being accessed by other users,即便终止外部连接仍报错,核心原因是Citus集群内部存在跨节点连接(比如协调器到Worker的该数据库会话、Citus后台维护进程),这些连接并非外部应用发起,所以仅在Worker节点终止本地用户进程无效。

若已尝试手动操作Worker,可按以下步骤清理后删除:

  • 先在协调器节点终止所有目标数据库的连接:
    SELECT pg_terminate_backend(pid)
    FROM pg_stat_activity
    WHERE datname = '<database_name>'
      AND pid <> pg_backend_pid();
    
  • 再到每个Worker节点,终止所有目标数据库的连接(排除系统进程):
    SELECT pg_terminate_backend(pid)
    FROM pg_stat_activity
    WHERE datname = '<database_name>'
      AND pid <> pg_backend_pid()
      AND usename NOT IN ('postgres', 'citus');
    
  • 最后在Worker节点执行删库:
    DROP DATABASE <database_name>;
    

但更推荐直接使用协调器节点的DROP DATABASE命令,让Citus自动处理所有节点的删除操作,安全且高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:17:06