

# Amazon RDS 的参数组
<a name="USER_WorkingWithParamGroups"></a>

*数据库参数*指定数据库的配置方式。例如，数据库参数可以指定要分配给数据库的资源量（如内存）。

您可以通过将数据库实例和多可用区 数据库集群与参数组进行关联来管理数据库配置。Amazon RDS 使用默认设置定义参数组。您还可以使用自定义设置定义您自己的参数组。

**注意**  
某些数据库引擎提供了附加功能，您可以将这些功能作为选项组中的选项添加到数据库中。有关选项组的信息，请参阅[使用选项组](USER_WorkingWithOptionGroups.md)。

**Topics**
+ [参数组概述](parameter-groups-overview.md)
+ [Amazon RDS 数据库实例的数据库参数组](USER_WorkingWithDBInstanceParamGroups.md)
+ [使用多可用区数据库集群的数据库集群参数组](USER_WorkingWithDBClusterParamGroups.md)
+ [比较数据库参数组](USER_WorkingWithParamGroups.Comparing.md)
+ [指定数据库参数](USER_ParamValuesRef.md)

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

*数据库参数组*就像是引擎配置值的容器，这些值应用于一个或多个数据库实例。

*数据库集群参数组*仅适用于多可用区数据库集群。在多可用区数据库集群中，数据库集群参数组中的设置应用于集群中的所有数据库实例。数据库引擎和数据库引擎版本的原定设置数据库参数组用于数据库集群中的每个数据库实例。

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

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

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

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

1. 创建新参数组。

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

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

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

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

如果您更新了数据库参数组内的参数，更改将应用于与该参数组关联的所有数据库实例。同样，如果您更新了多可用区数据库参数组内的参数，更改将应用于与该数据库集群参数组关联的所有 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-instance"></a>

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

有关使用 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.maz"></a>

数据库集群参数是静态的，也可以是动态的。它们在以下方面有所不同：
+ 更改静态参数并保存数据库集群参数组时，参数更改将在手动重启关联数据库集群后生效。对于静态参数，控制台始终将 `pending-reboot` 用于 `ApplyMethod`。
+ 当您更改动态参数时，原定设置情况下，参数更改将立即生效，而无需重启。当您使用 AWS 管理控制台 更改数据库集群参数值时，对于动态参数，它始终使用 `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)。

## 字符集参数
<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 RDS 中查看数据库参数组的参数值](USER_WorkingWithParamGroups.Viewing.md)和[查看数据库集群参数组的参数值](USER_WorkingWithParamGroups.ViewingCluster.md)。

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

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

# Amazon RDS 数据库实例的数据库参数组
<a name="USER_WorkingWithDBInstanceParamGroups"></a>

数据库实例使用数据库参数组。以下各节介绍配置和管理数据库实例参数组。

**Topics**
+ [在 Amazon RDS 中创建数据库参数组](USER_WorkingWithParamGroups.Creating.md)
+ [在 Amazon RDS 中将数据库参数组与数据库实例关联](USER_WorkingWithParamGroups.Associating.md)
+ [在 Amazon RDS 中修改数据库参数组中的参数](USER_WorkingWithParamGroups.Modifying.md)
+ [在 Amazon RDS 中将数据库参数组中的参数重置为其默认值](USER_WorkingWithParamGroups.Resetting.md)
+ [在 Amazon RDS 中复制数据库参数组](USER_WorkingWithParamGroups.Copying.md)
+ [在 Amazon RDS 中列出数据库参数组](USER_WorkingWithParamGroups.Listing.md)
+ [在 Amazon RDS 中查看数据库参数组的参数值](USER_WorkingWithParamGroups.Viewing.md)
+ [在 Amazon RDS 中删除数据库参数组](USER_WorkingWithParamGroups.Deleting.md)

# 在 Amazon RDS 中创建数据库参数组
<a name="USER_WorkingWithParamGroups.Creating"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 创建新数据库参数组。

以下限制适用于数据库参数组名称：
+ 名称必须为 1 到 255 个字母、数字或连字符。

  原定设置参数组名称可以包含句点，例如 `default.mysql8.0`。但是，自定义参数组名称不能包含句点。
+ 第一个字符必须是字母。
+ 名称不能以连字符结束，也不能包含两个连续的连字符。

## 控制台
<a name="USER_WorkingWithParamGroups.Creating.CON"></a>

**创建数据库参数组**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 选择**创建参数组**。

1. 对于**参数组名称**，请输入新数据库参数组的名称。

1. 对于**描述**，请输入对新数据库参数组的描述。

1. 对于**引擎类型**，请选择所需的数据库引擎。

1. 对于**参数组系列**，请选择一个数据库参数组系列。

1. 对于**类型**，如果适用，请选择**数据库参数组**。

1. 选择**创建**。

## AWS CLI
<a name="USER_WorkingWithParamGroups.Creating.CLI"></a>

要创建数据库参数组，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) 命令。以下示例为 8.0 版 MySQL 创建名为 *mydbparametergroup* 的数据库参数组，其说明为*我的新参数组*。

包括以下必需参数：
+ `--db-parameter-group-name`
+ `--db-parameter-group-family`
+ `--description`

要列出所有可用的参数组系列，请使用以下命令：

```
aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"
```

**注意**  
输出包含重复项。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds create-db-parameter-group \
    --db-parameter-group-name mydbparametergroup \
    --db-parameter-group-family MySQL8.0 \
    --description "My new parameter group"
```
对于：Windows  

```
aws rds create-db-parameter-group ^
    --db-parameter-group-name mydbparametergroup ^
    --db-parameter-group-family MySQL8.0 ^
    --description "My new parameter group"
```
此命令生成类似于下述信息的输出：  

```
DBPARAMETERGROUP  mydbparametergroup  mysql8.0  My new parameter group
```

## RDS API
<a name="USER_WorkingWithParamGroups.Creating.API"></a>

要创建数据库参数组，请使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBParameterGroup.html) 操作。

包括以下必需参数：
+ `DBParameterGroupName`
+ `DBParameterGroupFamily`
+ `Description`

# 在 Amazon RDS 中将数据库参数组与数据库实例关联
<a name="USER_WorkingWithParamGroups.Associating"></a>

您可以使用自定义设置创建自己的数据库参数组。之后可以使用 AWS 管理控制台、AWS CLI 或 RDS API 关联数据库参数组与数据库实例。在创建或修改数据库实例时可以执行此操作。

