

# 使用 RDS for SQL Server 访问事务日志备份
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess"></a>

通过访问 RDS for SQL Server 的事务日志备份，您可以列出数据库的事务日志备份文件并将它们复制到目标 Amazon S3 桶。通过在 Amazon S3 桶中复制事务日志备份，您可以将它们与完整和差异数据库备份结合使用，以执行时间点数据库还原。您可以使用 RDS 存储过程设置对事务日志备份的访问权限，列出可用的事务日志备份，并将它们复制到您的 Amazon S3 桶。

访问事务日志备份可提供以下功能和好处：
+ 列出并查看 RDS for SQL Server 数据库实例上数据库的可用事务日志备份的元数据。
+ 将可用事务日志备份从 RDS for SQL Server 复制到目标 Amazon S3 桶。
+ 无需还原整个数据库实例，即可执行数据库的时间点还原。有关将数据库实例还原到某个时间点的更多信息，请参阅[将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。

## 可用性和支持
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Availability"></a>

所有 Amazon 区域都支持访问事务日志备份。访问事务日志备份适用于 Amazon RDS 支持的所有 Microsoft SQL Server 版本。

## 要求
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Requirements"></a>

在启用访问事务日志备份之前，必须满足以下要求：
+  必须在数据库实例上启用自动备份，并且备份保留期必须设置为一天或多天的值。有关启用自动备份和配置保留策略的更多信息，请参阅[启用自动备份](USER_WorkingWithAutomatedBackups.Enabling.md)。
+ Amazon S3 桶必须与源数据库实例存在于同一账户和区域中。在启用访问事务日志备份之前，请选择现有的 Amazon S3 桶或[创建新桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/CreatingaBucket.html)，用于存储事务日志备份文件。
+ 必须按如下方式配置 Amazon S3 桶权限策略，以允许 Amazon RDS 将事务日志文件复制到其中：

  1. 将桶的对象账户拥有权属性设置为 **Bucket Owner Preferred**（首选桶拥有者）。

  1. 添加以下策略。原定设置情况下没有策略，因此，请使用桶访问控制列表（ACL）编辑并添加桶策略。

  

  以下示例使用 ARN 指定资源。我们建议在基于资源的信任关系中使用 `SourceArn` 和 `SourceAccount` 全局条件上下文键，以此限制服务对特定资源的权限。有关使用 ARN 的更多信息，请参阅 [Amazon 资源名称（ARN）](https://docs.amazonaws.cn/general/latest/gr/aws-arns-and-namespaces.html)和[Amazon RDS 中的 Amazon 资源名称（ARN）](USER_Tagging.ARN.md)。

    
**Example 用于访问事务日志备份的 Amazon S3 权限策略**  

------
#### [ JSON ]

****  

  ```
      {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Only allow writes to my bucket with bucket owner full control",
              "Effect": "Allow",
              "Principal": {
                  "Service": "backups.rds.amazonaws.com"
              },
              "Action": "s3:PutObject",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/{customer_path}/*",
              "Condition": {
                  "StringEquals": {
                      "s3:x-amz-acl": "bucket-owner-full-control",
                      "aws:sourceAccount": "{customer_account}",
                      "aws:sourceArn": "{db_instance_arn}"
                  }
              }
          }
      ]
  }
  ```

------
+ 用于访问 Amazon S3 桶的 Amazon Identity and Access Management（IAM）角色。如果您已有一个 IAM 角色，则可以使用它。您可以选择在使用Amazon Web Services 管理控制台添加 `SQLSERVER_BACKUP_RESTORE` 选项时为自己创建新的 IAM 角色。或者，您可以手动创建一个新的角色。有关使用 `SQLSERVER_BACKUP_RESTORE` 创建和配置 IAM 角色的更多信息，请参阅[为本机备份和还原手动创建 IAM 角色](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)。
+ 必须将 `SQLSERVER_BACKUP_RESTORE` 选项添加到数据库实例上的选项组。有关添加 `SQLSERVER_BACKUP_RESTORE` 选项的更多信息，请参阅[SQL Server 中对本机备份和还原的支持](Appendix.SQLServer.Options.BackupRestore.md)。
**注意**  
如果您的数据库实例启用了存储加密，则必须以原生备份和还原选项组中提供的 IAM 角色提供 Amazon KMS（KMS）操作和密钥。

  （可选）如果您打算使用 `rds_restore_log` 存储过程执行时间点数据库还原，我们建议将相同的 Amazon S3 路径用于原生备份和还原选项组以及访问事务日志备份。此方法可确保当 Amazon RDS 代入选项组中的角色以执行还原日志功能时，它有权从相同的 Amazon S3 路径检索事务日志备份。
+ 如果数据库实例已加密，则无论加密类型如何（Amazon 托管密钥或客户托管密钥），您都必须在 IAM 角色和 `rds_tlog_backup_copy_to_S3` 存储过程中提供客户托管的 KMS 密钥。

## 限制和建议
<a name="USER.SQLServer.AddlFeat.TransactionLogAccess.Limitations"></a>

访问事务日志备份有以下限制和建议：
+  对于任何配置了 1 到 35 天备份保留期的数据库实例，您最多可以列出并复制最近七天的事务日志备份。
+  用于访问事务日志备份的 Amazon S3 桶必须与源数据库实例位于相同的账户和区域中。不支持跨账户和跨区域复制。
+  只能将一个 Amazon S3 桶配置为将事务日志备份复制到的目标。您可以使用 `rds_tlog_copy_setup` 存储过程选择新的目标 Amazon S3 桶。有关选择新目标 Amazon S3 桶的更多信息，请参阅[设置访问事务日志备份](USER.SQLServer.AddlFeat.TransactionLogAccess.Enabling.md)。
+  如果您的 RDS 实例未启用存储加密，则在使用 `rds_tlog_backup_copy_to_S3` 存储过程时无法指定 KMS 密钥。
+  不支持多账户复制。用于复制的 IAM 角色仅允许对数据库实例的拥有者账户中的 Amazon S3 桶拥有写入权限。
+  在 RDS for SQL Server 数据库实例上只能运行任何类型的两个并发任务。
+  在给定时间只能为单个数据库运行一个复制任务。如果要复制数据库实例上多个数据库的事务日志备份，请对每个数据库使用单独的复制任务。
+  如果您复制 Amazon S3 桶中已存在的同名事务日志备份，则现有的事务日志备份将被覆盖。
+  您只能在主数据库实例上运行可访问事务日志备份的存储过程。您无法在 RDS for SQL Server 只读副本或多可用区数据库集群的辅助实例上运行这些存储过程。
+  如果在 `rds_tlog_backup_copy_to_S3` 存储过程运行时重启 RDS for SQL Server 数据库实例，则当数据库实例恢复联机时，任务将自动从头开始重新启动。重启前任务运行时已复制到 Amazon S3 桶的任何事务日志备份都将被覆盖。
+ 无法将 Microsoft SQL Server 系统数据库和 `RDSAdmin` 数据库配置为访问事务日志备份。
+  不支持复制到由 SSE-KMS 加密的桶。