回溯 Aurora 数据库集群 - Amazon Aurora

回溯 Aurora 数据库集群

使用 Amazon Aurora MySQL 兼容版,您可以将数据库集群回溯到特定时间,而无需从备份还原数据。

回溯概述

回溯可以将数据库集群“倒回”到您指定的时间。回溯不是备份数据库集群以使您能够还原到某个时间点的替代方法。不过,相比传统备份和还原,回溯具有以下优势:

  • 您可以轻松撤消错误。如果您错误地执行了破坏性操作,例如没有 WHERE 子句的 DELETE 操作,您可以通过尽可能减少服务中断的方式,将数据库集群回溯到执行破坏性操作之前的时间。

  • 您可以快速回溯数据库集群。将数据库集群还原到某个时间点需要启动新数据库集群,然后从备份数据或数据库集群快照来还原它,这可能需要数个小时的时间。回溯数据库集群不需要新数据库集群,可在数分钟内倒回数据库集群。

  • 您可以浏览以前的数据更改。您可以在时间点中向前和向后反复回溯数据库集群,帮助确定什么时候发生了特定数据更改。例如,您可以向后回溯数据库集群三个小时,然后向前回溯一个小时。在这种情况下,回溯时间为原始时间的两个小时之前。

注意

有关将数据库集群回溯到某个时间点的信息,请参阅备份和还原 Aurora 数据库集群的概述

回溯时段

使用回溯时,有一个目标回溯时段和一个实际回溯时段:

  • 目标回溯时段是您希望数据库集群能够回溯的时间长度。在启用回溯时,您需要指定目标回溯时段。例如,如果您希望能够将数据库集群回溯 1 天,则指定 24 小时的目标回溯时段。

  • 实际回溯时段是您可以实际回溯数据库集群的时间长度,这可能会小于目标回溯时段。实际回溯时段基于您的工作负载以及可用于存储数据库更改相关信息 (称为更改记录) 的存储。

当您在启用回溯的情况下对 Aurora 数据库集群进行更新时,会生成更改记录。Aurora 会保留目标回溯时段内的更改记录,您需要按小时支付这些记录的储存费用。目标回溯时段和数据库集群上的工作负载共同确定了您存储的更改记录数。工作负载是您在指定时间段内对数据库集群进行更改的数量。如果您的工作负载很重,会在回溯时段内存储相比工作负载较轻时更多的更改记录。

您可以将目标回溯时段看作您希望能够回溯数据库集群的最大时间长度。在很多情况下,您可以回溯自己指定的最大时间长度。不过,在一些情况下,数据库集群无法存储足够的更改记录以回溯最大时间长度,您的实际回溯时段小于目标回溯时段。通常,当数据库集群上有非常重的工作负载时,实际回溯时段小于目标回溯时段。在实际回溯时段小于目标回溯时段时,我们会向您发送通知。

为数据库集群启用了回溯时,如果您删除了存储在数据库集群中的表,Aurora 会在回溯更改记录中保留该表。通过这样做,您可以返回到删除表之前的时间。如果您的回溯时段中没有足够的空间来存储表,表最终可能会从回溯更改记录中删除。

回溯时间

Aurora 始终回溯到与数据库集群相一致的时间。这样做可以消除回溯完成时出现未提交事务的可能性。在您为回溯指定时间时,Aurora 自动选择尽可能接近的一致时间。此方法意味着已完成的回溯可能并非与您指定的时间完全一致,不过您可以使用 describe-db-cluster-backtracks AWS CLI 命令确定回溯的确切时间。有关更多信息,请参阅“检索现有回溯”。

回溯限制

