Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

使用数据库参数组

您可以使用数据库参数组中的参数来管理数据库引擎配置。数据库参数组就像是引擎配置值的容器,这些值可应用于一个或多个数据库实例。

如果您在创建数据库实例时未指定客户创建的数据库参数组,则将创建默认的数据库参数组。该默认组包含数据库引擎默认值和 Amazon RDS 系统默认值,具体根据引擎、计算等级及实例的分配存储空间而定。您无法修改默认数据库参数组的参数设置;您必须创建自己的数据库参数组才能更改参数设置的默认值。请注意,并非所有数据库引擎参数都可在客户创建的数据库参数组中进行更改。

如果您想使用您自己的数据库参数组,只需创建一个新的数据库参数组,修改所需的参数并修改您的数据库实例,就可以使用新的数据库参数组。与特定数据库参数组关联的所有数据库实例都将获得该数据库参数组的所有参数更新。您还可使用 AWS CLI copy-db-parameter-group 命令复制现有参数组。当您已创建一个数据库参数组并且想在新的数据库参数组中包含该组中的大部分自定义参数和值时,复制参数组是一个方便的解决方案。

以下是您在使用数据库参数组中的参数时应了解的几个要点:

  • 当您更改动态参数并保存数据库参数组时,将立即应用更改,而不管“立即应用”设置如何。当您更改静态参数并保存数据库参数组时,参数更改将在您手动重新引导数据库实例后生效。您可通过使用 RDS 控制台或显式调用 RebootDbInstance API 操作来重新引导数据库实例 (没有故障转移,前提是数据库实例处于多可用区部署中)。在静态参数更改后重新引导关联的数据库实例的要求可帮助缓解影响 API 调用的参数误配置的风险,例如调用 ModifyDBInstance 来更改数据库实例类或扩展存储。

  • 当您更改与数据库实例关联的数据库参数组时,必须在数据库实例使用新的数据库参数组之前手动重新引导实例。

  • 可将数据库参数的值指定为整数或通过公式、变量、函数和运算符构建的整数表达式或者指定为对数表达式。有关更多信息,请参阅 数据库参数值

  • 在创建数据库实例以及在数据库实例中创建数据库之前,在参数组中设置与字符集或数据库排序规则相关的任何参数。这将确保数据库实例中的默认数据库以及新数据库使用您指定的字符集和排序规则值。如果您更改数据库实例的字符集或排序规则参数,则参数更改不会应用于现有数据库。

    您可使用 ALTER DATABASE 命令更改现有数据库的字符集或排序规则值,例如:

    ALTER DATABASE database_name CHARACTER SET character_set_name COLLATE collation;
  • 在数据库参数组内设置参数不恰当可能会产生意外的不利影响,包括性能降低和系统不稳定。修改数据库参数时应始终保持谨慎,且修改数据库参数组前要备份数据。将参数组更改应用于生产数据库实例前,您应当在测试数据库实例上试用这些参数组设置更改。

  • Amazon Aurora 同时使用了数据库参数组和数据库群集参数组。数据库参数组中的参数适用于 Aurora 数据库群集中的单个数据库实例。数据库群集参数组中的参数适用于数据库群集中的每个数据库实例。有关更多信息,请参阅 数据库群集和数据库实例参数

创建数据库参数组

以下部分介绍如何创建新的数据库参数组。

AWS 管理控制台

创建数据库参数组

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 单击窗口左侧 Parameter Groups 列表内的 Navigation

  3. 单击 Create DB Parameter Group 按钮。

    此时会显示 Create DB Parameter Group 窗口。

  4. DB Parameter Group Family 下拉列表框中选择一个数据库参数组系列。

  5. DB Parameter Group 文本框内键入新数据库参数组的名称。

  6. Description 文本框内键入新数据库参数组描述。

  7. 单击 Yes, Create 按钮。

CLI

