

# 参数组概述
<a name="parameter-groups-overview"></a>

*数据库集群参数组*就像是引擎配置值的容器，这些值应用于 Aurora 数据库集群中的每个数据库实例。例如，Aurora 共享存储模型需要 Aurora 集群中的每个数据库实例为参数（如 `innodb_file_per_table`）使用相同设置。因此，影响物理存储布局的参数是集群参数组的一部分。数据库集群参数组还包括所有实例级参数的原定设置值。

*数据库参数组*就像是引擎配置值的容器，这些值应用于一个或多个数据库实例。数据库参数组对于 Amazon RDS 和 Aurora 中的数据库实例均适用。这些配置设置适用于在 Aurora 集群内的数据库实例之间可能不同的属性，如内存缓冲区的大小。



**Topics**
+ [原定设置和自定义参数组](#parameter-groups-overview.custom)
+ [静态和动态数据库集群参数](#parameter-groups-overview.db-cluster)
+ [静态和动态数据库实例参数](#parameter-groups-overview.db-instance)
+ [字符集参数](#parameter-groups-overview.char-sets)
+ [支持的参数和参数值](#parameter-groups-overview.supported)

## 原定设置和自定义参数组
<a name="parameter-groups-overview.custom"></a>

如果创建的数据库实例未指定数据库参数组，数据库实例将使用默认的数据库参数组。同样，如果您在创建 Aurora 数据库集群时未指定数据库集群参数组，数据库集群将使用默认数据库集群参数组。每个默认参数组包含数据库引擎默认值和 Amazon RDS 系统默认值，具体根据引擎、计算等级及实例的分配存储空间而定。

默认参数组的参数设置无法修改。您可以改而执行以下操作：

1. 创建新参数组。

1. 更改所需参数的设置。并非参数组中的所有数据库引擎参数都可供修改。

1. 修改数据库实例或数据库集群以关联新的参数组。

   有关修改数据库集群或数据库实例的信息，请参阅[修改 Amazon Aurora 数据库集群](Aurora.Modifying.md)。
**注意**  
如果您修改了数据库实例以使用自定义参数组，然后启动数据库实例，RDS 会在启动过程中自动重启数据库实例。对于启用了 AlwaysOn 或镜像选项的 RDS for SQL Server 多可用区实例，在启动过程结束后重启实例时，预计会进行失效转移。

仅在重启数据库实例后，RDS 才会在新关联的参数组中应用修改后的静态和动态参数。但是，如果在将数据库参数组与数据库实例关联之后修改数据库参数组中的动态参数，这些更改将立即得到应用，而无需重启。有关更改数据库集群参数组的信息，请参阅。[修改 Amazon Aurora 数据库集群](Aurora.Modifying.md)

如果您更新了数据库参数组内的参数，更改将应用于与该参数组关联的所有数据库实例。同样，如果您更新了 Aurora 数据库参数组内的参数，更改将应用于与该数据库集群参数组关联的所有 Aurora 数据库集群。

如果您不想从头开始创建参数组，您可以使用 AWS CLI [copy-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-parameter-group.html) 命令或 [copy-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-cluster-parameter-group.html) 命令复制现有的参数组。您可能会发现复制参数组在某些情况下很有用。例如，您可能希望在新的参数组中包含现有参数组的大多数自定义参数和值。

## 静态和动态数据库集群参数
<a name="parameter-groups-overview.db-cluster"></a>

数据库集群参数是静态的，也可以是动态的。它们在以下方面有所不同：
+ 更改静态参数并保存数据库集群参数组时，参数更改将在手动重启关联数据库集群中的数据库实例后生效。当您使用 AWS 管理控制台 更改静态数据库集群参数值时，它始终将 `pending-reboot` 用于 `ApplyMethod`。
+ 当您更改动态参数时，原定设置情况下，参数更改将立即生效，而无需重启。当您使用控制台时，它始终将 `immediate` 用于 `ApplyMethod`。要将参数更改推迟到重启关联数据库集群中的数据库实例之后，请使用 AWS CLI 或 RDS API。将 `ApplyMethod` 设置为 `pending-reboot` 以进行参数更改。

有关使用 AWS CLI 更改参数值的更多信息，请参阅 [modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html)。有关使用 RDS API 更改参数值的更多信息，请参阅 [ModifyDBClusterParameterGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html)。

如果您更改与数据库集群关联的数据库集群参数组，则重启数据库集群中的数据库实例。重启会将更改应用于数据库集群中的所有数据库实例。要确定是否必须重启数据库集群的数据库实例才能应用更改，请运行以下 AWS CLI 命令。

`aws rds describe-db-clusters --db-cluster-identifier db_cluster_identifier`

检查 `DBClusterParameterGroupStatus` 输出中主数据库实例的值。如果值为 `pending-reboot`，则重启数据库集群的数据库实例。

## 静态和动态数据库实例参数
<a name="parameter-groups-overview.db-instance"></a>

数据库实例参数是静态的，也可以是动态的。它们在以下方面有所不同：
+ 更改静态参数并保存数据库参数组时，参数更改将在手动重启关联的数据库实例后生效。对于静态参数，控制台始终将 `pending-reboot` 用于 `ApplyMethod`。
+ 当您更改动态参数时，原定设置情况下，参数更改将立即生效，而无需重启。当您使用 AWS 管理控制台 更改数据库实例参数值时，对于动态参数，它始终使用 `immediate` 作为 `ApplyMethod`。要将参数更改推迟到重启关联的数据库实例之后，请使用 AWS CLI 或 RDS API。将 `ApplyMethod` 设置为 `pending-reboot` 以进行参数更改。

有关使用 AWS CLI 更改参数值的更多信息，请参阅 [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html)。有关使用 RDS API 更改参数值的更多信息，请参阅 [ModifyDBParameterGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html)。

如果数据库实例未使用对其关联的数据库参数组所做的最新更改，控制台将针对数据库参数组显示 **pending-reboot**（待重启）状态。此状态不会在下一个维护时段期间导致自动重启。要向该数据库实例应用最新的参数更改，请手动重启数据库实例。

## 字符集参数
<a name="parameter-groups-overview.char-sets"></a>

在创建数据库集群之前，在参数组中设置与数据库的字符集或排序规则相关的任何参数。在其中创建数据库之前也要这样做。这样，您可确保原定设置数据库以及新数据库使用您指定的字符集和排序规则值。如果您更改字符集或排序规则参数，则参数更改不会应用于现有数据库。

对于某些数据库引擎，您可使用 `ALTER DATABASE` 命令更改现有数据库的字符集或排序规则值，例如：

```
ALTER DATABASE database_name CHARACTER SET character_set_name COLLATE collation;
```

有关更改数据库字符集或排序规则值的更多信息，请查阅数据库引擎文档。

## 支持的参数和参数值
<a name="parameter-groups-overview.supported"></a>

要确定数据库引擎支持的参数，请查看数据库实例或数据库集群使用的数据库参数组和数据库集群参数组中的参数。有关更多信息，请参阅[在 Amazon Aurora 中查看数据库参数组的参数值](USER_WorkingWithParamGroups.Viewing.md)和[在 Amazon Aurora 中查看数据库集群参数组的参数值](USER_WorkingWithParamGroups.ViewingCluster.md)。

在许可情况下，您可以使用表达式、公式和函数指定整数和布尔参数值。函数可以包含数学对数表达式。但是，并非所有参数都支持对参数值使用表达式、公式和函数。有关更多信息，请参阅 [指定数据库参数](USER_ParamValuesRef.md)。

对于 Aurora 全局数据库，您可以为各个 Aurora 集群指定不同的配置设置。请确保设置足够相似，以便您在将辅助集群提升到主集群时生成一致的行为。例如，对于跨 Aurora 全局数据库的所有集群的时区和字符集使用相同设置。

在参数组内设置参数不恰当可能会产生意外的不利影响，包括性能降低和系统不稳定。修改数据库参数时应始终保持谨慎，且在修改参数组前备份数据。将参数组更改应用于生产数据库实例或数据库集群前，请在测试数据库实例或数据库集群上尝试进行这些参数组设置更改。