本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
如何 point-in-time 恢复在亚马逊 Keyspaces 中有效
本部分提供 Amazon Keyspaces 的概述。 point-in-time 恢复 (PITR) 有效。有关定价的更多信息,请参阅Amazon Keyspaces(针对 Apache Cassandra)定价
主题
启用 point-in-time 恢复(PITR)
您可以使用控制台启用 PITR,也可以以编程方式启用它。
使用控制台启用 PITR
新表的 PITR 设置可以在自定义设置选项。默认情况下,在通过控制台创建的新表上启用 PITR。
要为现有表启用 PITR,请完成以下步骤。
-
登录到Amazon Web Services Management Console,然后打开亚马逊 Keyspaces 控制台https://console.aws.amazon.com/keyspaces/home
. -
在导航窗格中,选择和。表然后选择要编辑的表。
-
在存储库的备份选项卡上,选择编辑.
-
在编辑 point-in-time 恢复设置设部分,选择启用时间点恢复.
您可以随时通过以下步骤禁用表上的 PITR。
-
登录到Amazon Web Services Management Console,然后打开亚马逊 Keyspaces 控制台https://console.aws.amazon.com/keyspaces/home
. -
在导航窗格中,选择和。表然后选择要编辑的表。
-
在存储库的备份选项卡上,选择编辑.
-
在编辑 point-in-time 恢复设置设部分中,清除启用时间点恢复”复选框。
禁用 PITR 会立即删除备份历史记录,即使您在 35 天内在表上重新启用 PITR 也是如此。
要了解如何使用控制台还原表,请参阅将表还原到某个时间点 (控制台).
使用启用 PITRAmazon CLI
您可以使用UpdateTableAPI。
使用创建新表时使用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 表的恢复设置,您可以使用以下内容:Amazon CLI命令。
aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'
要使用为现有表启用 PITRAmazon CLI中,运行以下命令。
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自定义属性。
使用 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 指定了恢复自定义属性,默认情况下将禁用时间点恢复。
要使用 CQL 为现有表启用 PITR,请运行以下 CQL 命令。
ALTER TABLEmykeyspace.mytableWITH custom_properties = {'point_in_time_recovery': {'status': 'enabled'}}
要在现有表中禁用 PITR,请运行以下 CQL 命令。
ALTER TABLEmykeyspace.mytableWITH custom_properties = {'point_in_time_recovery': {'status': 'disabled'}}
禁用 PITR 会立即删除备份历史记录,即使您在 35 天内在表上重新启用 PITR 也是如此。
有关 CQL 语言参考中的更多信息,请参阅CREATE TABLE和ALTER 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:SourceVpceIP 范围与
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 后,您可以还原到之间的任何时间点EarliestRestorableDateTime和CurrentTime. 您只能将表数据还原到启用 PITR 的时间。
如果禁用 PITR 然后再次重新启用它,则将第一个可用备份的开始时间重置为重新启用 PITR 的时间。这意味着禁用 PITR 会删除备份历史记录。
表的数据定义语言 (DDL) 操作(如架构更改)均以异步方式执行。您只能在还原的表数据中看到已完成的操作,但是如果在还原时正在进行,则可能会看到对源表执行的其他操作。有关 DDL 语句列表,请参阅亚马逊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) 策略
-
亚马逊 CloudWatch 指标和警报
-
可添加到 CQL 标签(可添加到 CQL)
RESTORE语句使用WITH TAGS)
PITR 恢复加密表
当您使用 PITR 还原表时,Amazon Keyspaces 会恢复源表的加密设置。如果表格是用Amazon 拥有的密钥(默认值),表将自动使用相同的设置恢复。如果要恢复的表是使用客户托管密钥加密的,则 Amazon Keyspace 需要可以访问相同的客户托管密钥才能恢复表数据。
您可以在恢复时更改表的加密设置。从更改Amazon 拥有的密钥对于客户管理的密钥,您需要在恢复时提供有效且可访问的客户托管密钥。
如果你想从客户管理的密钥更改为Amazon 拥有的密钥中,确认 Amazon Keyspaces 有权访问源表的客户管理密钥以使用Amazon 拥有的密钥. 有关表静态加密设置的更多信息,请参阅静态加密:它在亚马逊 Keyspaces 中的运作方.
如果由于 Amazon Keyspaces 无法访问您的客户托管密钥而删除表,则在尝试恢复表之前,您需要确保 Amazon Keyspaces 可以访问客户托管密钥。如果 Amazon Keyspace 无法访问该密钥,则无法恢复使用客户托管密钥加密的表。有关更多信息,请参阅 。密钥访问故障排除中的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。
有关更多信息,请参阅 。Cassandra 资源类型参考中的Amazon CloudFormation用户指南.