以下限制适用于回溯:

  • 回溯只能用于在启用回溯功能的情况下创建的数据库集群。您无法修改数据库集群来启用回溯功能。您可以在创建新数据库集群或还原数据库集群的快照时启用回溯功能。

  • 回溯时段的限制为 72 小时。

  • 回溯会影响整个数据库集群。例如,您无法选择性回溯单个表或单个数据更新。

  • 二进制日志 (binlog) 复制不支持回溯。您必须先禁用跨区域复制,然后才能配置或使用回溯。

  • 您无法将数据库克隆回溯到该数据库克隆创建之前的时间点。不过,您可以使用原始数据库回溯到创建克隆之前的时间。有关数据库克隆的更多信息,请参阅克隆 Amazon Aurora 数据库集群卷

  • 回溯会导致短暂的数据库实例中断。您必须先停止或暂停应用程序,然后启动回溯操作,这可以确保没有新的读取或写入请求。在回溯操作期间,Aurora 暂停数据库、克隆所有打开的连接并丢弃任何未提交的读取和写入。然后等待回溯操作完成。

  • 您无法在不支持回溯的 AWS 区域中还原启用回溯的集群的跨区域快照。

  • 如果您对启用了回溯的集群执行从 Aurora MySQL 版本 2 到版本 3 的就地升级,则无法回溯到升级发生之前的某个时间点。

区域和版本可用性

回溯不适用于 Aurora PostgreSQL。

以下是 Aurora MySQL 的回溯功能支持的引擎和区域可用性。

区域 Aurora MySQL 版本 3 Aurora MySQL 版本 2
美国东部(俄亥俄州) 所有版本 所有版本
美国东部(弗吉尼亚州北部) 所有版本 所有版本
美国西部(北加利福尼亚) 所有版本 所有版本
US West(Oregon) 所有版本 所有版本
非洲(开普敦)
亚太地区(香港)
亚太地区(雅加达)
亚太地区(墨尔本)
亚太地区(孟买) 所有版本 所有版本
亚太地区(大阪) 所有版本 版本 2.07.3 及更高版本
亚太地区(首尔) 所有版本 所有版本
亚太地区(新加坡) 所有版本 所有版本
亚太地区(悉尼) 所有版本 所有版本
亚太地区(东京) 所有版本 所有版本
加拿大(中部) 所有版本 所有版本
加拿大西部(卡尔加里)
中国(北京)
中国(宁夏)
欧洲地区(法兰克福) 所有版本 所有版本
欧洲地区(爱尔兰) 所有版本 所有版本
欧洲地区(伦敦) 所有版本 所有版本
欧洲地区(米兰)
欧洲地区(巴黎) 所有版本 所有版本
欧洲(西班牙)
欧洲地区(斯德哥尔摩)
欧洲(苏黎世)
以色列(特拉维夫)
中东(巴林)
中东(阿联酋)
南美洲(圣保罗)
AWS GovCloud(美国东部)
AWS GovCloud(美国西部)

启用回溯的集群的升级注意事项

您可以将支持回溯的数据库集群从 Aurora MySQL 版本 2 升级到版本 3,因为回溯支持 Aurora MySQL 版本 3 的所有次要版本。

配置回溯

要使用回溯功能,您必须启用回溯并指定目标回溯时段。否则将禁用回溯。

对于目标回溯时段,请指定您希望能够使用回溯功能将数据库倒回的时间长度。Aurora 尝试保留足够的更改记录以支持该时段。

在创建新的数据库集群时,您可以使用控制台配置回溯。您还可以修改数据库集群,以更改启用回溯的集群的回溯窗口。如果您通过将回溯窗口设置为 0 来完全关闭集群的回溯,则无法为该集群再次启用回溯。

在创建数据库集群时使用控制台配置回溯

在创建新的 Aurora MySQL 数据库集群时,您可以选择启用回溯,并在回溯部分中指定大于零的目标回溯时段值。

要创建数据库集群,请按创建 Amazon Aurora 数据库集群中的说明操作。下图显示了回溯部分。


                    在使用控制台创建数据库集群期间启用回溯

创建新数据库集群时,Aurora 没有数据库集群的工作负载数据。因此,无法为新数据库集群具体估算成本。控制台会改为基于典型工作负载,针对指定的目标回溯时段提供典型用户成本。典型成本用于为回溯功能的成本提供一般参考。

重要

