一、核心价值
性能飞跃:从“等数据”到“秒级就绪”
极速克隆将数据库环境准备从“重资产、长等待”的运维操作,变为“零成本、毫秒级”的开发者自助服务,让数据库像代码分支一样轻量、敏捷、随用随建。
成本革命:存储零膨胀
基于 Copy-on-Write(写时复制) 技术,克隆实例与源实例共享底层数据页,仅在数据发生变更时才产生增量存储。N 个克隆环境 ≠ N 倍存储成本,近乎零增量成本。
安全合规:生产隔离零风险
·克隆实例与源实例完全隔离,任何写操作不回写源库。
·满足“非生产环境使用真实数据”的合规要求。
二、适用场景
·AI Agent 沙盒:为 AI 创建隔离的数据库副本进行探索性分析。
·开发测试:秒级获得与生产一致的完整数据环境。
·CI/CD 并行测试:为每个 Pipeline 创建独立数据库。
·数据分析:克隆生产库进行复杂分析查询,不影响线上。
三、前提条件
·数据库版本为 PostgreSQL 18及以上版本。
·购买实例时选择云盘类型,硬盘选择增强型 SSD 云硬盘,勾选开启 Branch 能力。
四、步骤1:启用 clone 模式
方式一:会话级别(仅当前连接生效)
SET file_copy_method = clone;
方式二:实例级别(所有连接生效)
通过参数设置来实现,操作步骤可参考 设置实例参数。
五、步骤2:执行数据库克隆
— 终止模板库的所有活动连接(必须)SELECT pg_terminate_backend(pid)FROM pg_stat_activityWHERE datname = 'source_db' AND pid != pg_backend_pid();– 执行瞬间克隆CREATE DATABASE clone_db TEMPLATE source_db STRATEGY FILE_COPY;
六、步骤3:验证克隆结果
— 连接到克隆库\\c clone_db– 验证数据完整性(示例:检查表行数)SELECT schemaname, relname, n_live_tupFROM pg_stat_user_tablesORDER BY n_live_tup DESCLIMIT 10;
七、实践教程:AI Agent 沙盒工作流
以下为你演示一个典型的 AI Agent 沙盒克隆流程:
— ============================================– 环境准备:确认参数设置– ============================================SHOW file_copy_method;– 预期输出: cloneSHOW server_version;– 预期输出: 18.x– ============================================– 步骤 1:创建示例源数据库并写入测试数据– ============================================CREATE DATABASE ai_production;\\c ai_productionCREATE TABLE documents ( id SERIAL PRIMARY KEY, title TEXT NOT NULL, content TEXT, embedding vector(3), created_at TIMESTAMPTZ DEFAULT now());INSERT INTO documents (title, content, embedding)SELECT 'Document ' || i, 'Content for document ' || i, ('[' || (random())::text || ',' || (random())::text || ',' || (random())::text || ']')::vectorFROM generate_series(1, 100000) AS i;– 确认数据量SELECT count(*) FROM documents;– 预期输出: 100000SELECT pg_size_pretty(pg_database_size('ai_production'));– 查看数据库大小– ============================================– 步骤 2:瞬间克隆沙盒– ============================================\\c postgres– 记录开始时间\\timing onSELECT pg_terminate_backend(pid)FROM pg_stat_activityWHERE datname = 'ai_production' AND pid != pg_backend_pid();CREATE DATABASE ai_sandbox TEMPLATE ai_production STRATEGY FILE_COPY;– 预期输出: CREATE DATABASE– 预期耗时: < 200ms(无论数据库多大)\\timing off– ============================================– 步骤 3:在沙盒中自由操作(不影响源库)– ============================================\\c ai_sandbox– AI Agent 可以安全地执行任意操作DELETE FROM documents WHERE id > 50000;ALTER TABLE documents ADD COLUMN ai_score FLOAT DEFAULT 0;UPDATE documents SET ai_score = random() WHERE id <= 1000;– 验证沙盒修改SELECT count(*) FROM documents;– 预期输出: 50000(已删除一半)– ============================================– 步骤 4:验证源库数据完整性(未受影响)– ============================================\\c ai_productionSELECT count(*) FROM documents;– 预期输出: 100000(源库数据完好无损)– 确认源库没有 ai_score 列SELECT column_name FROM information_schema.columnsWHERE table_name = 'documents' ORDER BY ordinal_position;– 不包含 ai_score– ============================================– 步骤 5:清理沙盒– ============================================\\c postgresDROP DATABASE ai_sandbox;
八、测试数据
| 数据库大小 | 克隆模式 | 传统复制 | 提升倍数 |
| 3.8GB(200万行) | 56.8ms | 1,274ms | 22x |
九、SQL
注意:说明:
注意:将 your_db_name 替换为你要克隆的数据库名。建议选一个 GB 级以上的数据库。
— 1. 查看当前实例已有哪些库,选一个作为模板\\l– 2. 查看模板库大小SELECT pg_size_pretty(pg_database_size('your_db_name')) AS db_size;– 3. 测试克隆模式(file_copy_method = clone)\\timing onSET file_copy_method = clone;SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'your_db_name' AND pid != pg_backend_pid();CREATE DATABASE test_clone TEMPLATE your_db_name STRATEGY FILE_COPY;\\timing off– 4. 测试传统复制(file_copy_method = copy)\\timing onSET file_copy_method = copy;SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'your_db_name' AND pid != pg_backend_pid();CREATE DATABASE test_copy TEMPLATE your_db_name STRATEGY FILE_COPY;\\timing off– 5. 清理DROP DATABASE test_clone;DROP DATABASE test_copy;