我想计算我的 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 实例进行主要版本升级时的停机时间。
简短描述
当您为 PostgreSQL 数据库实例执行 Amazon RDS 主要版本升级时,会发生以下情况:
- 为备份和回滚拍摄升级前的快照。
- 实例会关闭以准备升级。
- pg_upgrade 实用程序用于在实例上运行升级作业。
- 拍摄升级后的快照,并在实例上重新配置网络。
由于主要版本升级涉及对内部数据存储格式的更改,因此您可能会遇到停机情况,且无法估计完成时间。升级前的备份基于增量更改、pg_upgrade 数据库大小、数据库和数据库对象(如表)的数量。
解决方法
要在执行实例主要版本升级之前计算停机时间,请测试一个模拟当前实例设置和数据的单独实例。要测试单独的实例,请完成以下步骤:
**注意:**以下步骤可以估算主要版本升级过程和升级所需的时间。
- 创建当前数据库实例的手动快照。
**注意:**创建手动快照后,让您的实例完成延迟加载或完成实例的预热。
- 要创建测试实例,请还原快照。确保测试实例的配置与您的生产实例完全相同,以便准确估算停机时间。
- 将测试实例升级到所需版本。
- 要刷新 pg_statistic 表,请运行 ANALYZE(分析)。
- 比较结果,然后选择进行生产升级。
使用只读副本升级 Amazon RDS for PostgreSQL 实例时的停机时间
当您执行主要版本升级时,Amazon RDS 会同时升级您的 AWS 区域和主数据库实例内的只读副本。只读副本可能会延长主实例的升级过程时间。
要防止副本升级,请在开始升级过程之前将副本升级为独立实例。这样可以减少升级时的停机时间,并有准确估计完成升级的时间。
使用大型对象升级适用于 Amazon RDS for PostgreSQL 实例时的停机时间
当您执行主要版本升级时,会扫描数据库中的所有对象。数据库内部对象的数量决定了升级过程的时间。此外,Amazon RDS for PostgreSQL 中的大型对象 (pg_largeobject) 会显著增加升级时的停机时间。
要缩短包含大型对象的实例在升级时的停机时间,请检查您的大型对象以确定是否可以移除大型对象。此外,使用 vacuumlo 实用工具来识别和移除孤立的大型物体。vacuumlo 实用工具可以下载并在本地运行或在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行。有关更多信息,请参阅 PostgreSQL 网站上的 vacuumlo。
相关信息
将 Amazon RDS 升级到 PostgreSQL 主要和次要版本时的最佳实践
升级数据库实例引擎版本