Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用备份

Amazon RDS 创建并保存数据库实例的自动备份。Amazon RDS 为数据库实例创建存储卷快照,并备份整个数据库实例而不仅仅是单个数据库。

Amazon RDS 在数据库实例的备份窗口中创建数据库实例的自动备份。Amazon RDS 根据指定的备份保留时间保存数据库实例的自动备份。如果需要,您可以将数据库恢复到备份保留期中的任意时间点。

自动备份遵循以下规则:

  • 数据库实例必须处于 ACTIVE 状态才能进行自动备份。当数据库实例处于 ACTIVE 之外的状态 (例如 STORAGE_FULL) 时,不会进行自动备份。

  • 在相同区域中有相同数据库实例的副本正在执行时,不会进行自动备份和自动快照。

您还可以通过手动创建数据库快照来手动备份数据库实例。有关创建数据库快照的更多信息,请参阅创建数据库快照

数据库实例的第一个快照包含完整数据库实例的数据。相同数据库实例的后续快照为增量快照,这意味着仅保存在最新快照后更改的数据。

您可以复制自动和手动数据库快照,还可以共享手动数据库快照。有关复制数据库快照的更多信息,请参阅复制快照。有关共享数据库快照的更多信息,请参阅共享数据库快照

备份存储

您的每个区域的 Amazon RDS 备份存储由该区域的自动备份和手动数据库快照组成。备份存储等于该区域中所有实例的数据库存储之和。将数据库快照移至另一个区域将增加目标区域的备份存储。

如果您在删除数据库实例时选择保留自动备份,则自动备份将保存完整的保留周期。如果您在删除数据库实例时未选择 Retain automated backups (保留自动备份),则所有自动备份将随同数据库实例删除。自动备份删除后无法恢复。如果您选择让 Amazon RDS 在删除数据库实例之前创建最终数据库快照,则可以使用该快照来恢复数据库实例。或者,您可以使用之前创建的手动快照。手动快照不会删除。

备份时段

自动备份在每天的首选备份时段中进行。如果备份所需的时间超过了分配到备份时段的时间,则备份将在该时段结束后继续,直至完成。备份时段不能与数据库实例的每周维护时段重叠。

在自动备份时段期间,启动备份进程时可能会短时间暂停存储 I/O (通常不到几秒)。在备份多可用区部署时,可能需要等待几分钟。 对于 MariaDB、MySQL、Oracle 和 PostgreSQL,多可用区部署的备份期间不会暂停主数据库上的 I/O 活动,因为备份获取自备用数据库。对于 SQL Server,多可用区部署的备份期间将短时间暂停 I/O 活动。

如果创建数据库实例时未指定首选备份时段,Amazon RDS 将分配 30 分钟的默认备份时段。此时段是从每个 AWS 区域的 8 小时时间段中随机选择出来的。下表列出了已分配默认备份时段的各个地区的时间块。

区域 时间数据块
美国西部(俄勒冈)区域 06:00–14:00 UTC
美国西部(加利福利亚北部)区域 06:00–14:00 UTC
美国东部(俄亥俄)区域 03:00–11:00 UTC
美国东部(弗吉尼亚北部)地区 03:00–11:00 UTC
亚太地区(孟买)区域 16:30–00:30 UTC
亚太区域(首尔) 13:00–21:00 UTC
亚太区域(新加坡) 14:00–22:00 UTC
亚太区域(悉尼) 12:00–20:00 UTC
亚太区域(东京) 13:00–21:00 UTC
加拿大 (中部) 区域 06:29–14:29 UTC
欧洲(法兰克福)区域 20:00–04:00 UTC
欧洲(爱尔兰)区域 22:00–06:00 UTC
欧洲 (伦敦) 区域 06:00–14:00 UTC
南美洲(圣保罗)区域 23:00–07:00 UTC
AWS GovCloud(美国西部) 03:00–11:00 UTC

备份保留期

您可以在创建数据库实例时设置备份保留期。如果未设置备份保留期,则在使用 Amazon RDS API 或 AWS CLI 创建数据库实例时,默认备份保留期为一天。如果您使用控制台创建数据库实例,默认备份保留期为七天。创建数据库实例后,您可以修改备份保留期。您可以将备份保留期设置为在 0 到 35 天之间。要禁用自动备份,请将备份保留期设置为 0。手动快照限制 (每个区域 100 个) 不适用于自动备份。

重要

如果将备份保留期从 0 更改为非零值或从非零值更改为 0,则将发生中断。

禁用自动备份

在某些情况下(例如,加载大量数据时),您可能希望临时禁用自动备份。

重要

我们强烈建议不要禁用自动备份,因为该操作会禁用时间点恢复。禁用数据库实例的自动备份将删除此实例的所有现有自动备份。如果在禁用后又重新启用了自动备份,则您只能从重新启用自动备份的时间开始进行还原。

在该示例中,您可以通过将备份保留参数设置为 0 来禁用名为 mydbinstance 的数据库实例的自动备份。

控制台

