Amazon Keyspaces 中时间点恢复的工作原理 - Amazon Keyspaces(针对 Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon Keyspaces 中时间点恢复的工作原理

本节概述 Amazon Keyspaces 时间点恢复 (PITR) 的工作原理。有关定价的更多信息,请参阅Amazon Keyspaces(针对 Apache Cassandra)定价.

启用时间点恢复 (PITR)

您可以使用控制台启用 PITR,或以编程方式启用 PITR。

使用控制台启用 PITR

新表的 PITR 设置可以在自定义设置选项。默认情况下,在通过控制台创建的新表上启用 PITR。

要为现有表启用 PITR,请完成以下步骤。

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Keyspaces 控制台,在https://console.aws.amazon.com/keyspaces/home.

  2. 在导航窗格中,选择,然后选择要编辑的表。

  3. 在存储库的备份选项卡上,选择编辑.

  4. 编辑时间点恢复设置部分中,选择启用时间点恢复.

您可以随时使用以下步骤禁用表上的 PITR。

  1. 登录到Amazon Web Services Management Console,然后打开 Amazon Keyspaces 控制台,在https://console.aws.amazon.com/keyspaces/home.

  2. 在导航窗格中,选择,然后选择要编辑的表。

  3. 在存储库的备份选项卡上,选择编辑.

  4. 编辑时间点恢复设置部分中,清除启用时间点恢复”复选框。

重要

禁用 PITR 会立即删除备份历史记录,即使您在 35 天内重新启用表中的 PITR 也是如此。

要了解如何使用控制台还原表,请参阅使表还原到某个时间点(控制台).

以编程方式启用 PITR

您可以管理表的 PITR 设置,方法是使用point_in_time_recovery自定义属性。

使用 CQL 创建新表时,必须在创建新表时显式启用 PITR。

要在创建新表时启用 PITR,可以使用以下 CQL 命令作为示例。

CREATE TABLE "my_keyspace1"."my_table1"( "id" int, "name" ascii, "date" timestamp, PRIMARY KEY("id")) WITH CUSTOM_PROPERTIES = { 'capacity_mode':{'throughput_mode':'PAY_PER_REQUEST'}, 'point_in_time_recovery':{'status':'enabled'} }
注意

如果未指定时间点恢复自定义属性,默认情况下将禁用时间点恢复。

要使用 CQL 为现有表启用 PITR,请运行以下 CQL 命令。

ALTER TABLE mykeyspace.mytable WITH custom_properties = {'point_in_time_recovery': {'status': 'enabled'}}

要在现有表上禁用 PITR,请运行以下 CQL 命令。

ALTER TABLE mykeyspace.mytable WITH custom_properties = {'point_in_time_recovery': {'status': 'disabled'}}
重要

禁用 PITR 会立即删除备份历史记录,即使您在 35 天内重新启用表中的 PITR 也是如此。

有关 CQL 语言参考中的详细信息,请参阅CREATE TABLEALTER TABLE. 要了解如何使用 CQL 还原表,请参阅使用 CQL 将表还原到某个时间点.

恢复表所需的权限

要成功还原表,IAM 用户或角色需要以下最低权限:

  • cassandra:Restore— 要还原的目标表需要执行还原操作。

  • cassandra:Select— 从源表中进行读取时需要选择操作。

  • cassandra:TagResource— 标记操作是可选的,只有在恢复操作添加标签时才需要执行。

下面是一个向用户授予最低所需权限的示例策略,以便还原密钥空间中的表mykeyspace.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Restore", "cassandra:Select" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/*", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ] }

根据其他选定功能,可能需要额外的权限来恢复表。例如,如果源表使用客户管理的密钥进行静态加密,则 Amazon Keyspaces 必须具有访问源表的客户管理密钥的权限才能成功还原表。有关更多信息,请参阅PITR 恢复加密表

如果您将 IAM 策略与条件键将传入流量限制到特定来源,则必须确保 Amazon Keyspaces 有权代表您的委托人执行恢复操作。您必须添加aws:ViaAWSService条件密钥添加到您的 IAM 策略中,如果您的策略将传入流量限制为以下任何一项:

  • 带有的 VPC 终端节点aws:SourceVpce

  • 带有 IP 范围aws:SourceIp

  • 具有aws:SourceVpc

这些区域有:aws:ViaAWSService条件键允许访问Amazon服务使用委托人的凭证发出请求。有关更多信息,请参阅 。IAM JSON 策略元素:条件键中的IAM 用户指南.

以下是一个策略示例,该策略将源流量限制到特定 IP 地址,并允许 Amazon Keyspaces 代表委托人还原表。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"CassandraAccessForCustomIp", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"false" }, "ForAnyValue:IpAddress":{ "aws:SourceIp":[ "123.45.167.89" ] } } }, { "Sid":"CassandraAccessForAwsService", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"true" } } } ] }

有关使用aws:ViaAWSService全局条件键,请参阅VPC 终端节点策略和 Amazon Keyspaces 时间点恢复 (PITR).

PITR 连续备份的时间窗口

Amazon Keyspaces PITR 使用两个时间戳来维护可用于表的可恢复备份的时间范围。

  • 最早的可还原时间 — 标记最早可还原备份的时间。最早的可还原备份最长可备份 35 天,或者在启用 PITR 时(以较近的时间为准)。无法修改 35 天的最长备份窗口。

  • 当前时间 — 最新可还原备份的时间戳是当前时间。如果在还原过程中未提供任何时间戳,则使用当前时间。

