pgclone
在不同环境间克隆 PostgreSQL 数据库、模式、表和函数
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pgclone | 2.2.0 | ETL | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 9590 | pgclone | 否 | 是 | 是 | 是 | 否 | 否 | - |
| 相关扩展 | db_migrator pglogical repmgr pgactive |
|---|
shared_preload_libraries = pgclone is required for async/progress features; synchronous clone functions work without it.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.2.0 | 1817161514 | pgclone | - |
| RPM | PIGSTY | 2.2.0 | 1817161514 | pgclone_$v | - |
| DEB | PIGSTY | 2.2.0 | 1817161514 | postgresql-$v-pgclone | - |
构建
您可以使用 pig build 命令构建 pgclone 扩展的 RPM / DEB 包:
pig build pkg pgclone # 构建 RPM / DEB 包
安装
您可以直接安装 pgclone 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pgclone; # 当前活跃 PG 版本安装
pig ext install -y pgclone -v 18 # PG 18
pig ext install -y pgclone -v 17 # PG 17
pig ext install -y pgclone -v 16 # PG 16
pig ext install -y pgclone -v 15 # PG 15
pig ext install -y pgclone -v 14 # PG 14
dnf install -y pgclone_18 # PG 18
dnf install -y pgclone_17 # PG 17
dnf install -y pgclone_16 # PG 16
dnf install -y pgclone_15 # PG 15
dnf install -y pgclone_14 # PG 14
apt install -y postgresql-18-pgclone # PG 18
apt install -y postgresql-17-pgclone # PG 17
apt install -y postgresql-16-pgclone # PG 16
apt install -y postgresql-15-pgclone # PG 15
apt install -y postgresql-14-pgclone # PG 14
预加载配置:
shared_preload_libraries = 'pgclone';
创建扩展:
CREATE EXTENSION pgclone;
用法
语法:
CREATE EXTENSION pgclone; SELECT pgclone_table('host=source-server dbname=mydb user=postgres password=secret', 'public', 'customers', true);
pgclone 可以直接从 SQL 克隆 PostgreSQL 数据库、模式、表、函数、角色和权限。上游 README 强调它使用 PostgreSQL 的 COPY 协议,避免了外部 pg_dump / pg_restore 工作流。
核心能力
README 列出的支持包括:
- 克隆表、模式、函数和完整数据库
- 索引、约束、触发器、视图、物化视图和序列
- 通过列选择和
WHERE过滤进行选择性克隆 - 使用 error、skip、replace 或 rename 策略处理冲突
- 数据脱敏与敏感列发现
- 使用后台 worker 的异步与并行克隆
基本函数
SELECT pgclone_table(
'host=source-server dbname=mydb user=postgres password=secret',
'public', 'customers', true
);
SELECT pgclone_schema(
'host=source-server dbname=mydb user=postgres password=secret',
'sales', true
);
SELECT pgclone_database(
'host=source-server dbname=mydb user=postgres password=secret',
true
);
README 还记录了 pgclone_version(),用于安装后做版本确认。
异步模式
如果要使用后台 worker 功能,扩展必须预加载:
shared_preload_libraries = 'pgclone'
上游文档把异步操作、进度跟踪和多 worker 并行克隆拆分在独立文档中说明。
需求
当前上游要求如下:
- PostgreSQL 14 或更高版本
- PostgreSQL 开发头文件
libpq开发库- GCC 或兼容的 C 编译器
项目主页是 postgresql.az,README 还链接了使用指南、异步操作、测试和架构等独立文档。