有关创建数据库参数组的信息，请参阅[在 Amazon RDS 中创建数据库参数组](USER_WorkingWithParamGroups.Creating.md)。有关创建数据库实例的信息，请参阅。[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)有关修改数据库实例的信息，请参阅。[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)

**注意**  
将新数据库参数组与数据库实例关联时，修改后的静态和动态参数仅在数据库实例重新启动后得到应用。但是，如果在将数据库参数组与数据库实例关联之后修改数据库参数组中的动态参数，这些更改将立即得到应用，而无需重启。

## 控制台
<a name="USER_WorkingWithParamGroups.Associating.CON"></a>

**关联数据库参数组与数据库实例**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**数据库**，然后选择要修改的数据库实例。

1. 选择**修改**。将显示**修改数据库实例**页面。

1. 更改**数据库参数组**设置。

1. 选择**继续**，查看修改摘要。

1. （可选）选择**立即应用**以立即应用更改。选择此选项在某些情况下可能导致中断。有关更多信息，请参阅。[使用计划修改设置](USER_ModifyInstance.ApplyImmediately.md)

1. 在确认页面上，检查您的更改。如果更改正确无误，请选择 **Modify DB Instance（修改数据库实例）**保存更改。

   也可以选择 **Back (返回)** 编辑您的更改，或选择 **Cancel (取消)** 取消更改。

## AWS CLI
<a name="USER_WorkingWithParamGroups.Associating.CLI"></a>

要关联数据库参数组与数据库实例，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令及以下选项：
+ `--db-instance-identifier`
+ `--db-parameter-group-name`

以下示例关联了 `mydbpg` 数据库参数组与 `database-1` 数据库实例。使用 `--apply-immediately` 可立即应用更改。使用 `--no-apply-immediately` 可在下一维护时段内应用更改。有关更多信息，请参阅。[使用计划修改设置](USER_ModifyInstance.ApplyImmediately.md)

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier database-1 \
    --db-parameter-group-name mydbpg \
    --apply-immediately
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier database-1 ^
    --db-parameter-group-name mydbpg ^
    --apply-immediately
```

## RDS API
<a name="USER_WorkingWithParamGroups.Associating.API"></a>

要关联数据库参数组与数据库实例，请使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作及以下参数：
+ `DBInstanceName`
+ `DBParameterGroupName`

# 在 Amazon RDS 中修改数据库参数组中的参数
<a name="USER_WorkingWithParamGroups.Modifying"></a>

您可以修改客户创建的数据库参数组中的参数值，但不能更改默认数据库参数组中的参数值。对客户创建的数据库参数组中的参数所做的更改将应用于与此数据库参数组关联的所有数据库实例。

参数有两种类型：动态参数和静态参数。对动态参数的更改将立即应用于数据库实例，而无需重新启动。而对静态参数进行的更改，只有在重新启动数据库实例之后，才会应用。

RDS 控制台在 **Configuration (配置)** 选项卡上显示与数据库实例关联的数据库参数组的状态。例如，如果数据库实例未使用对其关联的数据库参数组所做的最新更改，则 RDS 控制台将显示状态为 **pending-reboot** 的数据库参数组。要向该数据库实例应用最新的参数更改，请手动重启数据库实例。

![\[参数更改等待重启方案\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/param-reboot.png)


## 控制台
<a name="USER_WorkingWithParamGroups.Modifying.CON"></a>

**修改数据库参数组中的参数**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 在此列表中，选择要修改的参数组的名称。

1. 对于 **Parameter group actions (参数组操作)**，选择 **Edit (编辑)**。

1. 更改要修改的参数的值。您可使用对话框右上方的箭头键滚动参数。

   您无法更改默认参数组中的值。

1. 选择**保存更改**。

## AWS CLI
<a name="USER_WorkingWithParamGroups.Modifying.CLI"></a>

要修改数据库参数组，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) 命令及以下必需选项：
+ `--db-parameter-group-name`
+ `--parameters`

以下示例修改了名为 *mydbparametergroup* 的数据库参数组的 ` max_connections` 和 `max_allowed_packet` 值。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-parameter-group \
    --db-parameter-group-name mydbparametergroup \
    --parameters "ParameterName=max_connections,ParameterValue=250,ApplyMethod=immediate" \
                 "ParameterName=max_allowed_packet,ParameterValue=1024,ApplyMethod=immediate"
```
对于：Windows  

```
aws rds modify-db-parameter-group ^
    --db-parameter-group-name mydbparametergroup ^
    --parameters "ParameterName=max_connections,ParameterValue=250,ApplyMethod=immediate" ^
                 "ParameterName=max_allowed_packet,ParameterValue=1024,ApplyMethod=immediate"
```
该命令产生类似下面的输出：  

```
DBPARAMETERGROUP  mydbparametergroup
```

## RDS API
<a name="USER_WorkingWithParamGroups.Modifying.API"></a>

要修改数据库参数组，请使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html) 操作及以下必要参数：
+ `DBParameterGroupName`
+ `Parameters`

# 在 Amazon RDS 中将数据库参数组中的参数重置为其默认值
<a name="USER_WorkingWithParamGroups.Resetting"></a>

您可以将客户创建的数据库参数组中的参数值重置为默认值。对客户创建的数据库参数组中的参数所做的更改将应用于与此数据库参数组关联的所有数据库实例。

使用控制台时，可以将特定参数重置为其默认值。但是，您无法轻松地一次性重置数据库参数组中的所有参数。使用 AWS CLI 或 RDS API 时，可以将特定参数重置为其默认值。您还可以一次性重置数据库参数组中的所有参数。

对某些参数的更改将立即应用于数据库实例，而无需重新启动。而对其他一些参数进行的更改，只有在重新启动数据库实例之后，才会应用。RDS 控制台在 **Configuration (配置)** 选项卡上显示与数据库实例关联的数据库参数组的状态。例如，假设数据库实例未使用对其关联的数据库参数组所做的最新更改。如果是这样，RDS 控制台将显示状态为 **pending-reboot**（待重启）的数据库参数组。要向该数据库实例应用最新的参数更改，请手动重启数据库实例。

