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

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

Amazon Keyspaces 中 point-in-time 恢复的工作原理

本节概述了 Amazon Keyspaces point-in-time 恢复 (PITR) 的工作原理。有关定价的更多信息,请参阅 Amazon Keyspaces(Apache Cassandra 兼容)定价

启用 point-in-time 恢复 (PITR)

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

使用控制台启用 PITR

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

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

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

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

  3. 备份选项卡上,选择编辑

  4. “编辑 point-in-time 恢复设置” 部分中,选择 “启用 P oint-in-time 恢复”。

您可以随时通过以下步骤禁用表的 PITR。

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

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

  3. 备份选项卡上,选择编辑

  4. “编辑 point-in-time 恢复设置” 部分中,清除 “启用 P oint-in-time 恢复” 复选框。

重要

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

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

使用 Amazon CLI 启用 PITR

您可以使用 UpdateTable API 管理表的 PITR 设置。

使用 Amazon CLI 创建新表时,必须在创建新表时明确启用 PITR。

要在创建新表时启用 PITR,可以使用以下示例 Amazon CLI 命令。为了提高可读性,该命令已分成不同的行。

aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' --point-in-time-recovery 'status=ENABLED'
注意

如果未指定 point-in-time 恢复值,则默认情况下会禁用 point-in-time恢复。

要确认表的 point-in-time 恢复设置,可以使用以下Amazon CLI命令。

aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'

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

aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=ENABLED'

要为现有表禁用 PITR,请运行以下 Amazon CLI 命令。

aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=DISABLED'
重要

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

使用 CQL 启用 PITR

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

使用 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'} }
注意

如果未指定 point-in-time 恢复自定义属性,则默认情况下会禁用 point-in-time恢复。

要使用 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 策略:

  • 具有 aws:SourceVpce 的 VPC 端点

  • 使用 aws:SourceIp 的 IP 范围

  • 具有 aws:SourceVpc 的 VPC

aws:ViaAWSService 条件键允许在任何 Amazon 服务使用主体的凭证发出请求时进行访问。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件键

以下是将源流量限制到特定 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 point-in-time 恢复 (PITR)

PITR 连续备份的时段

Amazon Keyspaces PITR 使用两个时间戳来维护表中可还原备份的可用时间范围。

  • 最早可还原时间:标记最早可还原备份的时间。最早的可还原备份最长可追溯到 35 天或启用 PITR 时(以较晚者为准)。最长备份期限为 35 天,无法修改。

  • 当前时间:最新可还原备份的时间戳为当前时间。如果在还原期间未提供时间戳,则使用当前时间。

启用 PITR 后,您可以还原到 EarliestRestorableDateTimeCurrentTime 之间的任意时间点。您只能将表数据还原到启用 PITR 的时间。

如果您禁用 PITR,然后再次将其重新启用,则系统会将第一个可用备份的开始时间重置为重新启用 PITR 的时间。这意味着,禁用 PITR 会删除您的备份历史记录。

注意

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

表不一定要处于活动状态才能还原。如果对已删除的表启用了 PITR,并且删除操作发生在备份时段内(或最近 35 天内),您还可以还原已删除的表。

注意

如果使用与先前删除的表相同的限定名称(例如 mykeyspace.mytable)创建了新表,则已删除的表将无法再还原。如果您尝试从控制台执行此操作,则系统会显示警告。

PITR 还原设置

当您使用 PITR 还原表时,Amazon Keyspaces 会根据新表中选择的时间戳 (day:hour:minute:second) 将源表的架构和数据还原到相应状态。PITR 不会覆盖现有表。

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

还原后的表的设置与源表的设置以及启动还原时的时间戳相匹配。如果要在还原期间覆盖这些设置,则可以使用 WITH custom_properties 来执行此操作。自定义属性包括以下设置:

  • 读取/写入容量模式

  • 预置的吞吐容量设置

  • PITR 设置

如果表处于预置容量模式且启用了自动缩放,则还原操作还会恢复表的自动缩放设置。您可以使用 CQL 中的autoscaling_settings参数或 autoScalingSpecification CLI 来覆盖它们。有关 auto Scaling 设置的更多信息,请参阅使用 Amazon Keyspaces 自动扩展功能自动管理吞吐容量

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

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

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

  • Amazon Identity and Access Management (IAM) 策略

  • Amazon CloudWatch 指标和警报

  • 标签(可以使用 WITH TAGS 将其添加到 CQL RESTORE 语句中)

使用 PITR 还原加密表

当您使用 PITR 还原表时,Amazon Keyspaces 会还原源表的加密设置。如果表是使用 Amazon 拥有的密钥(默认)加密的,则系统会自动以相同的设置还原表。如果您要还原的表是使用客户自主管理型密钥加密的,那么 Amazon Keyspaces 需要能够访问相同的客户自主管理型密钥才能还原表数据。

您可以在还原时更改表的加密设置。要从 Amazon 拥有的密钥更改为客户自主管理型密钥,您需要在还原时提供有效且可访问的客户自主管理型密钥。

如果您想从客户自主管理型密钥更改为 Amazon 拥有的密钥,请确认 Amazon Keyspaces 有权访问源表的客户自主管理型密钥以使用 Amazon 拥有的密钥还原表。有关表的静态加密设置的更多信息,请参阅 静态加密:它在 Amazon Keyspaces 中如何运作

注意

如果表是因为 Amazon Keyspaces 无法访问您的客户自主管理型密钥而被删除,则在尝试还原表之前,您需要确保 Amazon Keyspaces 能够访问客户自主管理型密钥。如果 Amazon Keyspaces 无权访问该密钥,则无法还原使用客户自主管理型密钥加密的表。有关更多信息,请参阅《Amazon Key Management Service Developer Guide》中的 Troubleshooting key access

使用 PITR 还原多区域表

您可以使用 PITR 还原多区域表。要使还原操作成功,必须将源表和目标表都复制到同一个 Amazon Web Services 区域。

Amazon Keyspaces 在作为密钥空间一部分的每个复制区域中恢复源表的设置。您还可以在还原操作期间覆盖设置。有关可在还原期间更改的设置的更多信息,请参阅 PITR 还原设置

有关多区域复制的更多信息,请参阅 多区域复制在 Amazon Keyspaces 中的工作原理

使用 PITR 还原表所需的时间

还原表所需的时间取决于多种因素,并且并不是始终与表的大小直接相关。

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

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

  • 具有分布良好的数据模型的大型表的还原时间可能是几个小时或更长时间。

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

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

Amazon Keyspaces PITR 以及与 Amazon 服务的集成

使用 Amazon CloudTrail 记录以下 PITR 操作,以实现持续监控和审计。

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

  • 为现有表启用或禁用 PITR。

  • 还原活动或已删除的表。

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

您可以使用 Amazon CloudFormation 执行以下 PITR 操作。

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

  • 为现有表启用或禁用 PITR。

有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的 Cassandra 资源类型参考