要创建数据库参数组,请使用 AWS CLI create-db-parameter-group 命令。以下示例为 5.6 版 MySQL 创建名为 mydbparametergroup 的数据库参数组,其说明为 My new parameter group

包括以下必需参数:

  • --db-parameter-group-name

  • --db-parameter-group-family

  • --description

针对 Linux、OS X 或 Unix:

aws rds create-db-parameter-group \ --db-parameter-group-name mydbparametergroup \ --db-parameter-group-family MySQL5.6 \ --description "My new parameter group"

对于 Windows:

aws rds create-db-parameter-group ^ --db-parameter-group-name mydbparametergroup ^ --db-parameter-group-family MySQL5.6 ^ --description "My new parameter group"

此命令生成类似于下述信息的输出:

DBPARAMETERGROUP mydbparametergroup mysql5.6 My new parameter group

API

要创建数据库参数组,请使用 Amazon RDS API CreateDBParameterGroup 操作。以下示例为 5.6 版 MySQL 创建名为 mydbparametergroup 的数据库参数组,其说明为 My new parameter group

包括以下必需参数:

  • DBParameterGroupName = mydbparametergroup

  • DBParameterGroupFamily = MySQL5.6

  • Description = My new parameter group

https://rds.amazonaws.com/ ?Action=CreateDBParameterGroup &DBParameterGroupName=mydbparametergroup &Description=My%20new%20parameter%20group &DBParameterGroupFamily=MySQL5.6 &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-15T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

此命令会返回类似以下内容的响应:

<CreateDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/2012-01-15/"> <CreateDBParameterGroupResult> <DBParameterGroup> <DBParameterGroupFamily>mysql5.6</DBParameterGroupFamily> <Description>My new parameter group</Description> <DBParameterGroupName>mydbparametergroup</DBParameterGroupName> </DBParameterGroup> </CreateDBParameterGroupResult> <ResponseMetadata> <RequestId>700a8afe-0b81-11df-85f9-eb5c71b54ddc</RequestId> </ResponseMetadata> </CreateDBParameterGroupResponse>

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

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

如果您更改一个参数值,则所做更改的应用时间将由该参数的类型决定。对动态参数所做的更改将立即应用。对静态参数所做的更改需要在重新引导与数据库参数组关联的数据库实例后才生效。若要确定参数的类型,请使用列出数据库参数组部分中显示的过程之一来列出参数组中的参数。

RDS 控制台显示与数据库实例关联的数据库参数组的状态。例如,如果数据库实例未使用对其关联的数据库参数组所做的最新更改,则 RDS 控制台将显示状态为 pending-reboot 的数据库参数组。您将需要手动重新引导数据库实例,以使最新的参数更改对该数据库实例生效。

 参数更改等待重启方案

AWS 管理控制台

修改数据库参数组

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 单击窗口左侧导航窗格中的参数组

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

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

  4. 选择 Edit Parameters

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

    请注意,您无法更改默认参数组内的值。

  6. 单击 Save Changes

CLI

要修改数据库参数组,请使用带下列必需参数的 AWS CLI modify-db-parameter-group 命令:

  • --db-parameter-group-name

  • --parameters

以下示例修改了名为 max_connectionsmydbparametergroupmax_allowed_packet 的数据库参数组的 值。

注意

Amazon RDS 不支持为单一参数传送用逗号分隔的多个参数值。

针对 Linux、OS X 或 Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name mydbparametergroup \ --parameters "ParameterName=max_connections,ParameterValue=250,ApplyMethod=immediate" \ --parameters "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" ^ --parameters "ParameterName=max_allowed_packet,ParameterValue=1024,ApplyMethod=immediate"

该命令产生类似下面的输出:

DBPARAMETERGROUP mydbparametergroup

API

要修改数据库参数组,请使用 Amazon RDS API ModifyDBParameterGroup 命令以及下列必需参数:

  • DBParameterGroupName

  • Parameters

以下示例修改了名为 max_connectionsmydbparametergroupmax_allowed_packet 的数据库参数组的 值。

