如何计算 RDS for PostgreSQL 实例进行主要版本升级时的停机时间?

1 分钟阅读
0

我想计算我的 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 实例进行主要版本升级时的停机时间。

简短描述

当您为 PostgreSQL 数据库实例执行 Amazon RDS 主要版本升级时,会发生以下情况:

  1. 为备份和回滚拍摄升级前的快照。
  2. 实例会关闭以准备升级。
  3. pg_upgrade 实用程序用于在实例上运行升级作业。
  4. 拍摄升级后的快照,并在实例上重新配置网络。

由于主要版本升级涉及对内部数据存储格式的更改,因此您可能会遇到停机情况,且无法估计完成时间。升级前的备份基于增量更改、pg_upgrade 数据库大小、数据库和数据库对象(如表)的数量。

解决方法

要在执行实例主要版本升级之前计算停机时间,请测试一个模拟当前实例设置和数据的单独实例。要测试单独的实例,请完成以下步骤:

**注意:**以下步骤可以估算主要版本升级过程和升级所需的时间。

  1. 创建当前数据库实例的手动快照
    **注意:**创建手动快照后,让您的实例完成延迟加载或完成实例的预热。
  2. 要创建测试实例,请还原快照。确保测试实例的配置与您的生产实例完全相同,以便准确估算停机时间。
  3. 将测试实例升级到所需版本。
  4. 要刷新 pg_statistic 表,请运行 ANALYZE(分析)。
  5. 比较结果,然后选择进行生产升级。

使用只读副本升级 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 主要和次要版本时的最佳实践

升级数据库实例引擎版本

AWS 官方
AWS 官方已更新 3 个月前