当 PITR 启用时,可以还原到EarliestRestorableDateTimeCurrentTime. 只能将表数据还原到启用 PITR 的时间点。

如果禁用 PITR 并稍后再次重新启用它,则可以将第一个可用备份的开始时间重置为重新启用 PITR 的时间。这意味着禁用 PITR 会擦除备份历史记录。

注意

对表进行数据定义语言 (DDL) 操作(如模式更改)是异步执行的。您只能查看已恢复的表数据中已完成的操作,但是如果在恢复时正在执行这些操作,则可能会看到源表上的其他操作。有关 DDL 语句的列表,请参阅Amazon Keyspaces 中的 DDL 语句(数据定义语言).

表不必处于活动状态即可恢复。如果在已删除的表上启用了 PITR,并且删除发生在备份窗口内(或在过去 35 天内),您也可以还原已删除的表。

注意

如果创建的新表与先前删除的表具有相同的限定名称(例如 mykeyspace.mytable),则删除的表将不再可恢复。如果尝试从控制台执行此操作,则会显示警告。

PITR 恢复设置

当您使用 PITR 还原表时,Amazon Keyspaces 会根据选定的时间戳(day:hour:minute:second)添加到新表。PITR 不会覆盖现有表。

除了表的架构和数据之外,PITR 还原custom_properties从源表中进行。表的数据是根据最早还原时间和当前时间之间的选定时间戳进行恢复的,与此不同,自定义属性始终基于截至当前时间的表的设置恢复。

还原表的设置将源表的设置与启动还原时的时间戳相匹配。如果要在还原期间覆盖这些设置,可以使用WITH custom_properties. 自定义属性包括以下设置:

  • 读/写容量模式

  • 预配置吞吐量容量设置

  • PITR 设置

执行完整表还原时,还原表的所有表设置都来自还原时源表的当前设置。

例如,假设一个表的预配置的吞吐量最近下降到 50 个读取容量单位和 50 个写入容量单位。然后,您将表的状态恢复到三周前。目前,其预配置吞吐量设置为 100 个读取容量单位和 100 个写入容量单位。在此情况下,Amazon Keyspaces 将表数据还原到该时间点,但使用当前预配置的吞吐量设置(50 个读取容量单位和 50 个写入容量单位)。

以下设置不会恢复,您必须为新表手动配置这些设置。

  • 自动扩展策略(适用于使用预配置容量模式的表)

  • Amazon Identity and Access Management (IAM) 策略

  • Amazon CloudWatch 指标和警报

  • 标签(可添加到 CQLRESTORE语句使用WITH TAGS

PITR 恢复加密表

当您使用 PITR 还原表时,Amazon Keyspaces 将恢复源表的加密设置。如果表使用 Amazon 拥有的密钥 (默认值),则会使用相同的设置自动还原表。如果要恢复的表是使用客户托管密钥加密的,则 Amazon Keyspace 需要访问相同的客户管理密钥才能恢复表数据。

您可以在恢复时更改表的加密设置。要从 Amazon 拥有的密钥 添加到客户管理的密钥,则需要在恢复时提供有效且可访问的客户管理密钥。

如果您想从客户管理的密钥更改为 Amazon 拥有的密钥 ,请确认 Amazon Keyspaces 可以访问源表的客户管理密钥,以使用 Amazon 拥有的密钥 . 有关表的静态加密设置的更多信息,请参阅静态加密:它在亚马逊 Keyspaces 中的工作原理.

注意

如果由于 Amazon Keyspaces 无法访问您的客户管理密钥而删除该表,则在尝试恢复表之前,您需要确保 Amazon Keyspace 可以访问客户管理的密钥。如果 Amazon Keyspaces 无权访问该密钥,则无法恢复使用客户管理密钥加密的表。有关更多信息,请参阅 。密钥访问故障排除中的Amazon Key Management Service开发人员指南 的第一个版本。

使用 PITR 表还原时间

还原表所用的时间基于多个因素,并不总是直接与表的大小相关。

以下是还原用时的一些注意事项。

  • 将备份还原到新表。执行用于创建新表和启动还原流程的所有操作可能最多需要 20 分钟(即使表是空的)。

  • 对于具有分布良好的数据模型的大型表,还原时间可能会超过几个小时或更长。

  • 如果您的源表中包含的数据严重倾斜,则还原用时可能会增加。例如,如果表的主键使用一年中的月份作为分区键,而您的所有数据均来自 12 月,那么就出现了倾斜数据。

规划灾难恢复的最佳做法是定期记录平均还原完成时间,并确定这些时间对整个恢复时间目标的影响。

亚马逊 Keyspaces PITR 以及与Amazon服务

以下 PITR 操作使用Amazon CloudTrail以启用持续监控和审计。

  • 创建启用或禁用 PITR 的新表。

  • 在现有表上启用或禁用 PITR。

  • 恢复活动或已删除的表。

有关更多信息,请参阅使用记录 Amazon Keyspaces API 调用Amazon CloudTrail

您可以使用以下 PITR 操作Amazon CloudFormation.

  • 创建启用或禁用 PITR 的新表。

  • 在现有表上启用或禁用 PITR。

有关更多信息,请参阅 。卡桑德拉资源类型参考中的Amazon CloudFormation用户指南.