从数据库快照还原 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

从数据库快照还原

Amazon RDS 创建数据库实例的存储卷快照,并备份整个数据库实例而不仅仅是单个数据库。您可以通过从数据库快照还原来创建新的数据库实例。您可以提供用于还原的数据库快照的名称,然后提供还原后新建的数据库实例的名称。无法从数据库快照还原到现有数据库实例;还原时将新建一个数据库实例。

您可以使用已还原的数据库实例,只要其状态为 available。数据库实例继续在后台加载数据。这称为延迟加载

如果您的访问数据尚未加载,数据库实例会立即从 Amazon S3 下载请求的数据,然后在后台继续加载数据的剩余部分。有关更多信息,请参阅 Amazon EBS 快照

为了帮助减轻延迟加载对需要快速访问的表的影响,您可以执行涉及全表扫描的操作,例如 SELECT *。这样,Amazon RDS 就可以从 S3 下载所有备份表数据。

您可以还原数据库实例并使用与源数据库快照不同的存储类型。在这种情况下,由于将数据迁移到新的存储类型需要额外的工作,还原过程会更慢。在还原到磁性存储或从其中还原时,迁移过程最慢。这是因为磁性存储不具备预置 IOPS 或通用型 (SSD) 存储的 IOPS 功能。

您可以使用 Amazon CloudFormation从数据库实例快照还原数据库实例。有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的 AWS::RDS::DBInstance

注意

您无法从共享并且加密的数据库快照恢复数据库实例。您可以改为创建数据库快照副本,并从该副本还原数据库实例。有关更多信息,请参阅复制数据库快照

参数组注意事项

我们建议您保留所创建的数据库快照的数据库参数组,以便还原的数据库实例可以与正确的参数组关联。

除非选择不同的实例,否则默认数据库参数组将与还原的实例关联。默认参数组中没有可用的自定义参数设置。

您可以在还原数据库实例时指定参数组。

有关数据库参数组的更多信息,请参阅 使用参数组

安全组注意事项

还原数据库实例时,默认的虚拟私有云(VPC)、数据库子网组和 VPC 安全组将与还原的实例关联,除非您选择不同的值。

  • 如果您使用 Amazon RDS 控制台,则可以指定要与实例关联的自定义 VPC 安全组,或者创建新的 VPC 安全组。

  • 如果您使用 Amazon CLI,则可以在 restore-db-instance-from-db-snapshot 命令中包括 --vpc-security-group-ids 选项,从而指定要与实例关联的自定义 VPC 安全组。

  • 如果您使用的是 Amazon RDS API,则可以在 VpcSecurityGroupIds.VpcSecurityGroupId.N 操作中包括 RestoreDBInstanceFromDBSnapshot 参数。

一旦完成还原,并且您的新数据库实例可用,您还可以通过修改数据库实例来更改 VPC 设置。有关更多信息,请参阅修改 Amazon RDS 数据库实例

选项组注意事项

还原数据库实例时,默认的数据库选项组在大多数情况下会与还原的数据库实例相关联。

例外情况是,源数据库实例与包含持久性或永久性选项的选项组关联。例如,如果源数据库实例使用 Oracle 透明数据加密 (TDE),则还原后的数据库实例必须使用具有 TDE 选项的选项组。

如果您将数据库实例还原到不同的 VPC 中,则必须执行以下操作之一才能分配数据库选项组:

  • 将该 VPC 组的默认选项组分配到实例。

  • 分配关联到该 VPC 的另一个选项组。

  • 创建新选项组并将其分配到数据库实例。对于持久性或永久性选项(如 Oracle TDE),您必须创建包含持久性或永久性选项的新选项组。

有关数据库选项组的更多信息,请参阅 使用选项组

资源标记注意事项

从数据库快照还原数据库实例时,RDS 会检查您是否指定新标签。如果是,新标签将添加到还原的数据库实例中。如果没有新的标签,RDS 会在创建快照时将源数据库实例中的标签添加到还原的数据库实例中。

