

# 设置和显示二进制日志配置
<a name="mysql-stored-proc-configuring"></a>

以下存储过程设置和显示配置参数，例如用于二进制日志文件保留。

**Topics**
+ [mysql.rds\$1set\$1configuration](#mysql_rds_set_configuration)
+ [mysql.rds\$1show\$1configuration](#mysql_rds_show_configuration)

## mysql.rds\$1set\$1configuration
<a name="mysql_rds_set_configuration"></a>

指定要保留二进制日志的小时数或要延迟复制的秒数。

### 语法
<a name="mysql_rds_set_configuration-syntax"></a>

 

```
CALL mysql.rds_set_configuration(name,value);
```

### 参数
<a name="mysql_rds_set_configuration-parameters"></a>

 *name*   
要设置的配置参数的名称。

 *值*   
配置参数的值。

### 使用说明
<a name="mysql_rds_set_configuration-usage-notes"></a>

`mysql.rds_set_configuration` 过程支持以下配置参数：
+ [二进制日志保留小时数](#mysql_rds_set_configuration-usage-notes.binlog-retention-hours)
+ [源延迟](#mysql_rds_set_configuration-usage-notes.source-delay)
+ [target delay](#mysql_rds_set_configuration-usage-notes.target-delay)

配置参数将永久存储，可在任何数据库实例重启或失效转移后继续使用。

#### 二进制日志保留小时数
<a name="mysql_rds_set_configuration-usage-notes.binlog-retention-hours"></a>

`binlog retention hours` 参数用于指定要保留二进制日志文件的小时数。Amazon RDS 通常会尽快清除一个二进制日志，但对于 RDS 外部的 MySQL 数据库的复制，该二进制日志可能仍是必需的。

`binlog retention hours` 的默认值为 `NULL`。对于 RDS for MySQL，`NULL` 表示不保留二进制日志（0 小时）。

要指定在数据库实例上保留二进制日志的小时数，请使用 `mysql.rds_set_configuration` 存储过程并指定足以让复制发生的时段，如以下示例中所示。

`call mysql.rds_set_configuration('binlog retention hours', 24);`

**注意**  
不能将值 `0` 用于 `binlog retention hours`。

对于 MySQL 数据库实例，最大 `binlog retention hours` 值为 168 个小时 (7 天)。

在设置保留期后，监视数据库实例的存储用量以确认保留的二进制日志不会占用太多存储空间。

对于多可用区数据库集群部署，您只能从写入器数据库实例中配置二进制日志保留，并且该设置会异步传播到所有读取器数据库实例。如果数据库集群上的二进制日志超过本地总存储空间的一半，Amazon RDS 会自动将陈旧的日志移至 EBS 卷。但是，最新的日志仍保留在本地存储中，因此，如果出现需要更换主机的故障，或者您纵向扩展或缩减数据库，这些日志可能会丢失。

#### 源延迟
<a name="mysql_rds_set_configuration-usage-notes.source-delay"></a>

使用只读副本中的 `source delay` 参数指定延迟从读取副本复制到其源数据库实例的秒数。Amazon RDS 通常会尽快复制更改，但您可能希望某些环境延迟复制。例如，在延迟复制后，您可以将延迟只读副本向前滚动到发生灾难之前的时间。如果意外删除一个表，您可以使用延迟的复制快速恢复该表。`target delay` 的默认值为 `0`（不延迟复制）。

当您使用此参数时，它会运行 [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay) 并应用 CHANGE primary TO MASTER\$1DELAY = 输入值。如果成功，该过程将 `source delay` 参数保存到 `mysql.rds_configuration` 表中。

要指定 Amazon RDS 延迟复制到源数据库实例的秒数，请使用 `mysql.rds_set_configuration` 存储过程并指定要延迟复制的秒数。在以下示例中，复制至少延迟一小时（3600 秒）。

`call mysql.rds_set_configuration('source delay', 3600);`

然后，该程序运行 `mysql.rds_set_source_delay(3600)`。

`source delay` 参数的限制为一天（86400 秒）。

#### target delay
<a name="mysql_rds_set_configuration-usage-notes.target-delay"></a>

使用 `target delay` 参数指定在数据库实例与从该实例创建的任何将来的 RDS 托管式只读副本之间延迟复制的秒数。对于非 RDS 托管式只读副本，将忽略此参数。Amazon RDS 通常会尽快复制更改，但您可能希望某些环境延迟复制。例如，在延迟复制后，您可以将延迟只读副本向前滚动到发生灾难之前的时间。如果意外删除一个表，您可以使用延迟复制快速恢复该表。`target delay` 的默认值为 `0`（不延迟复制）。

对于灾难恢复，您可以将该配置参数与 [mysql.rds\$1start\$1replication\$1until](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until) 或 [mysql.rds\$1start\$1replication\$1until\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid) 存储过程一起使用。要将延迟只读副本的更改向前滚动到发生灾难之前的时间，您可以运行 `mysql.rds_set_configuration` 过程并设置该参数。在 `mysql.rds_start_replication_until` 或 `mysql.rds_start_replication_until_gtid` 过程停止复制后，您可以使用[将只读副本提升为独立的数据库实例](USER_ReadRepl.Promote.md)中的说明将只读副本提升为新的主数据库实例。

要使用 `mysql.rds_rds_start_replication_until_gtid` 过程，必须启用基于 GTID 的复制。要跳过已知会导致灾难的特定基于 GTID 的事务，您可以使用 [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid) 存储过程。有关使用基于 GTID 的复制的更多信息，请参阅[使用基于 GTID 的复制](mysql-replication-gtid.md)。

要指定 Amazon RDS 延迟只读副本的复制的秒数，请使用 `mysql.rds_set_configuration` 存储过程并指定要延迟复制的秒数。以下示例指定至少一个小时（3600 秒）内延迟复制。

`call mysql.rds_set_configuration('target delay', 3600);`

`target delay` 参数的限制为一天（86400 秒）。

## mysql.rds\$1show\$1configuration
<a name="mysql_rds_show_configuration"></a>

保留二进制日志的小时数。

### 语法
<a name="mysql_rds_show_configuration-syntax"></a>

 

```
CALL mysql.rds_show_configuration;
```

### 使用说明
<a name="mysql_rds_show_configuration-usage-notes"></a>

要验证 Amazon RDS 保留二进制日志的小时数，请使用 `mysql.rds_show_configuration` 存储过程。

### 示例
<a name="mysql_rds_show_configuration-examples"></a>

以下示例显示了保留期：

```
call mysql.rds_show_configuration;
                name                         value     description
                binlog retention hours       24        binlog retention hours specifies the duration in hours before binary logs are automatically deleted.
```