立即禁用自动备份

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

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

  3. 选择 Modify。此时会显示 Modify DB Instance (修改数据库实例) 页面。

  4. 对于备份保留期,选择 0 天

  5. 选择 Continue (继续)

  6. 选择立即应用

  7. 在确认页面上,选择 Modify DB Instance 可保存更改并禁用自动备份。

AWS CLI

要立即禁用自动备份,请使用 modify-db-instance 命令并使用 --apply-immediately 将备份保留期设置为 0。

以下示例立即禁用了自动备份。

针对 Linux、OS X 或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --backup-retention-period 0 \ --apply-immediately

对于 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --backup-retention-period 0 ^ --apply-immediately

要了解修改的生效时间,请调用数据库实例的 describe-db-instances,直至备份保留期的值为 0 且 mydbinstance 状态可用。

aws rds describe-db-instances --db-instance-identifier mydbinstance
RDS API

要立即禁用自动备份,请使用以下参数调用 ModifyDBInstance 操作:

  • DBInstanceIdentifier = mydbinstance

  • BackupRetentionPeriod = 0

https://rds.amazonaws.com/ ?Action=ModifyDBInstance &DBInstanceIdentifier=mydbinstance &BackupRetentionPeriod=0 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-14T17%3A48%3A21.746Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

启用自动备份

如果数据库实例尚未启用自动备份,您可以随时启用。您可以将备份保留期设置为非零正值来启用自动备份。在启用自动备份后,您的 RDS 实例和数据库将脱机并立即创建备份。

在该示例中,您可以将备份保留期参数设置为非零正值 (该示例中为 3),以启用名为 mydbinstance 的数据库实例的自动备份。

控制台

立即启用自动备份

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

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

  3. 选择 Modify。此时会显示 Modify DB Instance (修改数据库实例) 页面。

  4. 对于备份保留期,请选择正非零值,例如 3 天。

  5. 选择 Continue (继续)

  6. 选择立即应用

  7. 在确认页面上,选择 Modify DB Instance 可保存更改并启用自动备份。

AWS CLI

要立即启用自动备份,请使用 AWS CLI modify-db-instance 命令。

在此示例中,启用了自动备份并将备份保留期设置为三天。

包括以下参数:

  • --db-instance-identifier

  • --backup-retention-period

  • --apply-immediately 或者 --no-apply-immediately

针对 Linux、OS X 或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --backup-retention-period 3 \ --apply-immediately

对于 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --backup-retention-period 3 ^ --apply-immediately
RDS API

要立即启用自动备份,请使用 RDS API ModifyDBInstance 操作。

在此示例中,启用了自动备份并将备份保留期设置为三天。

包括以下参数:

  • DBInstanceIdentifier

  • BackupRetentionPeriod

  • ApplyImmediately = true

https://rds.amazonaws.com/ ?Action=ModifyDBInstance &DBInstanceIdentifier=mydbinstance &BackupRetentionPeriod=3 &ApplyImmediately=true &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-14T17%3A48%3A21.746Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

保留自动备份

当您删除数据库实例时,您可以保留自动备份。

保留的自动备份包含系统快照和来自数据库实例的事务日志。还包括您的数据库实例属性,如分配的存储空间和数据库实例类,这些是将其还原到活动实例所必需的。

您可以为运行 MySQL、MariaDB、PostgreSQL、Oracle 和 Microsoft SQL Server 引擎的 RDS 实例保留自动备份。

您可以使用 AWS 管理控制台、RDS API 和 AWS CLI 还原或移除保留的自动备份。

保留周期

保留的自动备份中的系统快照和事务日志与源数据库实例的系统快照和事务日志以同样的方式过期。因为没有为此实例创建任何新的快照或日志,所以保留的自动备份最终将完全过期。事实上,它们的寿命与最后一个系统快照一样长,取决于源实例被删除时所具有的保留周期设置。保留的自动备份将在最后一个系统快照过期时由系统删除。

您可以通过删除数据库实例的相同方式移除保留的自动备份。您可以使用控制台或 RDS API 操作 DeleteDBInstanceAutomatedBackup 移除保留的自动备份。

最终快照独立于保留的自动备份。我们强烈建议您制作最终快照,即使您保留自动备份也是如此,因为保留的自动备份最终将过期。最终快照不会过期。

还原

要查看保留的自动备份,请切换到自动备份页面。您可以在控制台中数据库快照页面上查看与保留的自动备份关联的各个快照。或者,您可以通过描述来查看与保留的自动备份关联的各个快照。然后,您可以直接从这些快照之一还原数据库实例。

还原的数据库实例自动与默认参数和选项组关联。但是,您可以通过在还原期间指定自定义参数组和选项组来应用它们。

在本例中,您使用保留的自动备份将数据库实例还原到某个时间点。首先,对保留的自动备份进行描述,这样您就可以查看要还原其中哪个自动备份。

要使用 RDS API 对保留的自动备份进行描述,请带以下参数之一调用 DescribeDBInstanceAutomatedBackups 操作:

  • DBInstanceIdentifier

  • DbiResourceId

