
dimitri/pgcopydbpgcopydb是一款用于自动化在两个运行中的PostgreSQL服务器之间执行pg_dump | pg_restore操作的工具。它旨在解决原生pg_dump和pg_restore在并行处理时的限制(如目录格式需先写入本地文件),通过优化流程实现数据库的快速复制,支持并行数据传输和索引创建,显著提升复制效率。
--table-jobs)和创建索引(--index-jobs),大幅缩短复制时间pre-data和post-data转储部分(Postgres自定义格式)pre-data部分,在目标库创建所有对象pg_class.reltuples)排序,优先复制大数据量表VACUUM ANALYZE优化post-data部分,自动过滤已创建的索引和主键约束post-data项的转储ID,主进程通过pg_restore --use-list过滤已创建对象,避免重复操作| 环境变量 | 描述 | 示例 |
|---|---|---|
PGCOPYDB_SOURCE_PGURI | 源数据库连接URI | postgres://***/dbname |
PGCOPYDB_TARGET_PGURI | 目标数据库连接URI | postgres://***/dbname |
PGCOPYDB_TARGET_TABLE_JOBS | 表数据复制并行任务数 | 8 |
PGCOPYDB_TARGET_INDEX_JOBS | 索引创建并行任务数 | 2 |
bash# 配置源和目标数据库连接 export PGCOPYDB_SOURCE_PGURI="postgres://***/dbname" export PGCOPYDB_TARGET_PGURI="postgres://***/dbname" # 执行数据库复制(8个表并行,2个索引并行) pgcopydb copy-db --table-jobs 8 --index-jobs 2
dockerfileFROM pgcopydb USER root RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ git \ && rm -rf /var/lib/apt/lists/* WORKDIR /usr/src/ RUN git clone --depth 1 [***] WORKDIR /usr/src/pgcopydb COPY ./copydb.sh copydb.sh USER docker CMD /usr/src/pgcopydb/copydb.sh
yamlversion: "3.9" services: source: image: postgres:13-bullseye expose: - 5432 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: h4ckm3 POSTGRES_HOST_AUTH_METHOD: trust target: image: postgres:13-bullseye expose: - 5432 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: h4ckm3 POSTGRES_HOST_AUTH_METHOD: trust pgcopydb: build: . environment: PGCOPYDB_SOURCE_PGURI: postgres://postgres:h4ckm3@source/postgres PGCOPYDB_TARGET_PGURI: postgres://postgres:h4ckm3@target/postgres PGCOPYDB_TARGET_TABLE_JOBS: 4 PGCOPYDB_TARGET_INDEX_JOBS: 2
版权所有 (c) PostgreSQL全球开发组。
本项目基于PostgreSQL许可证授权,详情见LICENSE文件。
本项目包含第三方依赖,详情见NOTICE文件。





manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务