备份和还原 Amazon RDS Custom for SQL Server 数据库实例 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

备份和还原 Amazon RDS Custom for SQL Server 数据库实例

与 Amazon RDS 相同,RDS Custom 会在数据库实例的备份时段中,创建并保存 RDS Custom for SQL Server 数据库实例的自动备份。您还可以手动备份数据库实例。

此过程与拍摄 Amazon RDS 数据库实例的快照相同。RDS Custom 数据库实例的第一个快照包含完整数据库实例的数据。后续快照为增量快照。

使用 Amazon Web Services Management Console 或 Amazon CLI 还原数据库快照。

创建 RDS Custom for SQL Server 快照

RDS Custom for SQL Server 可创建数据库实例的存储卷快照,并备份整个数据库实例而不仅仅是单个数据库。创建快照时,请指定要备份哪个 RDS Custom for SQL Server 数据库实例。为您的快照命名,以便稍后通过它进行还原。

当您创建快照时,RDS Custom for SQL Server 会为附加到数据库实例的每个卷创建 Amazon EBS 快照。RDS Custom for SQL Server 使用根卷的 EBS 快照注册新的 Amazon Machine Image(AMI)。为了使快照轻松与特定数据库实例关联,请使用 DBSnapshotIdentifierDbiResourceIdVolumeType 标记它们。

创建数据库快照会导致短暂的输入/输出暂停。此暂停可持续数秒到几分钟,具体取决于数据库实例的大小和类。快照创建时间因数据库的大小而异。由于快照包含整个存储卷,因此,文件(如临时文件)的大小也会影响创建快照创建时间。要了解创建快照的更多信息,请参阅 创建数据库快照

使用控制台或 Amazon CLI 创建 RDS Custom for SQL Server 快照。

创建 RDS Custom 快照
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

  3. 在 RDS Custom 数据库实例列表中,选择您想拍摄快照的实例。

  4. 对于操作,选择拍摄快照

    将显示 Take DB snapshot (拍摄数据库快照) 窗口。

  5. Snapshot name(快照名称)框中,请输入快照的名称。

  6. 选择 Take snapshot (拍摄快照)

您可以通过使用 create-db-snapshot Amazon CLI 命令创建 RDS Custom 数据库实例的快照。

指定以下选项:

  • --db-instance-identifier – 标识要备份的 RDS Custom 数据库实例

  • --db-snapshot-identifier – 命名 RDS Custom 快照,以便以后通过它进行还原

在此示例中,您将给名为 my-custom-instance 的 RDS Custom 数据库实例创建名为 my-custom-snapshot 的数据库快照。

对于 Linux、macOS 或 Unix:

aws rds create-db-snapshot \ --db-instance-identifier my-custom-instance \ --db-snapshot-identifier my-custom-snapshot

对于 Windows:

aws rds create-db-snapshot ^ --db-instance-identifier my-custom-instance ^ --db-snapshot-identifier my-custom-snapshot

从 RDS Custom for SQL Server 数据库快照还原

在还原 RDS Custom for SQL Server 数据库实例时,需要提供数据库快照的名称以及新实例的名称。您不能从快照还原到现有的 RDS Custom 数据库实例。还原时将新建一个 RDS Custom for SQL Server 数据库实例。

该还原过程与 Amazon RDS 中的还原有以下方式不同:

  • 还原快照之前,RDS Custom for SQL Server 会备份现有配置文件。这些文件提供在目录 /rdsdbdata/config/backup 中的还原实例上。RDS Custom for SQL Server 使用原定设置参数还原数据库快照,并用现有参数覆盖以前的数据库配置文件。因此,还原的实例不会保留自定义参数和对数据库配置文件的更改。

  • 还原的数据库的名称与快照中的名称相同。您不能指定不同的名称。

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

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

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

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

  5. 请在 Restore DB instance(还原数据库实例)页面上,为 DB instance identifier(数据库实例标识符)输入还原的 RDS Custom 数据库实例的名称。

  6. 选择还原数据库实例

您可以通过使用 restore-db-instance-from-db-snapshot Amazon CLI 命令还原 RDS Custom 数据库快照。

如果要从中还原的快照适用于私有数据库实例,请务必同时指定正确的 db-subnet-group-nameno-publicly-accessible。否则,数据库实例原定设置为可公开访问。以下选项为必填:

  • db-snapshot-identifier – 标识要从中进行还原的快照

  • db-instance-identifier – 指定要从数据库快照创建的 RDS Custom 数据库实例的名称

  • custom-iam-instance-profile – 指定与 RDS Custom 数据库实例的基础 Amazon EC2 实例关联的实例配置文件。

以下代码为 my-custom-instance 还原名为 my-custom-snapshot 的快照。

对于 Linux、macOS 或 Unix:

aws rds restore-db-instance-from-db-snapshot \ --db-snapshot-identifier my-custom-snapshot \ --db-instance-identifier my-custom-instance \ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \ --no-publicly-accessible

