PostgreSQL 跨云迁移执行手册
数据追平不等于 Schema、Sequence 和扩展已经追平
本手册适用于自建 PostgreSQL 与中国云托管 PostgreSQL 之间的常见同构迁移。跨数据库引擎、分布式内核、跨境传输、加密数据库或未受支持扩展需要单独设计。
| 方法 | 适用边界 | 主要代价 |
|---|---|---|
pg_dump / pg_restore | 中小规模、可停机、需要可移植逻辑格式 | 恢复与建索引耗时,角色和全局对象需单独处理 |
厂商全量加增量 | 托管目标、业务持续写、停机窗口短 | 依赖 WAL、逻辑复制权限、网络和对象支持范围 |
pgBackRest 物理基线 | 同主版本、自建源与自建目标、可访问数据目录 | 对版本、表空间、WAL、加密和恢复路径敏感 |
pg_dump 可以在数据库继续使用时生成一致性导出;自定义与目录格式支持 pg_restore 选择对象和并行恢复,但导入来自不可信超级用户的转储可能执行源端定义的代码,恢复前必须审查。PostgreSQL pg_dump、PostgreSQL pg_restore
- PostgreSQL 完整版本、内核发行版、字符编码、排序规则、时区和参数
- 数据库、Schema、表、分区、索引、约束、视图、物化视图和大对象
- Sequence、Identity、函数、过程、触发器、规则、事件触发器和外部表
- 扩展名称、版本、依赖库、目标云可安装版本和升级路径
- 角色、成员关系、对象 Owner、默认权限、行级安全和连接限制
- 表空间、磁盘布局、数据规模、大表、写入热点、长事务和 DDL 频率
- WAL 级别、复制槽、保留空间、发布订阅权限和故障后续传能力
pg_dump 只导出单个数据库;集群级角色和表空间等全局对象需要 pg_dumpall 或受控清单单独处理。pg_dump 说明
- 为迁移建立独立账号,按结构、全量和增量的不同阶段授予最小权限。
- 优先使用 VPN、专线或云内受控通道;必须走公网时使用 TLS、来源限制和连接审计。
- 复制凭据放入迁移服务或权限受限的密钥文件,不进入命令行、仓库、截图和报告。
- 评估复制槽可能保留的 WAL 空间,设置磁盘告警,不允许因迁移停滞写满源库。
- 目标库先创建独立备份与监控,迁移任务不能作为唯一备份或恢复方案。
- 用生产结构与脱敏数据恢复到隔离目标,记录兼容错误和人工调整。
- 审查扩展、Owner、权限、表空间、函数、分区、默认值和排序行为。
- 若使用逻辑复制,验证没有主键表的 Replica Identity、复制槽、发布订阅和延迟。
- 在全量期间模拟长事务、DDL、网络抖动、磁盘逼近阈值和复制槽积压。
- 运行核心查询、事务、中文排序、时区、精度、JSON、数组和驱动兼容测试。
- 模拟一次停写、追平、Sequence 校准、连接切换和回切。
- 逻辑导出使用与目标兼容的客户端版本,并保留标准错误输出中的全部警告。
- 并行
pg_dump -j会增加连接数和源库负载;目录格式才支持并行导出,需先压测并设置并发上限。 - 全量期间冻结未评审 DDL,避免源目标结构在增量开始前已经分叉。
- 持续监控复制延迟、失败事务、复制槽状态、WAL 增长和目标端应用错误。
- 全量完成不代表可以割接,必须等待增量追平并独立验证数据与对象。
PostgreSQL 原生逻辑复制不会复制 Schema 和 DDL,也不会自动同步 Sequence 当前值;大对象也不在逻辑复制范围内。这些对象必须单独迁移、冻结或双边执行,并在割接前校准。逻辑复制限制
- 确认目标端备份、监控、角色、权限、扩展、参数与应用烟雾测试通过。
- 停止应用写入、消费者、定时任务和会执行 DDL 的发布流水线。
- 等待复制追平,记录最终 LSN、最后同步时间和复制槽状态。
- 同步 Sequence,处理逻辑复制未覆盖对象并执行核心数据校验。
- 将目标库先限制为受控写入,逐步切换应用实例,观察错误、锁、慢查询和连接数。
- 源库保持只读或隔离,保留批准的观察窗口,不立即删除复制任务和备份。
应用切换后,目标库的新写入不会自动安全地回到源库。正式窗口前必须选择并演练一种方式:目标端暂时只读、已验证的反向复制、停写后导出差异、业务补偿,或明确只前进修复。双向复制还需要冲突和序列策略,不能仅因为产品支持“双向”就当作自动回滚。
- 数据库、Schema、表、分区、索引、约束和大对象清单
- 角色、成员关系、Owner、默认权限、行级安全和连接限制
- 扩展版本、函数、过程、触发器、规则、外部对象和表空间
- 每表行数、关键聚合、业务查询、Sequence 当前值与抽样校验
- 应用事务、锁、并发、慢查询、备份、PITR、监控和告警
使用数据库迁移验收方法记录证据,不以“任务完成”作为唯一结论。
核验日期:2026-07-14。创建任务前重新核对源目标版本、扩展、迁移对象、DDL、网络、账号权限、逻辑复制、计费与地域支持。本手册未声称已对所有组合完成实际试迁。
Built with