使用备份 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用备份

在数据库的备份时段中,Amazon RDS 创建并保存数据库实例或多可用区数据库集群的自动备份。RDS 创建数据库的存储卷快照,并备份整个数据库而不仅仅是单个数据库。RDS 根据您指定的备份保留期保存数据库的自动备份。如果需要,您可以将数据库恢复到备份保留期中的任意时间点。

自动备份遵循以下规则:

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

  • 数据库快照副本在相同数据库的相同 Amazon Web Services 区域中运行时,不会进行自动备份。

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

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

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

备份存储

您的每个 Amazon Web Services 区域的 Amazon RDS 备份存储由该区域的自动备份和手动数据库快照组成。备份存储总空间相当于该区域中所有备份的存储空间之和。将数据库快照移至另一个区域将增加目标区域的备份存储。备份存储在 Amazon S3 中。

如果您在删除数据库时选择保留自动备份,则自动备份将保存完整的保留期。如果您在删除数据库时未选择保留自动备份,则所有自动备份将随同数据库一起删除。自动备份删除后无法恢复。如果您选择让 Amazon RDS 在删除数据库之前创建最终数据库快照,则可以使用该快照来恢复数据库。(可选)您可以使用之前创建的手动快照。手动快照不会删除。您在每个区域最多可拥有 100 个手动快照。

备份时段

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

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

启动备份时,如果数据库实例或集群具有繁重的工作负载,则有时会跳过自动备份。如果跳过备份,您仍然可以执行时间点恢复(PITR),并仍在下一个备份时段尝试备份。有关 PITR 的更多信息,请参阅将数据库实例还原到指定时间

如果创建数据库实例或多可用区数据库集群时未指定首选备份时段,Amazon RDS 将分配 30 分钟的原定设置备份时段。此时段是从每个 Amazon Web Services 区域的 8 小时时间段中随机选择出来的。下表列出了已分配原定设置备份时段的各个 Amazon Web Services 区域的时间块。

区域名称 区域 时间段
US East (Ohio) us-east-2 03:00–11:00 UTC
美国东部(弗吉尼亚北部) us-east-1 03:00–11:00 UTC
美国西部(加利福尼亚北部) us-west-1 06:00–14:00 UTC
美国西部(俄勒冈) us-west-2 06:00–14:00 UTC
Africa (Cape Town) af-south-1 03:00–11:00 UTC
Asia Pacific (Hong Kong) ap-east-1 06:00–14:00 UTC
亚太地区(海得拉巴) ap-south-2 06:30–14:30 UTC
亚太地区(雅加达) ap-southeast-3 08:00–16:00 UTC
亚太地区(墨尔本) ap-southeast-4 11:00–19:00 UTC
亚太地区(孟买) ap-south-1 16:30–00:30 UTC
Asia Pacific (Osaka) ap-northeast-3 00:00–08:00 UTC
Asia Pacific (Seoul) ap-northeast-2 13:00–21:00 UTC
亚太地区(新加坡) ap-southeast-1 14:00–22:00 UTC
亚太地区(悉尼) ap-southeast-2 12:00–20:00 UTC
亚太区域(东京) ap-northeast-1 13:00–21:00 UTC
加拿大(中部) ca-central-1 03:00–11:00 UTC
China (Beijing) cn-north-1 06:00–14:00 UTC
China (Ningxia) cn-northwest-1 06:00–14:00 UTC
Europe (Frankfurt) eu-central-1 20:00–04:00 UTC
欧洲(爱尔兰) eu-west-1 22:00–06:00 UTC
Europe (London) eu-west-2 22:00–06:00 UTC
欧洲(米兰) eu-south-1 02:00–10:00 UTC
欧洲(巴黎) eu-west-3 07:29–14:29 UTC
欧洲(西班牙) eu-south-2 02:00–10:00 UTC
Europe (Stockholm) eu-north-1 23:00–07:00 UTC
欧洲(苏黎世) eu-central-2 02:00–10:00 UTC
中东(巴林) me-south-1 06:00–14:00 UTC
中东(阿联酋) me-central-1 05:00–13:00 UTC
South America (São Paulo) sa-east-1 23:00–07:00 UTC
Amazon GovCloud(美国东部) us-gov-east-1 17:00–01:00 UTC
Amazon GovCloud(美国西部) us-gov-west-1 06:00–14:00 UTC