您的实际成本可能与典型成本不一样,因为实际成本基于您的数据库集群的工作负载。

在修改数据库集群时使用控制台配置回溯

您可以使用控制台修改数据库集群的回溯。

注意

目前,您只能为启用了回溯功能的数据库集群修改回溯。对于在禁用回溯功能的情况下创建的数据库集群或者如果为数据库集群禁用了回溯功能,则不会显示回溯部分。

使用控制台修改数据库集群的回溯
  1. 登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择数据库

  3. 选择要修改的集群,然后选择修改

  4. 对于目标回溯时段,修改您希望可以回溯的时间长度。限制为 72 小时。

    
                            使用控制台修改回溯

    控制台根据数据库集群过去的工作负载,显示您所指定的时间长度的预计成本:

    • 如果在数据库集群上禁用了回溯,则估计的成本基于 Amazon CloudWatch 中的数据库集群的 VolumeWriteIOPS 指标。

    • 如果以前在数据库集群上启用了回溯,则估计的成本基于 Amazon CloudWatch 中的数据库集群的 BacktrackChangeRecordsCreationRate 指标。

  5. 选择 Continue (继续)

  6. 对于修改计划,请选择下列选项之一:

    • 在下一个计划的维护时段内应用 – 等到下一个维护时段以应用目标回溯时段修改。

    • 立即应用 – 尽快应用目标回溯时段修改。

  7. 选择修改集群

在使用 create-db-cluster AWS CLI 命令创建新的 Aurora MySQL 数据库集群时,如果指定的 --backtrack-window 值大于零,则会配置回溯。--backtrack-window 值指定目标回溯时段。有关更多信息,请参阅“创建 Amazon Aurora 数据库集群”。

您还可以使用以下 --backtrack-window CLI 命令指定 AWS 值:

以下过程介绍了如何使用 AWS CLI 修改数据库集群的目标回溯时段。

使用 AWS CLI 修改数据库集群的目标回溯时段
  • 调用 modify-db-cluster AWS CLI 命令并提供以下值:

    • --db-cluster-identifier – 数据库集群的名称。

    • --backtrack-window – 您希望能够将数据库集群回溯的最大秒数。

    以下示例将目标回溯时段 sample-cluster 设置为一天 (86,400 秒)。

    对于 Linux、macOS 或 Unix:

    aws rds modify-db-cluster \ --db-cluster-identifier sample-cluster \ --backtrack-window 86400

    对于 Windows:

    aws rds modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --backtrack-window 86400
注意

目前,您只能为在启用回溯功能的情况下创建的数据库集群启用回溯。

在使用 CreateDBCluster Amazon RDS API 操作创建新的 Aurora MySQL 数据库集群时,如果指定的 BacktrackWindow 值大于零,则会配置回溯。BacktrackWindow 值针对在 DBClusterIdentifier 值中指定的数据库集群,指定目标回溯时段。有关更多信息,请参阅“创建 Amazon Aurora 数据库集群”。

您还可以使用以下 API 操作指定 BacktrackWindow 值:

注意

目前,您只能为在启用回溯功能的情况下创建的数据库集群启用回溯。

执行回溯

您可以将数据库集群回溯到指定的回溯时间戳。如果回溯时间戳不早于最早的可回溯时间,并且也不在未来,则数据库集群会回溯到该时间戳。

否则,通常将出错。此外,如果您尝试回溯启用了二进制日志记录的数据库集群,除非您选择了强制执行回溯,否则通常会出错。执行强制回溯可能会干扰使用二进制日志记录的其他操作。

重要

回溯不会为所执行的更改生成二进制日志条目。如果您为数据库集群启用了二进制日志记录,则回溯可能会与您的二进制日志实施不兼容。

注意

对于数据库克隆,在创建克隆后,您无法将数据库集群回溯到创建克隆之前的日期和时间。有关数据库克隆的更多信息,请参阅克隆 Amazon Aurora 数据库集群卷

以下过程介绍了如何使用控制台为数据库集群的执行回溯操作。

