首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >龙蜥 SkillHub 放大招: 一句话搞定 PG 集群部署和管理

龙蜥 SkillHub 放大招: 一句话搞定 PG 集群部署和管理

作者头像
用户4035096
发布2026-07-28 10:35:39
发布2026-07-28 10:35:39
1260
举报

最近在龙蜥 SkillHub 上翻到一个很有意思的 skill,叫 pg-create-cluster,由唐成老师的中启乘数科技(杭州)贡献。

它的目标就一句话: 让 Claude Code 帮你对话式地把 PostgreSQL 流复制集群建起来

传统 DBA 想建一个 1 主 2 备的 PG 集群,你得翻 30 页文档、记 若干 个参数、跑 hosts 探查、跑 vips 选空闲 VIP、跑 binpaths 看实际版本,然后小心翼翼地拼一条 create 命令。中间任意一个细节错了,initdb 报错、端口冲突、VIP 被占,前功尽弃。

pg-create-cluster 这个 skill 的核心思路,不是把这些命令打包成一个脚本,而是让 Claude Code 站在你旁边,像聊天一样一步一步问你。你回答,它就生成下一步命令;你犹豫,它就再问你一遍。

今天这篇文章,就把这件事拆开讲。

一、这件事的本质:工具开始"长出嘴"

过去十年,DBA 工具一直在做"减法" —— 把 30 页文档压成 5 个参数,把 5 个参数压成 1 条命令。

pg-create-cluster 这件事,走出了另一条路:工具不再只输出命令,而是开始"问你问题"

它做三件事:

第一,对话式 —— 一次只问 1 个问题,已定下的绝不重问。

第二,点选式 —— 跑 hosts / vips / binpaths 把真实的主机、VIP、版本摆到你面前让你选,而不是开放填空。

第三,shell 落地 —— 最后它会生成具体脚本命令直接跑起来。

合在一起, 这个 skill 解决的是一件很经典的事情:把 DBA 建库这件事,从"翻文档拼命令"降维到"跟 AI 助手聊天"

二、必须先确认的三件事

用这个 skill 之前,有 三件事 必须先确认,缺一个就跑不通。

第一件:CLup 必须先起来。 本地 CLup 默认连 127.0.0.1 的 8090 端口,远程 CLup 要带 --url,而且端口后面不能加 /api。这里有个非常关键的工程哲学: 建库第一步必须先问用户本地还是远程,连接配置要先于凭据确定。你连哪台机器,直接决定后续每条命令要不要带 --url

第二件:Python 解释器是固定的。 必须用 /opt/csu_pyenv/bin/python,这个解释器自带 pycryptodome 库,脚本做密码 AES 加密依赖它。换别的 Python 解释器,跑起来会直接报错。

第三件:PG 二进制要对得上 OS。 这是一个非常隐蔽的坑 —— 同一台机上的 PG,如果是给 EL8 编的,但你跑的是 Rocky9,initdb 时会缺 libicui18n.so.60libssl.so.1.1 这些 .so 文件,然后直接挂掉。解法是要么换装对 OS 的 PG,要么换一台 PG 编译正常的主机。

三、"像聊天不像表单"是这个 skill 的灵魂

三个原则看似简单,做到位的 skill 不到 10%

第一:一次只问 1 个。绝对不写成"请提供:集群名、主库 IP、备库 IP、PG 版本……"这种清单。每轮先扫历史对话,已定下的绝不重问。

这件事看似简单,但实际上 90% 的 AI 工具都会在这一步栽 —— 上来就丢表单给用户,用户根本不知道先回答哪个。

第二:用真实数据做选择。先跑 hosts / vips / binpaths --host 把真实的主机、VIP、版本摆到你面前让你点选,而不是开放填空。

理由很直接: 用户在填空的时候,90% 会填错(拼错 IP、用错版本);但在点选的时候,选错的可能性不到 5% 。这是 skill 设计上对人类认知规律的尊重。

第三:连接先于凭据。第一句必须是"这次连本地 CLup 还是远程",不能上来就要密码。理由:

  • 连接 URL 决定了后续每条命令是否要带 --url,顺序不能乱
  • 上来就要密码,用户会本能地警觉 —— 你还没说你要干什么,凭什么给密码?

四、用户只需决定 6 件事

pg-create-cluster 的参数哲学是: 用户只需决定 6 件事,其余走默认

#

参数

来源

1

集群名

用户取

2

主库 IP

从 hosts 挑在线 agent 可达的

3

备库 IP

剩余在线主机,可多台,但同一台不能既主又备

4

PG 完整版本

binpaths --host <主库IP> 看实际装的(如 16.10)

5

VIP + 池 ID

vips 已自动排除被占的 VIP 和主机 IP

6

repl 流复制密码

默认 repl_user=db_user / repl_pass=db_pass

管理员账号、端口、os_useros_uid、probe 配置这些,缺省取模板(template)。setting_list 系统自动从 get_init_db_conf 按 PG 版本取,listen_addresses='*' 等关键配置,不要问用户