aws rds describe-db-instance-automated-backups --db-instance-identifier DBInstanceIdentifier OR aws rds describe-db-instance-automated-backups --dbi-resource-idDbiResourceId

接下来,要使用 RDS API 将保留的自动备份还原到某个时间点,请带以下参数调用 RestoreDBInstanceToPointInTime 操作:

  • SourceDbiResourceId

  • TargetDBInstanceIdentifier

aws rds restore-db-instance-to-point-in-time --source-dbi-resource-id SourceDbiResourceId --target-db-instance-identifier TargetDBInstanceIdentifier --use-latest-restorable-time

保留成本

保留的自动备份的成本是与之关联的系统快照的总存储空间的成本。事务日志或实例元数据没有额外费用。备份的所有其他定价规则适用于可还原的实例。

例如,假设正在运行的实例的总分配存储空间为 100 GB。此外,假设您具有 50 GB 的手动快照,另加 75 GB 与保留的自动备份关联的系统快照。在这种情况下,您将仅为额外的 25 GB 的备份存储空间付费,如下所示:(50 GB + 75 GB) – 100 GB = 25 GB。

限制和建议

以下限制适用于保留的自动备份:

  • 一个区域中保留的自动备份的最大数量为 20。这不包含在数据库实例限制中。您可以同时具有 20 个正在运行的数据库实例和另外 20 个保留的自动备份。

  • 保留的自动备份不包含有关参数或选项组的信息。

  • 您可以将已删除的实例还原到删除时保留周期内的某个时间点。

  • 无法修改保留的自动备份,因为它由您在删除源实例时已存在的系统备份、事务日志以及数据库实例属性组成。

使用不支持的 MySQL 存储引擎进行自动备份

对于 MySQL 数据库引擎,仅支持将自动备份用于 InnoDB 存储引擎。将这些功能与 MyISAM 等其他 MySQL 存储引擎配合使用,可能会导致在从备份还原的过程中出现性能不可靠问题。具体而言,由于类似 MyISAM 的存储引擎不支持可靠的崩溃恢复,因此如果发生崩溃,就可能会损坏您的表。为此,我们建议您使用 InnoDB 存储引擎。

  • 要将现有的 MyISAM 表转换为 InnoDB 表,您可以使用 ALTER TABLE 命令,例如:ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;

  • 如果选择使用 MyISAM,您可以尝试使用 REPAIR 命令手动修复崩溃后损坏的表。有关更多信息,请参阅 MySQL 文档中的 REPAIR TABLE 语法。然而,正如 MySQL 文档所指出,您可能再也不能恢复所有数据。

  • 如果要在还原前拍摄 MyISAM 表的快照,请执行以下步骤:

    1. 停止 MyISAM 表的所有活动(即关闭所有会话)。

      可以通过为从 SHOW FULL PROCESSLIST 命令返回的每个进程调用 mysql.rds_kill 命令来关闭所有会话。

    2. 锁定并刷新每个 MyISAM 表。例如,以下命令锁定并刷新两个名为 myisam_table1myisam_table2 的表:

      mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
    3. 创建数据库实例的快照。完成快照后,释放 MyISAM 表上的锁定和恢复活动。可以使用以下命令为表解锁:

      mysql> UNLOCK TABLES;

    这些步骤强制 MyISAM 将存储在内存中的数据刷新到磁盘上,这可确保从数据库快照还原后,以清空状态开始下一操作。有关创建数据库快照的更多信息,请参阅创建数据库快照

使用不支持的 MariaDB 存储引擎进行自动备份

对于 MariaDB 数据库引擎,仅 InnoDB 存储引擎 (版本 10.2 和更高版本) 和 XtraDB 存储引擎 (版本 10.0 和 10.1) 支持自动备份。在从备份还原的过程中,配合 Aria 等其他 MariaDB 存储引擎使用这些功能,可能会导致行为不可靠。即使 Aria 是用来防止崩溃的 MyISAM 的替代品,您的表仍可能在崩溃时损坏。为此,我们建议您使用 XtraDB 存储引擎。

  • 要将现有的 Aria 表转换为 InnoDB 表,您可以使用 ALTER TABLE 命令。例如:ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;

  • 要将现有的 Aria 表转换为 XtraDB 表,您可以使用 ALTER TABLE 命令。例如:ALTER TABLE table_name ENGINE=xtradb, ALGORITHM=COPY;

  • 如果选择使用 Aria,您可以尝试使用 REPAIR TABLE 命令手动修复崩溃后损坏的表。有关更多信息,请参阅 http://mariadb.com/kb/en/mariadb/repair-table/

  • 如果要在还原前拍摄 Aria 表的快照,请执行以下步骤:

    1. 停止 Aria 表的所有活动 (即关闭所有会话)。

    2. 锁定并刷新每个 Aria 表。

    3. 创建数据库实例的快照。完成快照后,释放 Aria 表上的锁定和恢复活动。这些步骤强制 Aria 将存储在内存中的数据刷新到磁盘上,从而确保从数据库快照还原后,以清空状态开始下一操作。