![\[参数更改等待重启方案\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/param-reboot.png)


**注意**  
在默认数据库参数组中，参数始终设置为默认值。

## 控制台
<a name="USER_WorkingWithParamGroups.Resetting.CON"></a>

**将数据库参数组中的参数重置为默认值的方法**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 在列表中，选择参数组。

1. 对于 **Parameter group actions (参数组操作)**，选择 **Edit (编辑)**。

1. 选择要重置为默认值的参数。您可使用对话框右上方的箭头键滚动参数。

   您无法重置默认参数组中的值。

1. 选择**重置**，然后通过选择**重置参数**进行确认。

## AWS CLI
<a name="USER_WorkingWithParamGroups.Resetting.CLI"></a>

要重置数据库参数组中的部分或所有参数，请使用带以下必需选项的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/reset-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/reset-db-parameter-group.html) 命令：`--db-parameter-group-name`。

要重置数据库参数组中的所有参数，请指定 `--reset-all-parameters` 选项。要重置特定参数，请指定 `--parameters` 选项。

以下示例将名为 *mydbparametergroup* 的数据库参数组中的所有参数重置为其默认值。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds reset-db-parameter-group \
    --db-parameter-group-name mydbparametergroup \
    --reset-all-parameters
```
对于：Windows  

```
aws rds reset-db-parameter-group ^
    --db-parameter-group-name mydbparametergroup ^
    --reset-all-parameters
```

以下示例展示了在名为 *mydbparametergroup* 的数据库参数组中将 `max_connections` 和 `max_allowed_packet` 选项重置为各自的默认值。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds reset-db-parameter-group \
    --db-parameter-group-name mydbparametergroup \
    --parameters "ParameterName=max_connections,ApplyMethod=immediate" \
                 "ParameterName=max_allowed_packet,ApplyMethod=immediate"
```
对于：Windows  

```
aws rds reset-db-parameter-group ^
    --db-parameter-group-name mydbparametergroup ^
    --parameters "ParameterName=max_connections,ApplyMethod=immediate" ^
                 "ParameterName=max_allowed_packet,ApplyMethod=immediate"
```
该命令产生类似下面的输出：  

```
DBParameterGroupName  mydbparametergroup
```

## RDS API
<a name="USER_WorkingWithParamGroups.Resetting.API"></a>

要将数据库参数组中的参数重置为默认值，请使用带以下必需参数的 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ResetDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ResetDBParameterGroup.html) 命令：`DBParameterGroupName`。

要重置数据库参数组中的所有参数，请将 `ResetAllParameters` 参数设置为 `true`。要重置特定参数，请指定 `Parameters` 参数。

# 在 Amazon RDS 中复制数据库参数组
<a name="USER_WorkingWithParamGroups.Copying"></a>

您可以复制您创建的自定义数据库参数组。复制参数组可能是一种方便的解决方案。例如，您创建了一个数据库参数组，并且想在新的数据库参数组中包含其大部分自定义参数和值。您可以使用 AWS 管理控制台复制数据库参数组。还可以使用 AWS CLI [copy-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-parameter-group.html) 命令或 RDS API [CopyDBParameterGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBParameterGroup.html) 操作。

复制数据库参数组之后，请至少等待 5 分钟，再创建使用该数据库参数组作为默认参数组的第一个数据库实例。这样，在使用参数组前，Amazon RDS 可以完成全部复制操作。这对于在为数据库实例创建默认数据库时十分关键的参数非常重要。示例如 `character_set_database` 参数定义的默认数据库的字符集。请使用 [Amazon RDS 控制台](https://console.aws.amazon.com/rds/)的**参数组**选项或使用 [describe-db-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) 命令来验证是否已创建数据库参数组。

**注意**  
您无法复制默认参数组。不过，您可以创建基于默认参数组的新参数组。  
您无法将数据库参数组复制到其他 AWS 账户或 AWS 区域。

## 控制台
<a name="USER_WorkingWithParamGroups.Copying.CON"></a>

**复制数据库参数组**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 在列表中，选择要复制的自定义参数组。

1. 对于 **Parameter group actions (参数组操作)**，选择 **Copy (复制)**。

1. 在 **New DB parameter group identifier (新数据库参数组标识符)** 中，输入新参数组的名称。

1. 在 **Description (描述)** 中，输入新参数组的描述。

1. 选择 **Copy (复制)**。

## AWS CLI
<a name="USER_WorkingWithParamGroups.Copying.CLI"></a>

要复制数据库参数组，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-parameter-group.html) 命令及以下必要选项：
+ `--source-db-parameter-group-identifier`
+ `--target-db-parameter-group-identifier`
+ `--target-db-parameter-group-description`

以下示例创建一个名为 `mygroup2` 的新数据库参数组，它是数据库参数组 `mygroup1` 的副本。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-parameter-group \
    --source-db-parameter-group-identifier mygroup1 \
    --target-db-parameter-group-identifier mygroup2 \
    --target-db-parameter-group-description "DB parameter group 2"
```
对于：Windows  

```
aws rds copy-db-parameter-group ^
    --source-db-parameter-group-identifier mygroup1 ^
    --target-db-parameter-group-identifier mygroup2 ^
    --target-db-parameter-group-description "DB parameter group 2"
```

## RDS API
<a name="USER_WorkingWithParamGroups.Copying.API"></a>

要复制数据库参数组，请将 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBParameterGroup.html) 操作与下列必需参数配合使用：
+ `SourceDBParameterGroupIdentifier`
+ `TargetDBParameterGroupIdentifier`
+ `TargetDBParameterGroupDescription`

# 在 Amazon RDS 中列出数据库参数组
<a name="USER_WorkingWithParamGroups.Listing"></a>

您可以列出为AWS 账户创建的数据库参数组。

**注意**  
当您为特定数据库引擎和版本创建数据库实例时，将自动从默认参数模板创建默认参数组。这些默认参数组包含首选参数设置，并且无法修改。当您创建自定义参数组时，可以修改参数设置。

## 控制台
<a name="USER_WorkingWithParamGroups.Listing.CON"></a>

**列出 AWS 账户的所有数据库参数组**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

   数据库参数组将显示在列表中。

## AWS CLI
<a name="USER_WorkingWithParamGroups.Listing.CLI"></a>

要列出 AWS 账户的所有数据库参数组，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameter-groups.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameter-groups.html) 命令。

**Example**  
下例列出了 AWS 账户的所有可用数据库参数组。  

```
aws rds describe-db-parameter-groups
```
此命令会返回类似以下内容的响应：  

```
DBPARAMETERGROUP  default.mysql8.0     mysql8.0  Default parameter group for MySQL8.0
DBPARAMETERGROUP  mydbparametergroup   mysql8.0  My new parameter group
```
以下示例描述了 *mydbparamgroup1* 参数组。  
对于 Linux、macOS 或 Unix：  

```
aws rds describe-db-parameter-groups \
    --db-parameter-group-name mydbparamgroup1
