pgclone

在不同环境间克隆 PostgreSQL 数据库、模式、表和函数

概览

扩展包名版本分类许可证语言
pgclone2.2.0ETLPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
9590pgclone-
相关扩展db_migrator pglogical repmgr pgactive

shared_preload_libraries = pgclone is required for async/progress features; synchronous clone functions work without it.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY2.2.01817161514pgclone-
RPMPIGSTY2.2.01817161514pgclone_$v-
DEBPIGSTY2.2.01817161514postgresql-$v-pgclone-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
u22.x86_64
PIGSTY 2.2.0
u22.aarch64
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
u24.x86_64
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
u24.aarch64
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0
PIGSTY 2.2.0

构建

您可以使用 pig build 命令构建 pgclone 扩展的 RPM / DEB 包:

pig build pkg pgclone         # 构建 RPM / DEB 包

安装

您可以直接安装 pgclone 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

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);

来源:README使用指南

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 还链接了使用指南、异步操作、测试和架构等独立文档。


最后修改 2026-04-10: extension update (13b4540)