对于 Windows:

aws rds restore-db-instance-from-db-snapshot ^ --db-snapshot-identifier my-custom-snapshot ^ --db-instance-identifier my-custom-instance ^ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^ --no-publicly-accessible

将 RDS Custom for SQL Server 实例还原到某个时间点

您可以将数据库实例还原到某个特定时间点 (PITR),以创建新数据库实例。要支持 PITR,您的数据库实例必须将备份保留期设置为非零值。

RDS Custom for SQL Server 数据库实例的最近可还原时间取决于多个因素,但通常为当前时间的 5 分钟内。要查看某个数据库实例的最近可还原时间,请使用 Amazon CLI describe-db-instances 命令,并查看该数据库实例的 LatestRestorableTime 字段中返回的值。要在 Amazon RDS 控制台中查看每个数据库实例的最近可还原时间,请选择自动备份

您可以还原至备份保留期内的任何时间点。要查看每个数据库实例的最早可还原时间,请在 Amazon RDS 控制台中选择自动备份

有关 PITR 的一般信息,请参阅将数据库实例还原到指定时间

RDS Custom for SQL Server 的 PITR 注意事项

在 RDS Custom for SQL Server 中,PITR 与 Amazon RDS 中的 PITR 有以下重要的区别:

  • PITR 仅还原数据库实例中的数据库。它不会还原操作系统或 C: 驱动器上的文件。

  • 对于 RDS Custom for SQL Server 数据库实例,数据库将自动备份,并且只有在以下条件下才有资格用于 PITR:

    • 数据库处于联机状态。

    • 它的还原模式设置为 FULL

    • 它是可写的。

    • 它的物理文件放在 D: 驱动器上。

    • 它未在 rds_pitr_blocked_databases 表中列出。有关更多信息,请参阅使数据库不符合 PITR 资格

  • RDS Custom for SQL Server 允许每个数据库实例最多 5000 个数据库。不过,针对 RDS Custom for SQL Server 数据库实例,PITR 操作还原的数据库的最大数量为 100 个。这 100 个数据库由其数据库 ID 的顺序决定。

    其他不属于 PITR 的数据库可以从数据库快照中还原,包括用于 PITR 的自动备份。

  • 添加新数据库、重命名数据库或还原符合 PITR 条件的数据库将启动数据库实例的快照。

  • 还原的数据库的名称与源数据库实例中的名称相同。您不能指定不同的名称。

  • AWSRDSCustomSQLServerIamRolePolicy 需要新的权限。有关更多信息,请参阅将访问策略添加到 AWSRDSCustomSQLServerInstanceRole

  • RDS Custom for SQL Server 不支持时区更改。如果更改操作系统或数据库实例时区,PITR(和其他自动化)将无法正常工作。

使数据库不符合 PITR 资格

您可以指定某些 RDS Custom for SQL Server 数据库不属于自动备份和 PITR 的一部分。要做到这一点,请将其 database_id 值放入 rds_pitr_blocked_databases 表中。使用以下 SQL 脚本创建表。

要创建 rds_pitr_blocked_databases 表
  • 请运行以下 SQL 脚本。

    create table msdb..rds_pitr_blocked_databases ( database_id INT NOT NULL, database_name SYSNAME NOT NULL, db_entry_updated_date datetime NOT NULL DEFAULT GETDATE(), db_entry_updated_by SYSNAME NOT NULL DEFAULT CURRENT_USER, PRIMARY KEY (database_id) );

有关符合条件和不符合条件的数据库的列表,请参阅 Amazon S3 存储桶 do-not-delete-rds-custom-$ACCOUNT_ID-$REGION-unique_identifier 中的 RDSCustomForSQLServer/Instances/DB_instance_resource_ID/TransactionLogMetadata 目录中的 RI.End 文件。有关 RI.End 文件的更多信息,请参阅Amazon S3 中的事务日志

Amazon S3 中的事务日志

备份保留期决定了 RDS Custom for SQL Server 数据库实例的事务日志是否会自动提取并上传到 Amazon S3。非零值表示创建了自动备份,且 RDS Custom 代理每 5 分钟将事务日志上传到 S3 一次。

S3 上的事务日志文件将使用您在创建数据库实例时提供的 Amazon KMS key 静态加密。有关更多信息,请参阅 Amazon Simple Storage Service 用户指南中的使用服务器端加密保护数据

