背景
场景:
- PG 每年发布一个大版本, 每个大版本社区支持FIX BUG 5-6年, 用户使用的版本可能已经不再支持, 那么需要升级大版本
- 每个大版本在性能、安全、功能等方面都有大幅度提升, 用户希望升级到大版本
挑战:
- 升级大版本通常需要迁移数据, 时间漫长. 使用逻辑倒出导入耗时长, 影响业务长.
- 使用逻辑增量复制有前置依赖: 必须9.4以上版本, 必须有主键或UK. 而且不支持DDL迁移, 序列迁移等. 配置相对来说也比较复杂, 还需要数据一致性验证等. 一般用户搞不定.
PG 解决方案:
- pg_upgrade 仅仅需要迁移元数据(例如表结构, 视图、序列、索引、函数的定义), 通常可以分钟左右完成. 而且配置简单.
- 《PostgreSQL pg_upgrade 9.3 improve and example》
- 注意: 《PostgreSQL pg_upgrade will destroy all replication slots》