注意

Amazon RDS 不支持为单一参数传送用逗号分隔的多个参数值。

https://rds.amazonaws.com/ ?Action=ModifyDBParameterGroup &DBParameterGroupName=mydbparametergroup &Parameters.member.1.ParameterName=max_connections &Parameters.member.1.ParameterValue=250 &Parameters.member.1.ApplyMethod=immediate &Parameters.member.2.ParameterName=max_allowed_packet &Parameters.member.2.ParameterValue=1024 &Parameters.member.2.ApplyMethod=immediate &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-15T22%3A29%3A47.865Z

此命令会返回类似以下内容的响应:

<ModifyDBParameterGroupResponse xmlns="http://rds.amazonaws.com/admin/2012-01-15/"> <ModifyDBParameterGroupResult> <DBParameterGroupName>mydbparametergroup</DBParameterGroupName> </ModifyDBParameterGroupResult> <ResponseMetadata> <RequestId>3b824e10-0b87-11df-972f-21e99bc6881d</RequestId> </ResponseMetadata> </ModifyDBParameterGroupResponse>

复制数据库参数组

您可以复制您创建的自定义数据库参数组。当您已创建一个数据库参数组并且想在新的数据库参数组中包含该组中的大部分自定义参数和值时,复制参数组是一个方便的解决方案。您可以使用 AWS CLI copy-db-parameter-group 命令或 Amazon RDS API CopyDBParameterGroup 操作复制数据库参数组。

复制数据库参数组之后,您应至少等待 5 分钟,再创建使用该数据库参数组作为默认参数组的第一个数据库实例。这样,在将参数组用作新数据库实例的默认设置之前,Amazon RDS 可以完成全部复制操作。这对于在为数据库实例创建默认数据库时十分关键的参数 (例如,由 character_set_database 参数定义的默认数据库字符集) 非常重要。您可以使用 Amazon RDS 控制台Parameter Groups 选项或使用 describe-db-parameters 命令来验证是否已创建数据库参数组。

CLI

要复制数据库参数组,请使用带下列必需参数的 AWS CLI copy-db-parameter-group 命令:

  • --source-db-parameter-group-identifier

  • --target-db-parameter-group-identifier

  • --target-db-parameter-group-description

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

针对 Linux、OS X 或 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"

API

要复制数据库参数组,请将 RDS API CopyDBParameterGroup 操作与下列必需参数配合使用:

  • SourceDBPparameterGroupIdentifier = arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Apg%3Amygroup1

  • TargetDBPparameterGroupIdentifier = mygroup2

  • TargetDBPparameterGroupDescription = DB%20parameter%20group%202

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

https://rds.us-east-1.amazonaws.com/ ?Action=CopyDBParameterGroup &SignatureMethod=HmacSHA256 &SignatureVersion=4 &SourceDBParameterGroupIdentifier=arn%3Aaws%3Ards%3Aus-west-2%3A123456789012%3Apg%3Amygroup1 &TargetDBParameterGroupIdentifier=mygroup2 &TargetDBParameterGroupDescription=DB%20parameter%20group%202 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140922/us-east-1/rds/aws4_request &X-Amz-Date=20140922T175351Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=5164017efa99caf850e874a1cb7ef62f3ddd29d0b448b9e0e7c53b288ddffed2

此命令会返回类似以下内容的响应:

<CopyDBParameterGroupResponse xmlns="http://rds.amazonaws.com/doc/2014-10-31/"> <CopyDBParameterGroupResult> <DBParameterGroup> <DBParameterGroupFamily>mysql5.6</DBParameterGroupFamily> <Description>DB parameter group 2</Description> <DBParameterGroupName>mygroup2</DBParameterGroupName> </DBParameterGroup> </CopyDBParameterGroupResult> <ResponseMetadata> <RequestId>3328d60e-beb6-11d3-8e5c-3ccda5460d76</RequestId> </ResponseMetadata> </CopyDBParameterGroupResponse>