有关更多信息,请参阅复制标签到数据库实例快照

Microsoft SQL Server 注意事项

如果您要将 RDS for Microsoft SQL Server 数据库快照还原为新实例,总是可以还原为与快照相同的版本。在某些情况下,您还可以更改数据库实例的版本。以下是更改版本的限制应用:

  • 数据库快照必须为新版本分配足够的存储。

  • 只支持以下版本更改:

    • 从标准版更改为企业版

    • 从 Web 版更改为标准版或企业版

    • 从速成版更改为 Web 版、标准版或企业版

如果您希望从一个版本更改为另一个新版本,但还原快照不支持,您可以尝试使用本机备份和还原功能。SQL Server 根据数据库已启用的 SQL Server 功能,验证您的数据库是否与新版本兼容。有关更多信息,请参阅 使用本机备份和还原导入和导出 SQL Server 数据库

Oracle Database 注意事项

从数据库快照还原 Oracle 数据库时,请注意以下事项:

  • 还原数据库快照之前,您可以将其升级到更高版本的 Oracle 数据库。有关更多信息,请参阅升级 Oracle 数据库快照

  • 如果还原使用单租户配置的 CDB 实例的快照,则可以更改 PDB 名称。当您的 CDB 实例使用多租户配置时,则无法更改 PDB 名称。有关更多信息,请参阅备份和还原 CDB

  • 无法更改 CDB 名称,始终为 RDSCDB。对于所有 CDB 实例,此 CDB 名称是相同的。

  • 您无法直接与数据库快照中的租户数据库进行交互。如果还原使用多租户配置的 CDB 实例的快照,则将还原其所有租户数据库。在还原数据库快照之前,您可以使用 describe-db-snapshot-tenant-databases 来检查数据库快照中的租户数据库。

  • 如果您使用 Oracle GoldenGate,请始终使用 compatible 参数保留参数组。从数据库快照还原数据库实例时,请指定具有匹配或更大 compatible 值的参数组。

从快照还原

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 从数据库快照中还原数据库实例。

注意

还原数据库实例时,无法减少存储量。当您增加分配的存储空间时,必须至少增加 10%。如果您尝试将该值增加不到 10%,则会得到错误。您无法在还原 RDS for SQL Server 数据库实例时增加分配的存储。

要从数据库快照还原数据库实例,请执行以下操作:
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

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

  3. 选择要从其还原的数据库快照。

  4. 对于操作,选择还原快照

  5. Restore snapshot(还原快照)页面上,对于 DB instance identifier(数据库实例标识符),输入还原的数据库实例的名称。

  6. 指定其他设置,如分配的存储大小。

    有关每项设置的信息,请参阅 数据库实例的设置

  7. 选择还原数据库实例

要从数据库快照还原数据库实例,请使用 Amazon CLI 命令 restore-db-instance-from-db-snapshot

在该示例中,您将从先前创建的名为 mydbsnapshot 的数据库快照中进行还原。还原为名为 mynewdbinstance 的新数据库实例。此示例还设置分配的存储大小。

您可以指定其他设置。有关每项设置的信息,请参阅 数据库实例的设置

对于 Linux、macOS 或 Unix:

aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier mynewdbinstance \ --db-snapshot-identifier mydbsnapshot \ --allocated-storage 100

对于 Windows:

aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier mynewdbinstance ^ --db-snapshot-identifier mydbsnapshot ^ --allocated-storage 100

该命令会返回类似以下内容的输出:

DBINSTANCE mynewdbinstance db.t3.small MySQL 50 sa creating 3 n 8.0.28 general-public-license

要从数据库快照还原数据库实例,请使用以下参数调用 Amazon RDS API 函数 RestoreDBInstanceFromDBSnapshot

  • DBInstanceIdentifier

  • DBSnapshotIdentifier