```
对于：Windows  

```
aws rds describe-db-parameter-groups ^
    --db-parameter-group-name mydbparamgroup1
```
此命令会返回类似以下内容的响应：  

```
DBPARAMETERGROUP  mydbparametergroup1  mysql8.0  My new parameter group
```

## RDS API
<a name="USER_WorkingWithParamGroups.Listing.API"></a>

要列出 AWS 账户的所有数据库参数组，请使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameterGroups.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameterGroups.html) 操作。

# 在 Amazon RDS 中查看数据库参数组的参数值
<a name="USER_WorkingWithParamGroups.Viewing"></a>

您可获得数据库参数组内所有参数的列表及它们的值。

## 控制台
<a name="USER_WorkingWithParamGroups.Viewing.CON"></a>

**查看数据库参数组的参数值**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

   数据库参数组将显示在列表中。

1. 选择参数组名称以查看其参数列表。

## AWS CLI
<a name="USER_WorkingWithParamGroups.Viewing.CLI"></a>

要查看数据库参数组的参数值，请使用带下列必需参数的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) 命令。
+ `--db-parameter-group-name`

**Example**  
以下示例列出名为 *mydbparametergroup* 的数据库参数组的参数和参数值。  

```
aws rds describe-db-parameters --db-parameter-group-name mydbparametergroup
```
此命令会返回类似以下内容的响应：  

```
DBPARAMETER  Parameter Name            Parameter Value  Source           Data Type  Apply Type  Is Modifiable
DBPARAMETER  allow-suspicious-udfs                      engine-default   boolean    static      false
DBPARAMETER  auto_increment_increment                   engine-default   integer    dynamic     true
DBPARAMETER  auto_increment_offset                      engine-default   integer    dynamic     true
DBPARAMETER  binlog_cache_size         32768            system           integer    dynamic     true
DBPARAMETER  socket                    /tmp/mysql.sock  system           string     static      false
```

## RDS API
<a name="USER_WorkingWithParamGroups.Viewing.API"></a>

要查看数据库参数组的参数值，请使用带下列所需参数的 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html) 命令。
+ `DBParameterGroupName`

# 在 Amazon RDS 中删除数据库参数组
<a name="USER_WorkingWithParamGroups.Deleting"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 删除数据库参数组。仅当参数组未与数据库实例关联时，才能将其删除。

## 控制台
<a name="USER_WorkingWithParamGroups.Deleting.CON"></a>

**删除数据库参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

   数据库参数组将显示在列表中。

1. 选择要删除的参数组的名称。

1. 选择**操作**，然后选择**删除**。

1. 查看参数组名称，然后选择**删除**。

## AWS CLI
<a name="USER_WorkingWithParamGroups.Deleting.CLI"></a>

要删除数据库参数组，请使用带以下必需参数的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-parameter-group.html) 命令。
+ `--db-parameter-group-name`

**Example**  
以下示例删除一个名为 *mydbparametergroup* 的数据库参数组。  

```
aws rds delete-db-parameter-group --db-parameter-group-name mydbparametergroup
```

## RDS API
<a name="USER_WorkingWithParamGroups.Deleting.API"></a>

要删除数据库参数组，请使用带以下必需参数的 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBParameterGroup.html) 命令。
+ `DBParameterGroupName`

# 使用多可用区数据库集群的数据库集群参数组
<a name="USER_WorkingWithDBClusterParamGroups"></a>

多可用区数据库集群使用数据库集群参数组。以下各节介绍配置和管理数据库集群参数组。

**Topics**
+ [创建数据库集群参数组](USER_WorkingWithParamGroups.CreatingCluster.md)
+ [修改数据库集群参数组中的参数](USER_WorkingWithParamGroups.ModifyingCluster.md)
+ [重置数据库集群参数组中的参数](USER_WorkingWithParamGroups.ResettingCluster.md)
+ [复制数据库集群参数组](USER_WorkingWithParamGroups.CopyingCluster.md)
+ [列出数据库集群参数组](USER_WorkingWithParamGroups.ListingCluster.md)
+ [查看数据库集群参数组的参数值](USER_WorkingWithParamGroups.ViewingCluster.md)
+ [删除数据库集群参数组](USER_WorkingWithParamGroups.DeletingCluster.md)

# 创建数据库集群参数组
<a name="USER_WorkingWithParamGroups.CreatingCluster"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 创建新数据库集群参数组。

创建数据库集群参数组之后，至少等待 5 分钟，然后创建使用该数据库集群参数组的数据库集群。这样，Amazon RDS 就可以在新数据库集群使用参数组之前完全创建此参数组。您可以使用 [Amazon RDS 控制台](https://console.aws.amazon.com/rds/)的 **Parameter groups**（参数组）页面，或者使用 [describe-db-cluster-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-parameters.html) 命令，以验证是否创建了数据库集群参数组。

以下限制适用于数据库集群参数组名称：
+ 名称必须为 1 到 255 个字母、数字或连字符。

  原定设置参数组名称可以包含句点，例如 `default.mysql5.7`。但是，自定义参数组名称不能包含句点。
+ 第一个字符必须是字母。
+ 名称不能以连字符结束，也不能包含两个连续的连字符。

## 控制台
<a name="USER_WorkingWithParamGroups.CreatingCluster.CON"></a>

**若要创建数据库集群参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 选择**创建参数组**。

1. 对于**参数组名称**，输入新数据库集群参数组的名称。

1. 对于**描述**，输入新数据库集群参数组的描述。

1. 对于**引擎类型**，请选择数据库引擎。

1. 对于**参数组系列**，请选择一个数据库参数组系列。

1. 选择**创建**。

## AWS CLI
<a name="USER_WorkingWithParamGroups.CreatingCluster.CLI"></a>

要创建数据库集群参数组，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster-parameter-group.html) 命令。

以下示例为 RDS for MySQL 版本 8.0 创建名为 *mydbclusterparametergroup* 的数据库集群参数组，其说明为“*我的新集群参数组*”。

包括以下必需参数：
+ `--db-cluster-parameter-group-name`
+ `--db-parameter-group-family`
+ `--description`

要列出所有可用的参数组系列，请使用以下命令：

```
aws rds describe-db-engine-versions --query "DBEngineVersions[].DBParameterGroupFamily"
```

**注意**  
输出包含重复项。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds create-db-cluster-parameter-group \
    --db-cluster-parameter-group-name mydbclusterparametergroup \
    --db-parameter-group-family mysql8.0 \
    --description "My new cluster parameter group"
```
对于：Windows  