每个数据库的事务日志将被上传到名为 do-not-delete-rds-custom-$ACCOUNT_ID-$REGION-unique_identifier 的 S3 存储桶。S3 存储桶中的 RDSCustomForSQLServer/Instances/DB_instance_resource_ID 目录包含两个子目录:

  • TransactionLogs – 包含每个数据库的事务日志及其各自的元数据。

    事务日志文件名称遵循模式 yyyyMMddHHmm.database_id.timestamp,例如:

    202110202230.11.1634769287

    带有后缀 _metadata 的相同文件名称包含有关事务日志的信息,例如日志序列号、数据库名称和 RdsChunkCountRdsChunkCount 确定有多少个物理文件代表单个事务日志文件。您可能会看到带有后缀 _0001_0002 等的文件,它们表示事务日志文件的物理数据块。如果要使用分块的事务日志文件,请确保在下载后合并这些数据块。

    考虑您拥有以下文件的情况:

    • 202110202230.11.1634769287

    • 202110202230.11.1634769287_0001

    • 202110202230.11.1634769287_0002

    • 202110202230.11.1634769287_metadata

    RdsChunkCount3。合并文件的顺序如下:202110202230.11.1634769287 202110202230.11.1634769287_0001202110202230.11.1634769287_0002

  • TransactionLogMetadata – 包含有关事务日志提取的每次迭代的元数据信息。

    RI.End 文件包含提取了事务日志的所有数据库的信息,以及所有存在但没有提取其事务日志的数据库的信息。RI.End 文件名称遵循模式 yyyyMMddHHmm.RI.End.timestamp,例如:

    202110202230.RI.End.1634769281

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 将 RDS Custom for SQL Server 数据库实例还原到某个时间点。

要将 RDS Custom 数据库实例还原至指定时间
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

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

  3. 选择要还原的 RDS Custom 数据库实例。

  4. 对于 Actions (操作),选择 Restore to point in time (还原到时间点)

    此时会显示还原到时间点窗口。

  5. 选择最近可还原时间以还原到可能的最近时间,或选择自定义来选择时间。

    如果您选择 Custom(自定义),请输入要将实例集群还原到的日期和时间。

    时间以您的本地时区显示,表示为协调世界时 (UTC) 的偏移量。例如,UTC-5 是东部标准时间/中部夏令时。

  6. 对于 DB instance identifier(数据库实例标识符),请输入目标还原后的 RDS Custom 数据库实例的名称。名称必须唯一。

  7. 根据需要选择其他选项,例如数据库实例类。

  8. 选择还原到时间点

通过使用 restore-db-instance-to-point-in-time Amazon CLI 命令创建新的 RDS Custom 数据库实例,将数据库实例还原到指定时间。

使用以下选项之一指定要从中恢复的备份:

  • --source-db-instance-identifier mysourcedbinstance

  • --source-dbi-resource-id dbinstanceresourceID

  • --source-db-instance-automated-backups-arn backupARN

custom-iam-instance-profile 选项是必需的。

截至指定的时间,以下示例会将 my-custom-db-instance 还原到名为 my-restored-custom-db-instance 的新数据库实例。

对于 Linux、macOS 或 Unix:

aws rds restore-db-instance-to-point-in-time \ --source-db-instance-identifier my-custom-db-instance\ --target-db-instance-identifier my-restored-custom-db-instance \ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \ --restore-time 2022-10-14T23:45:00.000Z

对于 Windows:

aws rds restore-db-instance-to-point-in-time ^ --source-db-instance-identifier my-custom-db-instance ^ --target-db-instance-identifier my-restored-custom-db-instance ^ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^ --restore-time 2022-10-14T23:45:00.000Z

删除 RDS Custom for SQL Server 快照

如果不再需要,您可以删除 RDS Custom for SQL Server 管理的数据库快照。对于 Amazon RDS 和 RDS Custom 数据库实例而言,删除过程是相同的。

二进制卷和根卷的 Amazon EBS 快照会在您的账户中保留更长时间,因为它们可能与您账户中运行的某些实例或其他 RDS Custom for SQL Server 快照关联。当这些 EBS 快照不再与任何现有 RDS Custom for SQL Server 资源(数据库实例或备份)相关后,将会被自动删除。

要删除 RDS Custom 数据库实例的快照
  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

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

  3. 选择要删除的数据库快照。

  4. 对于 Actions(操作),选择 Delete snapshot(删除快照)。

  5. 在确认页面上选择 Delete (删除)

要删除 RDS Custom 快照,请使用 Amazon CLI 命令 delete-db-snapshot

以下选项为必填项:

  • --db-snapshot-identifier – 要删除的快照

以下示例将删除 my-custom-snapshot 数据库快照。

对于 Linux、macOS 或 Unix:

aws rds delete-db-snapshot \ --db-snapshot-identifier my-custom-snapshot

对于 Windows:

aws rds delete-db-snapshot ^ --db-snapshot-identifier my-custom-snapshot

删除 RDS Custom for SQL Server 自动备份

当不再需要 RDS Custom for SQL Server 的保留自动备份时,您可以删除它们。此过程与删除 Amazon RDS 备份的过程相同。

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

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

  3. 选择 Retained (保留)

  4. 选择要删除的保留自动备份。

  5. 对于 Actions (操作),选择 Delete (删除)

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

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

以下选项用于删除保留的自动备份:

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

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

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

对于 Linux、macOS 或 Unix:

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

对于 Windows:

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