适用于 Amazon 的备份和恢复 RDS - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于 Amazon 的备份和恢复 RDS

Amazon RDS 包含用于自动备份数据库的功能。Amazon RDS 会创建您的数据库实例的存储卷快照,备份整个数据库实例,而不仅仅是单个数据库。使用 AmazonRDS,您可以为自动备份建立备份窗口、创建数据库实例快照以及跨地区和账户共享和复制快照。

Amazon 为备份和恢复数据库实例RDS提供了两种不同的选项:

  • 自动备份提供数据库实例的 point-in-time恢复 (PITR)。创建新的数据库实例时,默认开启自动备份。

    Amazon RDS 会在您创建数据库实例时定义的备份窗口内对您的数据进行每日备份。您可以为自动备份配置最长 35 天的保留期。亚马逊RDS还每 5 分钟将数据库实例的事务日志上传到 Amazon S3。Amazon RDS 使用您的每日备份和数据库事务日志来恢复您的数据库实例。您可以将实例恢复到保留期内的任意一秒钟,最长可达 LatestRestorableTime(通常为最后五分钟)。

    要查找数据库实例的最新可恢复时间,请使用DescribeDBInstancesAPI调用。或者在 Amazon RDS 控制台上的 “描述” 选项卡上查看数据库。

    启动时PITR,会将事务日志与最合适的每日备份相结合,以将数据库实例恢复到请求的时间。

  • 数据库快照是用户启动的备份,可用于随心所欲地将数据库实例还原到已知状态。然后,您可以随时恢复到该状态。您可以使用 Amazon RDS 控制台或CreateDBSnapshotAPI调用来创建数据库快照。这些快照会一直保留,直到您使用控制台或DeleteDBSnapshotAPI调用将其明确删除。

RDS中的Amazon支持这两个备份选项 AWS Backup,它还提供其他功能。考虑使用 AWS Backup 为您的 Amazon RDS 数据库设置标准备份计划,如果您的特定数据库的备份计划是唯一的,则使用用户启动的实例备份选项。

Amazon RDS 禁止直接访问数据库实例使用的底层存储。这还可以防止您将数据库实例上的数据库直接导出到其本地磁盘。RDS在某些情况下,您可以使用客户端实用程序使用本机备份和还原功能。例如,您可以将 mysqldump 命令与 Amazon M RDS y SQL 数据库配合使用,将数据库导出到本地客户机器。在某些情况下,Amazon RDS 还提供了用于执行数据库原生备份和还原的增强选项。例如,Amazon RDS 提供了用于导出和导入SQL服务器RDS数据库的数据库备份的存储过程。

作为整体备份和还原方法的一部分,请务必彻底测试数据库恢复过程及其对数据库客户端的影响。

在数据库恢复期间使用DNSCNAME记录来减少对客户机的影响

使用PITR或数据库实例快照还原RDS数据库时,会创建一个带有新终端节点的新数据库实例。通过这种方式,您可以根据特定的数据库快照或时间点创建多个数据库实例。还原RDS数据库实例以替换实时RDS数据库实例时,需要注意一些特殊事项。例如,您必须确定如何将现有数据库客户端重定向到新实例,同时尽量减少中断和修改。您还必须考虑恢复数据的时间和新实例开始接收写入时的恢复时间,从而确保数据库内数据的连续性和一致性。

您可以创建指向您的数据库实例终端节点的单独DNSCNAME记录,并让您的客户端使用此DNS名称。然后,您可以将更新为指CNAME向已恢复的新终端节点,而无需更新数据库客户端。

将CNAME记录的 “存活时间” (TTL) 设置为适当的值。您指定的决定了在TTL发出另一个请求之前,DNS解析器会将记录缓存多长时间。值得注意的是,某些DNS解析器或应用程序可能不支持TTL,并且它们缓存记录的时间可能会超过。TTL对于 Amazon Route 53,如果您指定更长的值(例如 172800 秒或两天),则可以减少DNS递归解析器为获取此记录中的最新信息而必须向 Route 53 发出的呼叫次数。这可以缩短延迟并降低您的 Route 53 服务账单。有关更多信息,请参阅 Amazon Route 53 如何为您的域路由流量

应用程序和客户端操作系统也可能缓存您必须刷新或重新启动DNS的信息,才能启动新的DNS解析请求并检索更新的CNAME记录。

当您启动数据库还原并将流量转移到还原的实例时,请确认您的所有客户端都在写入还原的实例,而不是之前的实例。您的数据架构可能支持恢复数据库、更新DNS以将流量转移到已还原的实例,然后修复可能仍写入先前实例的所有数据。如果不是这种情况,则可以在更新DNSCNAME记录之前停止现有实例。然后,所有访问权限都来自您新恢复的实例。这可能会暂时导致某些可以单独处理的数据库客户端出现连接问题。为了减少对客户端的影响,可以在维护窗口内执行数据库还原。

通过使用指数回退进行重试,编写应用程序以优雅地处理数据库连接故障。这使您的应用程序能够在还原期间数据库连接不可用时进行恢复,而不会导致应用程序意外崩溃。

完成还原过程后,您可以将先前的实例保持在停止状态。或者,您可以使用安全组规则限制之前实例的流量,直到您确信不再需要该实例为止。对于逐步停用的方法,首先要限制安全组对运行中数据库的访问权限。如果不再需要实例,则可以最终将其停止。最后,拍摄数据库实例的快照并将其删除。