列出数据库参数组

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

注意

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

AWS 管理控制台

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

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 单击窗口左侧导航窗格中的参数组

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

CLI

要列出 AWS 账户的所有数据库参数组,请使用 AWS CLI describe-db-parameter-groups 命令。

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

aws rds describe-db-parameter-groups

此命令会返回类似以下内容的响应:

DBPARAMETERGROUP default.mysql5.5 mysql5.5 Default parameter group for MySQL5.5 DBPARAMETERGROUP default.mysql5.6 mysql5.6 Default parameter group for MySQL5.6 DBPARAMETERGROUP mydbparametergroup mysql5.6 My new parameter group

以下示例描述了 mydbparamgroup1 参数组。

针对 Linux、OS X 或 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 mysql5.5 My new parameter group

API

要列出 AWS 账户的所有数据库参数组,请使用 RDS API DescribeDBParameterGroups 操作。

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

https://rds.amazonaws.com/ ?Action=DescribeDBParameterGroups &MaxRecords=100 &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-22T19%3A31%3A42.262Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

此命令会返回类似以下内容的响应:

<DescribeDBParameterGroupsResponse xmlns="http://rds.amazonaws.com/admin/2012-01-15/"> <DescribeDBParameterGroupsResult> <DBParameterGroups> <DBParameterGroup> <Engine>mysql5.6</Engine> <Description>Default parameter group for MySQL5.6</Description> <DBParameterGroupName>default.mysql5.6</DBParameterGroupName> </DBParameterGroup> <DBParameterGroup> <Engine>mysql5.6</Engine> <Description>My new parameter group</Description> <DBParameterGroupName>mydbparametergroup</DBParameterGroupName> </DBParameterGroup> </DBParameterGroups> </DescribeDBParameterGroupsResult> <ResponseMetadata> <RequestId>41731881-0b82-11df-9a9b-c1bd5894571c</RequestId> </ResponseMetadata> </DescribeDBParameterGroupsResponse>

以下示例描述了 mydbparamgroup1 参数组。

https://rds.amazonaws.com/ ?Action=DescribeDBParameterGroups &DBParameterGroupName=mydbparamgroup1 &MaxRecords=100 &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-22T19%3A31%3A42.262Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

此命令会返回类似以下内容的响应:

<DescribeDBParameterGroupsResponse xmlns="http://rds.amazonaws.com/admin/2012-01-15/"> <DescribeDBParameterGroupsResult> <DBParameterGroups> <DBParameterGroup> <Engine>mysql5.6</Engine> <Description>My new parameter group</Description> <DBParameterGroupName>mydbparamgroup1</DBParameterGroupName> </DBParameterGroup> </DBParameterGroups> </DescribeDBParameterGroupsResult> <ResponseMetadata> <RequestId>41731881-0b82-11df-9a9b-c1bd5894571c</RequestId> </ResponseMetadata> </DescribeDBParameterGroupsResponse>

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

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

AWS 管理控制台

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

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 单击窗口左侧导航窗格中的参数组

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

  3. 从列表中选择一个数据库参数组。单击“详细信息”页面图标以查看选定数据库参数组的参数列表。

CLI

要查看数据库参数组的参数值,请使用带下列必需参数的 AWS CLI describe-db-parameters 命令。

  • --db-parameter-group-name

以下示例列出名为 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

API

要查看数据库参数组的参数值,请使用带下列所需参数的 Amazon RDS API DescribeDBParameters 命令。

  • DBParameterGroupName = mydbparametergroup

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

https://rds.amazonaws.com/ ?Action=DescribeDBParameters &DBParameterGroupName=mydbparametergroup &MaxRecords=100 &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-22T19%3A31%3A42.262Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

此命令会返回类似以下内容的响应:

<DescribeDBParametersResponse xmlns="http://rds.amazonaws.com/admin/2012-01-15/"> <DescribeDBParametersResult> <Marker>bWF4X3RtcF90YWJsZXM=</Marker> <Parameters> <Parameter> <DataType>boolean</DataType> <Source>engine-default</Source> <IsModifiable>false</IsModifiable> <Description>Controls whether user-defined functions that have only an xxx symbol for the main function can be loaded</Description> <ApplyType>static</ApplyType> <AllowedValues>0,1</AllowedValues> <ParameterName>allow-suspicious-udfs</ParameterName> </Parameter> <Parameter> <DataType>integer</DataType> <Source>engine-default</Source> <IsModifiable>true</IsModifiable> <Description>Intended for use with master-to-master replication, and can be used to control the operation of AUTO_INCREMENT columns</Description> <ApplyType>dynamic</ApplyType> <AllowedValues>1-65535</AllowedValues> <ParameterName>auto_increment_increment</ParameterName> </Parameter> <Parameter> <DataType>integer</DataType> <Source>engine-default</Source> <IsModifiable>true</IsModifiable> <Description>Determines the starting point for the AUTO_INCREMENT column value</Description> <ApplyType>dynamic</ApplyType> <AllowedValues>1-65535</AllowedValues> <ParameterName>auto_increment_offset</ParameterName> </Parameter> (... sample truncated...) </Parameters> </DescribeDBParametersResult> <ResponseMetadata> <RequestId>99c0937a-0b83-11df-85f9-eb5c71b54ddc</RequestId> </ResponseMetadata> </DescribeDBParametersResponse>

数据库参数值

可将数据库参数的值指定为:

  • 整型常量

  • 数据库参数公式

  • 数据库参数函数

  • 字符串常量

  • 日志表达式 (对数函数表示对数底数 2),例如 value={log(DBInstanceClassMemory/8187281418)*1000}

数据库参数公式

数据库参数公式是一种可解析为整数值的表达式,并使用大括号括起来:{}。公式可以指定给数据库参数值,也可以参数的形式指定给数据库参数函数。

语法

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

数据库参数公式变量

公式变量返回整数型。变量的名称是区分大小写的。

AllocatedStorage

返回数据卷的大小 (计算单位:字节)。

DBInstanceClassMemory

返回分配给与当前数据库实例相关联的数据库实例类的内存字节数,已减去管理实例的 Amazon RDS 进程所占用的内存。

EndPointPort

返回连接数据库实例时使用的端口号。

数据库参数公式运算符

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

除法运算符:/

用除数除以被除数,返回整数型商。商中的小数不四舍五入,直接截断。

语法

dividend / divisor

被除数和除数参数必须是整数型表达式。

乘法运算符:*

用除数除以被除数,返回整数型商。商中的小数不四舍五入,直接截断。

语法

expression * expression

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

数据库参数函数

参数自变量可以指定为整数型或者公式。每个函数必须具有至少一个参数。多个参数可通过用逗号分隔的列表指定。列表不能拥有任何空成员,如 argument1argument3。函数名称区分大小写。

注意

CLI 目前不支持数据库参数函数。

GREATEST()

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

语法

GREATEST(argument1, argument2,...argumentn)

返回整数。

LEAST()

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

语法

LEAST(argument1, argument2,...argumentn)

返回整数。

SUM()

添加指定整数型或者参数公式的值。

语法

SUM(argument1, argument2,...argumentn)

返回整数。

数据库参数值示例

这些示例显示了将公式和函数作为数据库参数值的情况。

警告

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

您可以在 Oracle 过程参数中指定 GREATEST 函数,将用户流程的个数设置为下面两个数中较大的值:即 80 或者 DBInstanceClassMemory 除以 9868951 的商。

GREATEST({DBInstanceClassMemory/9868951},80)

您可以在 MySQL max_binlog_cache_size 参数值中指定 LEAST() 函数,将事务在 MySQL 实例中使用的最大缓存大小设置为下面两个数值中较大的值,即 1MB 或者 DBInstanceClass/256:

LEAST({DBInstanceClassMemory/256},10485760)