冯在半年前(2026-01-08)写过一篇文章 《》,介绍了 PostgreSQL 18 和 Pigsty v4.0 的一个新特性,就是瞬间克隆新数据库 —— 利用文件系统 CoW 机制,PG 18 的 file_copy_method = clone 新参数,可以在秒级克隆一个非常大的数据库,而且不占用额外的存储。
这玩意其实非常适合 AI Agent 使用,我在《》里提到过:极低成本的数据库克隆对于反事实推演至关重要。所以当时趁着 4.0 上线的时候,给 Pigsty 里 PG 数据库 Provisioning 的地方加上了这个功能。
![]()
今天看到阿里云数据库说,他们在阿里云 RDS for PostgreSQL 上支持这个功能了 —— 老冯看了直想笑,这个动作也太慢了。说起来其实这个功能不复杂,不需要改内核,只要在 PG 18 上启用一个参数,在创建数据库的时候加一个 STRATEGY 参数就可以实现了。其实不复杂,但是想做好,还是有几个边界条件要处理一下的。
一些改进
之前要克隆数据库的时候,在 Pigsty 的 IaC 式操作里还是有些繁琐,首先你要定义一个数据库,从另一个数据库作为模板,然后执行数据库创建。
所以这次我趁着 pig v1.5 发布的机会,把数据库克隆做成了一个简单易用的命令,pig pg clone。简单的说现在你有个数据库 meta,现在你只要执行 pig pg clone meta ,它就会自动生成一个克隆了。
![]()
当然,你可以使用参数来定制行为,比如指定分支的名字,如果不指定,就按下划线后加数字的方式依次自动起名了。
命令会自动检测是否启用并支持瞬间克隆(目前用 Pigsty + XFS 就满足前提),如果满足就执行瞬间克隆,不满足就警告等待确认并执行普通克隆。-y 可以跳过确认。
![]()
只要底层用的是支持 CoW 的文件系统(比如 xfs),那么克隆一个数据库基本是常数时间耗时,通常几百毫秒,而且占用空间不会变大,只有后续真实写脏的数据块才会真正开始占用新的空间。
Agent Native CLI
当然这个命令行工具还是优点不一样的,因为这是专门给 DBA 和 DBA Agent 设计的。之前你也可以用 Ansible Playbook,或者 pigsty 提供的 shell 脚本 /pg/bin/pg-clone 来执行克隆,不过很显然都没有直接用 pig 命令行工具来的方便。
![]()
比如,在执行操作之前,你可以使用 --plan 打印计划,它会告诉你它会做什么事情,有什么风险。你还可以用 -o json 和 -o yaml 让它输出 JSON 和 YAML 格式的输出。
![]()
顺便一提,命令本体和 Help 输出也都可以使用 text,json,yaml 格式,因此 Agent 用起来会非常方便。因为它可以很轻松的用探索式的方式,拿到所需的结构化帮助信息。pig 里所有命令都有这个功能。
![]()
这个设计,我之前称之为 AgentNative CLI ,之前写了篇文章介绍过。
实例级 Fork
当然除了 Database Clone,还有一个新的相关功能也值得一提。我在 《》 也提到过,就是实例级瞬间克隆,我将其称作 “fork”。
![]()
这里,你只要 执行 pig pg fork dev ,就能从当前实例创建一个名为 dev 的实例,随机分配一个新的端口号。这个功能在误删处理的时候非常实用,首先你可以临时分支一个实例(不占用额外存储),然后快速的用增量 PITR 回滚验证,验证无误之后再在主实例上执行。
顺便一提,现在使用 pig 做 pitr 也非常方便。 比如下面,一条龙傻瓜式执行时间点恢复到特定时间点。
![]()
这次 pig 命令行工具发布,新增了很多管理功能,包括对 PostgreSQL,Patroni,Pgbackrest 组件的各种管理,现在都封装成上面 pg clone / pg fork 的 AgentNative CLI,同时方便人类 DBA 与 AI Agent 使用。过几天会专门写篇文章详细介绍一下。
数据库老司机
点一个关注 ⭐️,精彩不迷路
对 PostgreSQL, Pigsty,下云,AI 感兴趣的朋友
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.