使用控制台执行回溯操作
  1. 登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择实例

  3. 选择要回溯的数据库集群的主实例。

  4. 对于 Actions (操作),选择 Backtrack DB cluster (回溯数据库集群)

  5. Backtrack DB cluster (回溯数据库集群) 页上,输入要将数据库集群回溯到的回溯时间戳。

    
                            回溯数据库集群
  6. 选择回溯数据库集群

以下过程介绍了如何使用 AWS CLI 回溯数据库集群。

使用 AWS CLI 回溯数据库集群
  • 调用 backtrack-db-cluster AWS CLI 命令并提供以下值:

    • --db-cluster-identifier – 数据库集群的名称。

    • --backtrack-to – 将数据库集群回溯到的回溯时间戳,这是使用 ISO 8601 格式指定的。

    以下示例将数据库集群 sample-cluster 回溯到 2018 年 3 月 19 日上午 10 点。

    对于 Linux、macOS 或 Unix:

    aws rds backtrack-db-cluster \ --db-cluster-identifier sample-cluster \ --backtrack-to 2018-03-19T10:00:00+00:00

    对于 Windows:

    aws rds backtrack-db-cluster ^ --db-cluster-identifier sample-cluster ^ --backtrack-to 2018-03-19T10:00:00+00:00

要使用 Amazon RDS API 回溯数据库集群,请使用 BacktrackDBCluster 操作。该操作将在 DBClusterIdentifier 值中指定的数据库集群回溯到指定的时间。

监控回溯

您可以查看回溯信息和监控数据库集群的回溯指标。

使用控制台查看回溯信息和监控回溯指标
  1. 登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择数据库

  3. 选择数据库集群名称以显示其相关信息。

    回溯信息位于回溯部分中。

    
                            数据库集群的回溯详细信息

    启用了回溯时,以下信息可用:

    • 目标时段 – 当前为目标回溯时段指定的时间长度。目标回溯时段是在有足够的存储时您可以回溯的最长时间。

    • 实际时段 – 您可以实际回溯的时间长度,这可能会小于目标回溯时段。实际回溯时段基于您的工作负载以及可用于保留回溯更改记录的存储。

    • 最早的回溯时间 – 可以将数据库集群回溯到的最早时间。您无法将数据库集群回溯到显示的时间之前的时间。

  4. 执行以下操作可查看数据库集群的回溯指标:

    1. 在导航窗格中,选择实例

    2. 选择数据库集群的主实例以显示其详细信息。

    3. CloudWatch 部分中,在 CloudWatch 框中键入Backtrack以仅显示回溯指标。

      
                                回溯指标

      显示以下指标:

      • 回溯更改记录创建速率(计数)– 该指标显示在 5 分钟的时间内为数据库集群创建的回溯更改记录数。您可以使用该指标估算目标回溯时段的时间成本。

      • [已计费] 存储的回溯更改记录(计数)– 该指标显示数据库集群使用的实际回溯更改记录数。

      • 实际回溯时段(分钟)– 该指标显示在目标回溯时段和实际回溯时段之间是否存在差异。例如,如果您的目标回溯时段为 2 小时 (120 分钟),并且该指标显示实际回溯时段为 100 分钟,则实际回溯时段小于目标回溯时段。

      • 回溯时段提醒(计数)– 该指标显示在给定时间段内实际回溯时段小于目标回溯时段的频率。

      注意

      以下指标可能滞后于当前时间:

      • 回溯更改记录创建速率 (计数)

      • [已计费] 存储的回溯更改记录 (计数)

以下过程介绍了如何使用 AWS CLI 查看数据库集群的回溯信息。

使用 AWS CLI 查看数据库集群的回溯信息
  • 调用 describe-db-clusters AWS CLI 命令并提供以下值:

    • --db-cluster-identifier – 数据库集群的名称。

    以下示例列出 sample-cluster 的回溯信息。

    对于 Linux、macOS 或 Unix:

    aws rds describe-db-clusters \ --db-cluster-identifier sample-cluster

    对于 Windows:

    aws rds describe-db-clusters ^ --db-cluster-identifier sample-cluster

