如何修复卡在不兼容参数状态的 Amazon RDS 数据库实例?

上次更新日期:2022 年 9 月 2 日

我的 Amazon Relational Database Service (Amazon RDS) 实例卡在不兼容参数状态。我无法连接到实例或修改实例。我只能删除实例或重启。如何修复此问题?

简短描述

Amazon RDS 数据库实例处于 incompatible-parameters(不兼容参数)状态时,表示关联参数组中至少有一个参数设置为与当前引擎版本或数据库实例类不兼容的值。

这可能是由以下原因导致:

  • 数据库实例被扩展为使用可用内存少于之前实例类型的实例类型。关联的参数组中至少有一个内存设置超出了当前数据库实例的可用内存大小。
  • 数据库引擎被升级到其他版本。数据库引擎不再与当前自定义参数组的一个或多个参数设置兼容。

如果您尝试关联不同的参数组、扩展数据库实例类型、更改引擎版本或修改数据库实例配置,则配置可能会失败。数据库实例必须处于 available(可用)状态才能接受新配置。如果数据库实例处于不兼容参数状态,则您只能重启或删除它。

有关如何确定哪些值不兼容的信息,请参阅如何确定哪些 Amazon RDS 数据库参数位于自定义参数组中以及哪些参数位于默认参数组中?

解决方法

Amazon RDS 不直接识别和提供附加到 Amazon RDS 的参数组中导致出现不兼容参数状态的不兼容参数。此状态是终端状态,需要您修复不兼容的参数。要解决此问题,请使用以下选项之一将每个不兼容参数的值更改为兼容值:

  • 将参数组中的所有参数重置为默认值。
  • 重置不兼容的参数值。

注意:与不兼容参数组关联的所有数据库实例都会受这些值更改的影响。若要备份当前参数组设置,请在重置参数之前复制参数组。

要确定问题的根本原因,可以复制不兼容的参数组,然后比较自定义参数值和默认值之间的差异。例如,max_connections 是 system-default 值。如果将具有为 max_connections 参数设置的自定义值的自定义参数组与默认参数组进行比较,则会看到该参数的默认值和自定义值以比较差异。

注意:将自定义参数组与默认参数组进行比较时,您只能看到默认参数组下系统默认参数的默认值。不会显示引擎默认参数的默认值,因为引擎默认参数值特定于 RDS 的引擎版本和配置设置。

您可以使用 AWS CloudTrail 来检查自定义参数组发生的更改。筛选最近 90 天内事件名称ModifyDBParameterGroupModifyDBClusterParameterGroup 的事件。

如要使用 Amazon RDS 控制台创建参数组的副本

  1. 打开 Amazon RDS 控制台,然后从导航窗格中选择参数组
  2. 选择不兼容的参数组,然后选择 参数组操作
  3. 选择复制

使用 Amazon RDS 控制台将参数组中的所有参数重置为默认值

  1. 打开 Amazon RDS 控制台,然后从导航窗格中选择参数组
  2. 选择要重置的参数组。
  3. 选择 Parameter group actions(参数组操作),然后选择重置
  4. 选择重置

使用 Amazon RDS 控制台重置参数值

要避免重置不兼容参数组的所有参数值,您可以选择要更改哪些参数。您可以通过从 Amazon RDS 控制台编辑不兼容参数组来实现此目的。

  1. 打开 Amazon RDS 控制台,然后从导航窗格中选择参数组
  2. 选择不兼容的参数组(或者若要重置所有参数,请选择所有参数)。
  3. 选择 Parameter group actions(参数组操作),然后选择 Edit(编辑)。
  4. 输入有效的参数值,然后选择保存更改
  5. 重启数据库实例而不进行失效转移以应用新设置。
    注意:Amazon RDS 控制台允许您将参数更改为任何相关的允许值。通过 AWS 命令行界面 (AWS CLI) 也可将目标参数重置为其默认值。使用 AWS CLI 将参数值更改为默认参数值以外的值不起作用。

有关与 Amazon RDS 不兼容的 Oracle 参数的更多信息,请参阅管理您的 Oracle 数据库实例为 Oracle 数据库实例使用大页