```
aws rds create-db-cluster-parameter-group ^
    --db-cluster-parameter-group-name mydbclusterparametergroup ^
    --db-parameter-group-family mysql8.0 ^
    --description "My new cluster parameter group"
```
此命令生成类似于下述信息的输出：  

```
{
    "DBClusterParameterGroup": {
        "DBClusterParameterGroupName": "mydbclusterparametergroup",
        "DBParameterGroupFamily": "mysql8.0",
        "Description": "My new cluster parameter group",
        "DBClusterParameterGroupArn": "arn:aws:rds:us-east-1:123456789012:cluster-pg:mydbclusterparametergroup2"
    }
}
```

## RDS API
<a name="USER_WorkingWithParamGroups.CreatingCluster.API"></a>

要创建数据库集群参数组，请使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBClusterParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBClusterParameterGroup.html) 操作。

包括以下必需参数：
+ `DBClusterParameterGroupName`
+ `DBParameterGroupFamily`
+ `Description`

# 修改数据库集群参数组中的参数
<a name="USER_WorkingWithParamGroups.ModifyingCluster"></a>

您可以修改客户创建的数据库集群参数组中的参数值。您无法更改默认数据库集群参数组中的参数值。对客户创建的数据库集群参数组中的参数所做的更改将应用于与此数据库集群参数组关联的所有数据库集群。

## 控制台
<a name="USER_WorkingWithParamGroups.ModifyingCluster.CON"></a>

**修改数据库集群参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 在此列表中，选择要修改的参数组。

1. 对于 **Parameter group actions (参数组操作)**，选择 **Edit (编辑)**。

1. 更改要修改的参数的值。您可使用对话框右上方的箭头键滚动参数。

   您无法更改默认参数组中的值。

1. 选择**保存更改**。

1. 重启集群中的以对其应用更改。

   如果您不重启集群，则失效转移操作需要的时间可能比正常情况下更长。

## AWS CLI
<a name="USER_WorkingWithParamGroups.ModifyingCluster.CLI"></a>

要修改数据库集群参数组，请使用带以下必需参数的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) 命令：
+ `--db-cluster-parameter-group-name`
+ `--parameters`

以下示例修改了名为 *mydbclusterparametergroup* 的数据库集群参数组的 `server_audit_logging` 和 `server_audit_logs_upload` 值。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster-parameter-group \
    --db-cluster-parameter-group-name mydbclusterparametergroup \
    --parameters "ParameterName=server_audit_logging,ParameterValue=1,ApplyMethod=immediate" \
                 "ParameterName=server_audit_logs_upload,ParameterValue=1,ApplyMethod=immediate"
```
对于：Windows  

```
aws rds modify-db-cluster-parameter-group ^
    --db-cluster-parameter-group-name mydbclusterparametergroup ^
    --parameters "ParameterName=server_audit_logging,ParameterValue=1,ApplyMethod=immediate" ^
                 "ParameterName=server_audit_logs_upload,ParameterValue=1,ApplyMethod=immediate"
```
该命令产生类似下面的输出：  

```
DBCLUSTERPARAMETERGROUP  mydbclusterparametergroup
```

## RDS API
<a name="USER_WorkingWithParamGroups.ModifyingCluster.API"></a>

要修改数据库集群参数组，请使用带以下必需参数的 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html) 命令：
+ `DBClusterParameterGroupName`
+ `Parameters`

# 重置数据库集群参数组中的参数
<a name="USER_WorkingWithParamGroups.ResettingCluster"></a>

您可以在客户创建的数据库集群参数组中将参数重置为其默认值。对客户创建的数据库集群参数组中的参数所做的更改将应用于与此数据库集群参数组关联的所有数据库集群。

**注意**  
在默认数据库集群参数组中，参数始终设置为默认值。

## 控制台
<a name="USER_WorkingWithParamGroups.ResettingCluster.CON"></a>

**将数据库集群参数组中的参数重置为其默认值**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 在列表中，选择参数组。

1. 对于 **Parameter group actions (参数组操作)**，选择 **Edit (编辑)**。

1. 选择要重置为默认值的参数。您可使用对话框右上方的箭头键滚动参数。

   您无法重置默认参数组中的值。

1. 选择**重置**，然后通过选择**重置参数**进行确认。

1. 重启。

## AWS CLI
<a name="USER_WorkingWithParamGroups.ResettingCluster.CLI"></a>

要将数据库集群参数组中的参数重置为其默认值，请使用带以下必要选项的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/reset-db-cluster-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/reset-db-cluster-parameter-group.html) 命令：`--db-cluster-parameter-group-name`。

要重置数据库集群参数组中的所有参数，请指定 `--reset-all-parameters` 选项。要重置特定参数，请指定 `--parameters` 选项。

以下示例将名为 *mydbparametergroup* 的数据库参数组中的所有参数重置为其默认值。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds reset-db-cluster-parameter-group \
    --db-cluster-parameter-group-name mydbparametergroup \
    --reset-all-parameters
```
对于：Windows  

```
aws rds reset-db-cluster-parameter-group ^
    --db-cluster-parameter-group-name mydbparametergroup ^
    --reset-all-parameters
```

以下示例展示了在名为 *mydbclusterparametergroup* 的数据库集群参数组中将 `server_audit_logging` 和 `server_audit_logs_upload` 重置为其默认值。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds reset-db-cluster-parameter-group \
    --db-cluster-parameter-group-name mydbclusterparametergroup \
    --parameters "ParameterName=server_audit_logging,ApplyMethod=immediate" \
                 "ParameterName=server_audit_logs_upload,ApplyMethod=immediate"
```
对于：Windows  

```
aws rds reset-db-cluster-parameter-group ^
    --db-cluster-parameter-group-name mydbclusterparametergroup ^
    --parameters "ParameterName=server_audit_logging,ParameterValue=1,ApplyMethod=immediate" ^
                 "ParameterName=server_audit_logs_upload,ParameterValue=1,ApplyMethod=immediate"
