「龙蜥 Skill 精选推荐」:一句话搞定 PG 集群部署和管理

简介: 如果你今天还在为建一个 PG 流复制集群头疼,本文给出了一种解法。

6 月 25 日,龙蜥社区正式上线 SkillHub——一个专注于 Infra 层的 AI Agent 技能平台,致力于把系统运维、安全加固、性能调优等底层能力沉淀为可复用、可分享的 AI 技能。同月,社区联合 AMD 共同发起「Skill 创造营」——龙蜥 SkillHub 技能与最佳实践征集,向广大开发者和一线工程师征集来自真实场景的优秀技能与实战经验。

活动上线以来响应热烈。截至目前,龙蜥 SkillHub 已汇聚超过 100 个 Skill,覆盖安全、系统运维、AI 推理、数据库等多个领域,一个面向 Infra 的 AI 技能生态正在加速成型。「Skill 创造营」持续征集中,诚挚欢迎每一位开发者提交你的 Skill 与最佳实践。

为了让更多优质技能被看见、被复用。龙蜥社区推出「每周 Skill 精选推荐」系列,优选一些 Skill,并结合具体实践场景进行解读,帮助大家把「一个技能」真正用到「一类问题」上。


本期我们推荐的是:在已有在线主机上创建 PG 流复制集群(1 主 + N 备)。pg-create-cluster skill 的目标就一句话: 让 Claude Code 帮你对话式地把 PostgreSQL 流复制集群建起来。以下内容转载自 digoal 德哥公众号:

传统 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_user、os_uid、probe 配置这些,缺省取模板(template)。setting_list 系统自动从 get_init_db_conf 按 PG 版本取,含 listen_addresses='*' 等关键配置,不要问用户。

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

主路径就这 4 条命令

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

# 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 失败)

作者已替你踩过的坑

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

坑 1· 密码混淆

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

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

正确姿势:

PGPASSWORD=postgres /usr/pgsql-14/bin/psql -h <VIP 或 主库IP> -U postgres

坑 2 · database not connected

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

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

坑 3· 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=streaming 且 replay_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 助手替你把命令执行好”。


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


skill 链接:https://skillhub.openanolis.cn/skill/pg-create-clusterSkillhub

官网链接:https://skillhub.openanolis.cn

—— 完 ——

相关文章
|
1月前
|
安全 Java 数据安全/隐私保护
|
1月前
|
人工智能 运维 Linux
|
21天前
|
人工智能 弹性计算 运维
STAROps 主机智能巡检:给你的 ECS 请个 24 小时在线的 AI 医生
STAROps 主机智能巡检:给你的 ECS 请个 24 小时在线的 AI 医生。
|
21天前
|
算法 Java 编译器
|
29天前
|
人工智能 自然语言处理 前端开发
最新版通义千问(Qwen3.7-Plus)功能介绍
Qwen3.7-Plus是通义千问3.7系列中定位**高性价比多模态混合智能体基座**的主力版本,采用35B稠密参数架构,在继承Qwen3.7强大文本与智能体能力的基础上,全面升级视觉-语言融合能力,实现“看、想、写、做、验”全流程闭环。它原生统一文本、图片、截图、短视频、网页五大输入形态,打通GUI可视化界面与CLI命令行双操作环境,既能看懂真实世界与屏幕内容,又能深度推理、编写代码、调用工具、自主执行并验证结果,在Vision Arena等权威多模态评测中跻身全球前五、中国第一。相较于同系列旗舰Max,Qwen3.7-Plus以更低成本实现了全模态能力覆盖,是个人开发者、中小企业与高频调用
537 2
|
1月前
|
人工智能 Linux 网络性能优化
AgenticFS 重磅发布
AgenticFS是阿里云专为AI Agent设计的新型文件系统,支持百万级Workspace管理,提供容量、权限及性能隔离,解决传统NAS在文件数、目录配额和接入点规模上的瓶颈,具备弹性扩展、QoS保障与租户级故障域隔离能力。
222 3
|
1月前
|
存储 人工智能 运维
企业AI知识库搭建指南:手把手教你落地
本指南面向企业IT负责人,手把手教你安全落地AI知识库:聚焦本地私有化部署、文档解析、向量检索与RAG框架搭建,强调数据不出域、分级权限与合规风控,助企业盘活内部知识资产,实现“问问题即得答案”。
285 4
|
1月前
|
人工智能 弹性计算 安全
ANOLISA 亮相 WAIC“共赢金砖”论坛,入选“智用·人工智能国际公共产品图谱”
ANOLISA 等50 多款产品一同面向全球南方构建人工智能公共服务资源池。
|
1月前
|
自然语言处理 监控 安全
人和 Agent 第一次共享同一份 CLI 体验 —— ANOLISA v1.0发布
以前你得在“给人用”和“给 Agent 用”之前挑一个,现在一个 CLI 就够了。