pgsync
核心内容总结:
功能
pgsync 是一个用于在两个 PostgreSQL 数据库之间同步数据的工具,功能类似于 pg_dump/pg_restore,支持快速、安全、灵活的数据迁移。
主要特性
- 速度:通过并行传输加速数据同步。
- 安全性:内置规则防止敏感数据泄露(如替换为随机值或隐藏字段)。
- 灵活性:兼容源库与目标库的 schema 差异(如列缺失、列多余)。
- 便利性:支持同步部分表、表组、关联记录,提供过滤条件(如
where store_id = 1)。
使用方法
- 安装:通过
gem install pgsync、Homebrew 或 Docker 安装。 - 配置:运行
pgsync --init生成.pgsync.yml文件,定义源库、目标库、排除表、敏感数据规则等。 - 同步数据:
- 默认同步所有表:
pgsync - 指定表:
pgsync table1,table2 - 使用通配符:
pgsync "table*" - 同步特定行:
pgsync products "where store_id = 1" - 定义表组:在
.pgsync.yml中配置groups,通过pgsync group1调用。
- 默认同步所有表:
- 高级功能:
- 模式同步:
--schema-first或--schema-only控制 schema 与数据的同步顺序。 - 处理外键:支持
--defer-constraints(推荐)或--disable-integrity(不推荐)。 - 敏感数据:通过
.pgsync.yml中的data_rules替换敏感字段(如email: unique_email)。 - 追加表:对大表使用
--append模式分批同步。
- 模式同步:
其他支持
- 多数据库:支持多个数据库配置,通过
.pgsync.yml管理。 - 框架集成:兼容 Django、Heroku、Laravel、Rails 等框架的数据库迁移需求。
- Docker 部署:提供 Docker 镜像,便于容器化部署。