```
该命令产生类似下面的输出：  

```
DBClusterParameterGroupName  mydbclusterparametergroup
```

## RDS API
<a name="USER_WorkingWithParamGroups.ResettingCluster.API"></a>

要将数据库集群参数组中的参数重置为其默认值，请使用带以下必需参数的 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ResetDBClusterParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ResetDBClusterParameterGroup.html) 命令：`DBClusterParameterGroupName`。

要重置数据库集群参数组中的所有参数，请将 `ResetAllParameters` 参数设置为 `true`。要重置特定参数，请指定 `Parameters` 参数。

# 复制数据库集群参数组
<a name="USER_WorkingWithParamGroups.CopyingCluster"></a>

您可以复制您创建的自定义数据库集群参数组。当您已创建一个数据库集群参数组并且想在新的数据库集群参数组中包含该组中的大部分自定义参数和值时，复制参数组是一个方便的解决方案。您可通过使用 AWS CLI [copy-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-cluster-parameter-group.html) 命令或 RDS API [CopyDBClusterParameterGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBParameterGroup.html) 操作来复制数据库集群参数组。

复制数据库集群参数组之后，至少等待 5 分钟，然后创建使用该数据库集群参数组的数据库集群。这样，Amazon RDS 就可以在新数据库集群使用参数组之前完全复制此参数组。您可以使用 [Amazon RDS 控制台](https://console.aws.amazon.com/rds/)的 **Parameter groups**（参数组）页面，或者使用 [describe-db-cluster-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-parameters.html) 命令，以验证是否创建了数据库集群参数组。

**注意**  
您无法复制默认参数组。不过，您可以创建基于默认参数组的新参数组。  
您无法将数据库集群参数组复制到其他 AWS 账户或 AWS 区域。

## 控制台
<a name="USER_WorkingWithParamGroups.CopyingCluster.CON"></a>

**复制数据库集群参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 在列表中，选择要复制的自定义参数组。

1. 对于 **Parameter group actions (参数组操作)**，选择 **Copy (复制)**。

1. 在 **New DB parameter group identifier (新数据库参数组标识符)** 中，输入新参数组的名称。

1. 在 **Description (描述)** 中，输入新参数组的描述。

1. 选择 **Copy (复制)**。

## AWS CLI
<a name="USER_WorkingWithParamGroups.CopyingCluster.CLI"></a>

要复制数据库集群参数组，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-cluster-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/copy-db-cluster-parameter-group.html) 命令及以下必要参数：
+ `--source-db-cluster-parameter-group-identifier`
+ `--target-db-cluster-parameter-group-identifier`
+ `--target-db-cluster-parameter-group-description`

以下示例创建一个名为 `mygroup2` 的新数据库参集群数组，它是数据库集群参数组 `mygroup1` 的副本。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds copy-db-cluster-parameter-group \
    --source-db-cluster-parameter-group-identifier mygroup1 \
    --target-db-cluster-parameter-group-identifier mygroup2 \
    --target-db-cluster-parameter-group-description "DB parameter group 2"
```
对于：Windows  

```
aws rds copy-db-cluster-parameter-group ^
    --source-db-cluster-parameter-group-identifier mygroup1 ^
    --target-db-cluster-parameter-group-identifier mygroup2 ^
    --target-db-cluster-parameter-group-description "DB parameter group 2"
```

## RDS API
<a name="USER_WorkingWithParamGroups.Copying.API"></a>

要复制数据库集群参数组，请将 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBClusterParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CopyDBClusterParameterGroup.html) 操作与下列必需参数配合使用：
+ `SourceDBClusterParameterGroupIdentifier`
+ `TargetDBClusterParameterGroupIdentifier`
+ `TargetDBClusterParameterGroupDescription`

# 列出数据库集群参数组
<a name="USER_WorkingWithParamGroups.ListingCluster"></a>

您可以列出为 AWS 账户创建的数据库集群参数组。

**注意**  
当您为特定数据库引擎和版本创建数据库集群时，将自动从默认参数模板创建默认参数组。这些默认参数组包含首选参数设置，并且无法修改。当您创建自定义参数组时，可以修改参数设置。

## 控制台
<a name="USER_WorkingWithParamGroups.ListingCluster.CON"></a>

**列出 AWS 账户的所有数据库集群参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

   数据库集群参数组出现在**数据库集群参数组**的**类型**列表中。

## AWS CLI
<a name="USER_WorkingWithParamGroups.ListingCluster.CLI"></a>

要列出 AWS 账户的所有数据库集群参数组，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusterparameter-groups.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusterparameter-groups.html) 命令。

**Example**  
下例列出了 AWS 账户的所有可用数据库集群参数组。  

```
aws rds describe-db-cluster-parameter-groups
```
以下示例描述了 *mydbclusterparametergroup* 参数组。  
对于 Linux、macOS 或 Unix：  

```
aws rds describe-db-cluster-parameter-groups \
    --db-cluster-parameter-group-name mydbclusterparametergroup
```
对于：Windows  

```
aws rds describe-db-cluster-parameter-groups ^
    --db-cluster-parameter-group-name mydbclusterparametergroup
```
此命令会返回类似以下内容的响应：  

```
{
    "DBClusterParameterGroups": [
        {
            "DBClusterParameterGroupName": "mydbclusterparametergroup2",
            "DBParameterGroupFamily": "mysql8.0",
            "Description": "My new cluster parameter group",
            "DBClusterParameterGroupArn": "arn:aws:rds:us-east-1:123456789012:cluster-pg:mydbclusterparametergroup"
        }
    ]
}
```

## RDS API
<a name="USER_WorkingWithParamGroups.ListingCluster.API"></a>

要列出 AWS 账户的所有数据库集群参数组，请使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusterParameterGroups.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusterParameterGroups.html) 操作。

# 查看数据库集群参数组的参数值
<a name="USER_WorkingWithParamGroups.ViewingCluster"></a>

您可获得数据库集群参数组内所有参数的列表及它们的值。

## 控制台
<a name="USER_WorkingWithParamGroups.ViewingCluster.CON"></a>

**查看数据库集群参数组的参数值**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

   数据库集群参数组出现在**数据库集群参数组**的**类型**列表中。