备份保留期

您可以在创建数据库实例或多可用区数据库集群时设置备份保留期。如果未设置备份保留期,则在使用 Amazon RDS API 或 Amazon CLI 创建数据库时,原定设置备份保留期为一天。如果您使用控制台创建数据库,原定设置备份保留期为七天。

创建数据库实例或集群后,您可以修改备份保留期。您可以将备份保留期设置为在 0 到 35 天之间。要禁用自动备份,请将备份保留期设置为 0。手动快照限制(每个区域 100 个)不适用于自动备份。

数据库实例或集群停止后,无法创建自动备份。如果数据库已停止,备份的保留时间可能会超过备份保留期。RDS 不包括计算备份保留时段时处于 stopped 状态的时间。

重要

如果将备份保留期从 0 更改为非零值或从非零值更改为 0,则会发生中断。这适用于单可用区和多可用区数据库实例。

启用自动备份

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

注意

如果在 Amazon Backup 中管理备份,将无法启用自动备份。有关更多信息,请参阅使用 Amazon Backup 管理自动备份

立即启用自动备份
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择数据库,然后选择要修改的数据库实例或多可用区数据库集群。

  3. 选择 Modify(修改)。

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

  5. 选择 Continue (继续)

  6. 选择立即应用

  7. 选择修改数据库实例修改集群以保存更改并启用自动备份。

要启用自动备份,请使用 Amazon CLI modify-db-instancemodify-db-cluster 命令。

包括以下参数:

  • --db-instance-identifier(或 --db-cluster-identifier 用于可用区数据库集群)

  • --backup-retention-period

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

在以下示例中,启用了自动备份并将备份保留期设置为三天。更改将立即应用。

对于 Linux、macOS 或 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 ModifyDBInstanceModifyDBCluster 操作以及以下必需参数:

  • DBInstanceIdentifier 或者 DBClusterIdentifier

  • BackupRetentionPeriod

查看自动备份

要查看自动备份,请在导航窗格中选择 Automated backups(自动备份)。要查看与自动备份关联的单个快照,请在导航窗格中选择 Snapshots(快照)。或者,您可以描述与自动备份关联的各个快照。然后,您可以直接从这些快照之一还原数据库实例。

要使用 Amazon CLI 对现有的数据库实例的自动备份进行描述,请使用以下命令之一:

aws rds describe-db-instance-automated-backups --db-instance-identifier DBInstanceIdentifier

or

aws rds describe-db-instance-automated-backups --dbi-resource-id DbiResourceId

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

  • DBInstanceIdentifier

  • DbiResourceId

保留自动备份

注意

您只能保留数据库实例而不是多可用区数据库集群的自动备份。

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

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

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

您可以使用 Amazon Web Services Management Console、RDS API 和 Amazon CLI 还原或移除保留的自动备份。

保留期

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

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

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

查看保留的备份

要查看保留的自动备份,请在导航窗格中选择 Automated backups (自动备份),然后选择 Retained (保留)。要查看与保留的自动备份关联的单个快照,请在导航窗格中选择 Snapshots (快照)。或者,您可以通过描述来查看与保留的自动备份关联的各个快照。然后,您可以直接从这些快照之一还原数据库实例。

要使用 Amazon CLI 对保留的自动备份进行描述,请使用以下命令:

aws rds describe-db-instance-automated-backups --dbi-resource-id DbiResourceId

要使用 RDS API 对保留的自动备份进行描述,请使用 DbiResourceId 参数调用 DescribeDBInstanceAutomatedBackups 操作。

还原

有关从自动备份还原数据库实例的信息,请参阅 将数据库实例还原到指定时间