要使用 Amazon RDS API 查看数据库集群的回溯信息,请使用 DescribeDBClusters 操作。该操作返回在 DBClusterIdentifier 值中指定的数据库集群的回溯信息。

使用控制台订阅回溯事件

以下过程介绍了如何使用控制台运行订阅回溯事件。在您的实际回溯时段小于目标回溯时段时,该事件向您发送电子邮件或文本通知。

使用控制台查看回溯信息
  1. 登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择事件订阅

  3. 选择创建事件订阅

  4. 名称框中,键入事件订阅的名称,然后确保为已启用选择了

  5. 目标部分中,选择新电子邮件主题

  6. 对于主题名称,键入主题的名称,对于使用以下收件人,键入接收通知的电子邮件地址或电话号码。

  7. 部分中,为源类型选择实例

  8. 对于要包含的实例,选择选择特定实例,然后选择您的数据库实例。

  9. 对于要包含的事件类别,选择选择特定事件类别,然后选择回溯

    您的页面应类似于以下页面。

    
                        回溯事件订阅
  10. 选择创建

检索现有回溯

您可以检索有关数据库集群现有回溯的信息。此信息包含回溯的唯一标识符、可以来回回溯的日期和时间、请求回溯的日期和时间以及回溯的当前状态。

注意

目前不能使用控制台检索现有回溯。

以下过程介绍了如何使用 AWS CLI 检索数据库集群的现有回溯。

使用 AWS CLI 检索现有回溯
  • 调用 describe-db-cluster-backtracks AWS CLI 命令并提供以下值:

    • --db-cluster-identifier – 数据库集群的名称。

    以下示例检索 sample-cluster 的现有回溯。

    对于 Linux、macOS 或 Unix:

    aws rds describe-db-cluster-backtracks \ --db-cluster-identifier sample-cluster

    对于 Windows:

    aws rds describe-db-cluster-backtracks ^ --db-cluster-identifier sample-cluster

要使用 Amazon RDS API 检索有关数据库集群回溯的信息,请使用 DescribeDBClusterBacktracks 操作。该操作返回在 DBClusterIdentifier 值中指定的数据库集群的回溯相关信息。

禁用数据库集群的回溯

您可以禁用数据库集群的回溯功能。

您可以使用控制台禁用数据库集群的回溯。完全关闭集群的回溯后,则无法为该集群再次启用回溯。

使用控制台为数据库集群禁用回溯功能
  1. 登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择数据库

  3. 选择要修改的集群,然后选择修改

  4. 回溯部分中,选择禁用回溯

  5. 选择 Continue (继续)

  6. 对于修改计划,请选择下列选项之一:

    • 在下一个计划的维护时段内应用 – 等到下一个维护时段以应用修改。

    • 立即应用 – 尽快应用修改。

  7. 选择 Modify Cluster

您可以使用 AWS CLI 将目标回溯时段设置为 0(零),以便为数据库集群禁用回溯功能。完全关闭集群的回溯后,则无法为该集群再次启用回溯。

使用 AWS CLI 修改数据库集群的目标回溯时段
  • 调用 modify-db-cluster AWS CLI 命令并提供以下值:

    • --db-cluster-identifier – 数据库集群的名称。

    • --backtrack-window – 指定 0 以关闭回溯。

    以下示例通过将 sample-cluster 设置为 --backtrack-window,禁用 0 的回溯功能。

    对于 Linux、macOS 或 Unix:

    aws rds modify-db-cluster \ --db-cluster-identifier sample-cluster \ --backtrack-window 0

    对于 Windows:

    aws rds modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --backtrack-window 0

要使用 Amazon RDS API 为数据库集群禁用回溯功能,请使用 ModifyDBCluster 操作。将 BacktrackWindow 值设置为 0(零),然后在 DBClusterIdentifier 值中指定数据库集群。完全关闭集群的回溯后,则无法为该集群再次启用回溯。