1. 选择数据库集群参数组的名称以查看其参数列表。

## AWS CLI
<a name="USER_WorkingWithParamGroups.ViewingCluster.CLI"></a>

要查看数据库集群参数组的参数值，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-parameters.html) 命令及以下必要参数。
+ `--db-cluster-parameter-group-name`

**Example**  
以下示例以 JSON 格式列出名为 *mydbclusterparametergroup* 的数据库集群参数组的参数和参数值。  
此命令会返回类似以下内容的响应：  

```
aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name mydbclusterparametergroup
```

```
{
    "Parameters": [
        {
            "ParameterName": "activate_all_roles_on_login",
            "ParameterValue": "0",
            "Description": "Automatically set all granted roles as active after the user has authenticated successfully.",
            "Source": "engine-default",
            "ApplyType": "dynamic",
            "DataType": "boolean",
            "AllowedValues": "0,1",
            "IsModifiable": true,
            "ApplyMethod": "pending-reboot",
            "SupportedEngineModes": [
                "provisioned"
            ]
        },
        {
            "ParameterName": "allow-suspicious-udfs",
            "Description": "Controls whether user-defined functions that have only an xxx symbol for the main function can be loaded",
            "Source": "engine-default",
            "ApplyType": "static",
            "DataType": "boolean",
            "AllowedValues": "0,1",
            "IsModifiable": false,
            "ApplyMethod": "pending-reboot",
            "SupportedEngineModes": [
                "provisioned"
            ]
        },
...
```

## RDS API
<a name="USER_WorkingWithParamGroups.ViewingCluster.API"></a>

要查看数据库集群参数组的参数值，请使用带下列所需参数的 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBParameters.html) 命令。
+ `DBClusterParameterGroupName`

在某些情况下，不显示参数的允许值。这些始终是源为数据库引擎原定设置值的参数。

要查看这些参数的值，可以运行以下 SQL 语句：
+ MySQL：

  ```
  -- Show the value of a particular parameter
  mysql$ SHOW VARIABLES LIKE '%parameter_name%';
  
  -- Show the values of all parameters
  mysql$ SHOW VARIABLES;
  ```
+ PostgreSQL：

  ```
  -- Show the value of a particular parameter
  postgresql=> SHOW parameter_name;
  
  -- Show the values of all parameters
  postgresql=> SHOW ALL;
  ```

# 删除数据库集群参数组
<a name="USER_WorkingWithParamGroups.DeletingCluster"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 删除数据库集群参数组。仅当数据库集群参数组未与数据库集群关联时，才能将其删除。

## 控制台
<a name="USER_WorkingWithParamGroups.DeletingCluster.CON"></a>

**删除参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

   参数组显示在列表中。

1. 选择要删除的数据库集群参数组的名称。

1. 选择**操作**，然后选择**删除**。

1. 查看参数组名称，然后选择**删除**。

## AWS CLI
<a name="USER_WorkingWithParamGroups.DeletingCluster.CLI"></a>

要删除数据库集群参数组，请使用带以下必需参数的 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-cluster-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-cluster-parameter-group.html) 命令。
+ `--db-parameter-group-name`

**Example**  
以下示例删除了名为 *mydbparametergroup* 的数据库集群参数组。  

```
aws rds delete-db-cluster-parameter-group --db-parameter-group-name mydbparametergroup
```

## RDS API
<a name="USER_WorkingWithParamGroups.DeletingCluster.API"></a>

要删除数据库集群参数组，请使用带以下必需参数的 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBClusterParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBClusterParameterGroup.html) 命令。
+ `DBParameterGroupName`

# 比较数据库参数组
<a name="USER_WorkingWithParamGroups.Comparing"></a>

您可以使用 AWS 管理控制台查看两个数据库参数组之间的区别。

指定的参数组必须都是数据库参数组，或者必须都是数据库集群参数组。甚至当数据库引擎和版本相同时，也是如此。例如，您无法比较 `aurora-mysql8.0`（Aurora MySQL 版本 3）数据库参数组和 `aurora-mysql8.0` 数据库集群参数组。

您可以比较 Aurora MySQL 和 RDS for MySQL 数据库参数组（即使是不同版本），但您无法不能比较 Aurora PostgreSQL 和 RDS for PostgreSQL 数据库参数组。

**比较两个数据库参数组**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**参数组**。

1. 在此列表中，选择要比较的两个参数组。
**注意**  
要将默认参数组与自定义参数组进行比较，首先请在**默认**选项卡上选择默认参数组，然后在**自定义**选项卡上选择自定义参数组。

1. 从**操作**中选择**比较**。

# 指定数据库参数
<a name="USER_ParamValuesRef"></a>

数据库参数类型包括：
+ 整数
+ Boolean
+ String
+ 长整型
+ Double
+ Timestamp
+ 其他定义的数据类型的对象
+ 整数、布尔值、字符串、long、double、时间戳或对象类型的值的数组

您还可以使用表达式、公式和函数指定整数和布尔参数。