保留成本

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

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

限制和建议

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

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

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

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

  • 您无法修改保留的自动备份。这是因为它包含在您删除源实例时已存在的系统备份、事务日志和数据库实例属性。

删除保留的自动备份

当不再需要保留的自动备份时,可以删除它们。

删除保留的自动备份
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Automated backups (自动备份)

  3. 保留选项卡中,选择要删除的保留自动备份。

  4. 对于 Actions,选择 Delete

  5. 在确认页面上,输入 delete me 并选择 Delete (删除)

可以通过使用 Amazon CLI 命令 delete-db-instance-automated-backup 及以下选项删除保留的自动备份:

  • --dbi-resource-id – 源数据库实例的资源标识符。

    可以通过运行 Amazon CLI 命令 describe-db-instance-automated-backups 查找保留自动备份的源数据库实例的资源标识符。

以下示例删除具有源数据库实例资源标识符 db-123ABCEXAMPLE 的保留自动备份。

对于 Linux、macOS 或 Unix:

aws rds delete-db-instance-automated-backup \ --dbi-resource-id db-123ABCEXAMPLE

对于 Windows:

aws rds delete-db-instance-automated-backup ^ --dbi-resource-id db-123ABCEXAMPLE

可以通过使用 Amazon RDS API 操作 DeleteDBInstanceAutomatedBackup 及以下参数删除保留的自动备份。

  • DbiResourceId – 源数据库实例的资源标识符。

    可以通过使用 Amazon RDS API 操作 DescribeDBInstanceAutomatedBackups 查找保留自动备份的源数据库实例的资源标识符。

禁用自动备份

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

重要

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

立即禁用自动备份
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择数据库,然后选择要修改的数据库实例或多可用区数据库集群。

  3. 选择 Modify(修改)。

  4. 对于 Backup retention period (备份保留期),选择 0 days (0 天)

  5. 选择 Continue (继续)

  6. 选择立即应用

  7. 选择修改数据库实例修改集群以保存更改并禁用自动备份。

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

以下示例立即禁用多可用区数据库集群上的自动备份。

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --backup-retention-period 0 \ --apply-immediately

对于 Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --backup-retention-period 0 ^ --apply-immediately

要了解修改的生效时间,请对于数据库实例调用 describe-db-instances(或对于多可用区数据库集群调用 describe-db-clusters),直至备份保留期的值为 0 且 mydbcluster 状态可用。

aws rds describe-db-clusters --db-cluster-identifier mydcluster

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

  • DBInstanceIdentifier = mydbinstance – 、 或 DBClusterIdentifier = mydbcluster

  • 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>

使用 Amazon Backup 管理自动备份

Amazon Backup 是一项完全托管的备份服务,可在云中以及本地方便地集中管理和自动执行跨 Amazon 服务的数据备份。您可以在 Amazon Backup 中管理 Amazon RDS 数据库的备份。

要在 Amazon Backup 中启用备份,请使用资源标记将数据库与备份计划关联。有关更多信息,请参阅使用标签在 Amazon Backup 中启用备份

注意

由 Amazon Backup 管理的备份被视为手动数据库快照,但不计入 RDS 的数据库快照配额。使用 Amazon Backup 创建的备份的名称以 awsbackup:backup-job-number 结尾。

有关 Amazon Backup 的更多信息,请参阅 Amazon Backup 开发人员指南

查看由 Amazon Backup 管理的备份
  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择快照

  3. 选择 Backup service (备份服务) 选项卡。

    您的 Amazon Backup 备份位于 Backup service snapshots (备份服务快照) 之下。

使用不支持的 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 存储引擎配合使用。将这些功能与 Aria 等其他 MariaDB 存储引擎配合使用,可能会导致在从备份还原时出现性能不可靠问题。即使 Aria 是用来防止崩溃的 MyISAM 的替代品,您的表仍可能在崩溃时损坏。为此,我们建议您使用 InnoDB 存储引擎。

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

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

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

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

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

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