至少 2 台(1 主 1 备),建议 3 台(1 主 2 备)

五、主路径就这 4 条命令

3 条探查 + 1 条创建,完事。

代码语言:javascript
复制
# 1. 探查在线主机
/opt/csu_pyenv/bin/python create_pg_sr_cluster.py \
  --user <u> --pass <p> hosts

# 2. 探查空闲 VIP(末尾直接给 recommended selectable VIPs)
/opt/csu_pyenv/bin/python create_pg_sr_cluster.py \
  --user <u> --pass <p> vips

# 3. 探查 PG 实际版本
/opt/csu_pyenv/bin/python create_pg_sr_cluster.py \
  --user <u> --pass <p> binpaths --host <主库IP>

# 4. 创建 + 轮询任务
/opt/csu_pyenv/bin/python create_pg_sr_cluster.py \
  --user <u> --pass <p> create \
  --cluster-name <名> --primary <主IP> --standby <备IP1,IP2> \
  --version <完整版本> --vip <VIP> --pool-id <池ID> \
  --repl-pass <密码> --wait

成功会打印 SUCCESS: cluster created (task N)

脚本内部实际跑的事情是: 登录 → 逐节点匹配 pg_bin_path → 取 setting_list(含 listen_addresses='*')→ preflight 校验(目录空/端口/VIP) → 组装 body(密码加密) → 提交 → 轮询任务(state=1 成功、-1 失败)

六、作者已经替你踩过的坑

这一段不读,踩到再查文档就晚了。

坑 ① · 密码混淆

验证连库时报 password authentication failed for user "postgres",很多 DBA 第一反应是去翻 CREATE BODY,找到顶层打印的 db_pass 字段,然后用这个值去登录 —— 立刻报错。

原因是这个 db_passto_db_textAES 加密串,不是明文。实例真实密码 = 模板默认明文 postgres

正确姿势:

代码语言:javascript
复制
PGPASSWORD=postgres /usr/pgsql-14/bin/psql -h <VIP 或 主库IP> -U postgres

坑 ② · database not connected

建库时报 create_replication_user ... database not connected!,99% 是 setting_list 的问题 —— 没 listen_addresses,新 PG 只听 localhost,CLup server 连不上。

这个 skill 已经自动从 get_init_db_confsetting_list,正常不会再现;若改脚本时又复现,先查 setting_list 里有没有 listen_addresses='*'

坑 ③ · state=0 不是故障

现网 CLup 这版 clup_cluster.state=0 = 正常(库里所有健康集群都是 0);CLAUDE.md 写的 1=Normal 是逻辑 HA state,不是这个表的列

判健康要看:

  • clup_db.db_state=0(Running)
  • 主备角色正确
  • pg_stat_replication 在 streaming(state=streamingreplay_lsn=sent_lsn)

七、v1 范围 —— 如实说,不含糊

v1 仅支持

v1 不支持

已有在线主机

新建虚拟机再建集群(create_vm_sr_cluster 留 v2)

显式指定主备(--primary / --standby)

主机不够时硬装

至少 1 主 1 备,建议 1 主 2 备

凭据安全单独说一句:密码走 --pass 会出现在进程命令行(ps aux 就能看到),更推荐用环境变量CLUP_USER / CLUP_PASS(默认先读环境变量,没读到才用 flag)。

最后

pg-create-cluster 这个 skill,最值得借鉴的不是它的命令、不是它的脚本,而是它对人类认知规律的尊重 ——

  • 一次问一个
  • 用真实数据做选择
  • 连接先于凭据

这三件事做到位,AI 助手才真的从"工具"升级成"伙伴"。

过去十年,运维工具一直在做减法 —— 把命令变少,把参数变少,把文档变薄;未来十年,运维工具会开始做加法 —— 让工具主动问你问题,主动把你的认知负担接过去

pg-create-cluster 是这个转向里最容易被低估的一步。它看起来只是个 skill,但它潜台词是: DBA 工具终于开始"长嘴"了

只要这个趋势继续下去,下一个十年,DBA 的核心能力就不再是"记住多少命令",而是"知道怎么问对问题、怎么让 AI 助手替你把命令执行好"。

参考资料

  • 完整 skill 内容:龙蜥 SkillHub · pg-create-cluster
  • 配套视频:本期 8 分钟精讲视频已生成, 可在「digoal德哥」视频号获取

📌 如果你今天还在为建一个 PG 流复制集群头疼,建议你今天就把 Claude Code + pg-create-cluster SKILL 这套装起来。然后告诉 Claude Code:"建一个 1 主 2 备的 PG 16.10 集群",让它替你跑完整个流程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 一、这件事的本质:工具开始"长出嘴"
  • 二、必须先确认的三件事
  • 三、"像聊天不像表单"是这个 skill 的灵魂
  • 四、用户只需决定 6 件事
  • 五、主路径就这 4 条命令
  • 六、作者已经替你踩过的坑
  • 七、v1 范围 —— 如实说,不含糊
  • 最后
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档