对于 Oracle 引擎，您可以使用 `DBInstanceClassHugePagesDefault` 公式变量指定布尔值数据库参数。请参阅 [数据库参数公式变量](#USER_FormulaVariables)。

对于 PostgreSQL 引擎，您可以使用表达式指定布尔值数据库参数。请参阅 [布尔值数据库参数表达式](#USER_ParamBooleanExpressions)。

**Contents**
+ [数据库参数公式](#USER_ParamFormulas)
  + [数据库参数公式变量](#USER_FormulaVariables)
  + [数据库参数公式运算符](#USER_FormulaOperators)
+ [数据库参数函数](#USER_ParamFunctions)
+ [布尔值数据库参数表达式](#USER_ParamBooleanExpressions)
+ [数据库参数日志表达式](#USER_ParamLogExpressions)
+ [数据库参数值示例](#USER_ParamValueExamples)

## 数据库参数公式
<a name="USER_ParamFormulas"></a>

数据库参数公式是一种可解析为整数值或布尔值的表达式。可以将表达式用大括号括起来：\$1\$1。可以为数据库参数值使用公式，也可以将公式用作数据库参数函数的参数。

**语法**  

```
{FormulaVariable}
{FormulaVariable*Integer}
{FormulaVariable*Integer/Integer}
{FormulaVariable/Integer}
```

### 数据库参数公式变量
<a name="USER_FormulaVariables"></a>

每个公式变量会返回一个整数或布尔值。变量的名称是区分大小写的。

*AllocatedStorage*  
返回一个整数，它表示数据卷的大小（以字节为单位）。

*DBInstanceClassHugePagesDefault*  
返回一个布尔值。当前，仅 Oracle 引擎支持它。  
有关更多信息，请参阅“[为 RDS for Oracle 实例开启大页](Oracle.Concepts.HugePages.md)”。

*DBInstanceClassMemory*  
该变量会返回一个整数，表示数据库进程可用的内存字节数。这个数字是以数据库实例类的内存总量开始在内部计算得出的。从此处，计算结果将减去为操作系统以及管理实例的 RDS 进程预留的内存。因此，该数字总是略低于 [数据库实例类](Concepts.DBInstanceClass.md) 中实例类表所示的内存数字。确切的值取决于多种因素的组合。其中包括实例类、数据库引擎，以及其适用于 RDS 实例还是适用于属于 Aurora 集群一部分的实例。

*DBInstanceVCPU*  
返回一个整数，它表示 Amazon RDS 用于管理实例的虚拟中央处理器 (vCPU) 的数量。

*EndPointPort*  
返回一个整数，它表示连接到数据库实例时使用的端口。

*TrueIfReplica*  
如果数据库实例是只读副本，返回 `1`，如果不是只读副本，则返回 `0`。这是 MySQL 中 `read_only` 参数的默认值。

### 数据库参数公式运算符
<a name="USER_FormulaOperators"></a>

数据库参数公式支持两个运算符：除法和乘法。

*除法运算符：/*  
用除数除以被除数，返回整数型商。商中的小数不四舍五入，直接截断。  
语法  

```
dividend / divisor
```
被除数和除数参数必须是整数型表达式。

*乘法运算符：\$1*  
将表达式乘以表达式，返回表达式的乘积。表达式中的小数不四舍五入，直接截断。  
语法  

```
expression * expression
```
两个表达式必须都是整数型。

## 数据库参数函数
<a name="USER_ParamFunctions"></a>

您可以将数据库参数函数的参数指定为整数或公式。每个函数必须具有至少一个参数。将多个参数指定为逗号分隔的列表。列表不能拥有任何空成员，如 *argument1*、*argument3*。函数名称区分大小写。

*IF*  
返回一个参数。  
当前，只有 Oracle 引擎支持它，并且唯一支持的第一个参数是 `{DBInstanceClassHugePagesDefault}`。有关更多信息，请参阅“[为 RDS for Oracle 实例开启大页](Oracle.Concepts.HugePages.md)”。  
语法  

```
IF(argument1, argument2, argument3)
```
如果第一个参数的计算结果为 true，则返回第二个参数。否则返回第三个参数。

*GREATEST*  
返回整数型或者参数公式列表中最大的值。  
语法  

```
GREATEST(argument1, argument2,...argumentn)
```
返回整数。

*LEAST*  
返回整数型或者参数公式列表中最小的值。  
语法  

```
LEAST(argument1, argument2,...argumentn)
```
返回整数。

*SUM*  
添加指定整数型或者参数公式的值。  
语法  

```
SUM(argument1, argument2,...argumentn)
```
返回整数。

## 布尔值数据库参数表达式
<a name="USER_ParamBooleanExpressions"></a>

布尔值数据库参数表达式解析为布尔值 1 或 0。引号中的内容是表达式。

**注意**  
仅 PostgreSQL 引擎支持布尔值数据库参数表达式。

**语法**  

```
"expression operator expression"
```
两个表达式都必须解析为整数。表达式可以是：  
+ 整型常量
+ 数据库参数公式
+ 数据库参数函数
+ 数据库参数变量

布尔值数据库参数表达式支持以下不等式运算符：

*大于运算符：>*  
语法  

```
"expression > expression"
```

*小于运算符：<*  
语法  

```
"expression < expression"
```

* 大于或等于运算符：>=、=>*  
语法  

```
"expression >= expression"
"expression => expression"
```

*小于或等于运算符:<=、=<*  
语法  

```
"expression <= expression"
"expression =< expression"
```

**Example 使用布尔值数据库参数表达式**  
以下布尔数据库参数表达式示例将参数公式的结果与整数进行比较。这样做是为了修改 PostgreSQL 数据库实例的布尔数据库参数 `wal_compression`。参数表达式将 vCPU 的数量与值 2 进行比较。如果 vCPU 的数量大于 2，`wal_compression` 数据库参数则会设置为 true。  

```
aws rds modify-db-parameter-group --db-parameter-group-name group-name \
--parameters "ParameterName=wal_compression,ParameterValue=\"{DBInstanceVCPU} > 2\" "
```

## 数据库参数日志表达式
<a name="USER_ParamLogExpressions"></a>

您可以为日志表达式设置整数数据库参数值。可以将表达式用大括号括起来：\$1\$1。例如：

```
{log(DBInstanceClassMemory/8187281418)*1000}
```

`log` 函数表示日志基数 2。此示例还使用了 `DBInstanceClassMemory` 公式变量。请参阅 [数据库参数公式变量](#USER_FormulaVariables)。

**注意**  
目前，您只能将 MySQL `innodb_log_file_size` 参数指定为一个整数。

## 数据库参数值示例
<a name="USER_ParamValueExamples"></a>

这些示例展示了如何使用公式、函数和表达式来表达数据库参数的值。

**警告**  
在数据库参数组内设置参数不当可能会产生意外的不利影响。可能包括性能下降和系统不稳定。修改数据库参数时应保持谨慎，且修改数据库参数组前要备份数据。将参数组更改应用到生产数据库实例前，请在使用时间点还原创建的测试数据库实例上试用这些参数组更改。

**Example 使用数据库参数函数 GREATEST**  
您可以指定 Oracle 进程参数中的 `GREATEST` 函数。使用它可以将用户进程数设置为 80 或 `DBInstanceClassMemory`/9868951 中的较大值。  

```
GREATEST({DBInstanceClassMemory/9868951},80)
```

**Example 使用数据库参数函数 LEAST**  
您可以指定 MySQL `LEAST` 参数值中的 `max_binlog_cache_size` 函数。使用它将事务可以在 MySQL 实例中使用的最大缓存大小设置为 1 MB 或`DBInstanceClass`/256 中的较小值。  

```
LEAST({DBInstanceClassMemory/256},10485760)
```