本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊Keyspaces 中的point-in-time恢复工作原理
本节概述Amazon Keyspaces point-in-time 复 (PITR) 的工作原理。有关定价的更多信息,请参阅 Amazon Keyspaces sandra(适用于 Amazand
主题
启用point-in-time恢复 (PITR)
您可以使用控制台启用 PITR,也可以以编程方式启用 PITR。
使用控制台启用 PITR
可以在自定义设置选项下管理新表格的 PITR 设置。默认情况下,在通过控制台创建的新表上启用 PITR。
要为现有表启用,请完成以下步骤。
-
登录并打开 Amazon Keyspaces 控制台(https://console.aws.amazon.com/keyspaces/home
)。Amazon Web Services Management Console -
在导航窗格中,选择 Tables(表),然后选择要编辑的表。
-
在备份选项卡上,选择编辑。
-
在 “编辑point-in-time恢复设置” 部分中,选择 “启用 P oint-in-time 恢复”。
您可以随时通过以下步骤在表格上禁用 PITR。
-
登录并打开 Amazon Keyspaces 控制台(https://console.aws.amazon.com/keyspaces/home
)。Amazon Web Services Management Console -
在导航窗格中,选择 Tables(表),然后选择要编辑的表。
-
在备份选项卡上,选择编辑。
-
在 “编辑point-in-time恢复设置” 部分中,清除 “启用 P oint-in-time 恢复” 复选框。
重要
禁用 PITR 会立即删除您的备份历史记录,即使您在 35 天内在表格上重新启用 PITR 也是如此。
要了解如何使用控制台还原表,请参阅将表还原到某个时间点(控制台)。
使用启用 PITR Amazon CLI
您可以使用 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'
要使用为现有表启用 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
自定义属性管理表的 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 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 有权代表您的委托人执行还原操作。如果您的策略将传入流量限制为以下任何一项,则必须在 IAM 策略中添加aws:ViaAWSService
条件密钥:
利用进行此操作
aws:SourceVpce
IP 范围为
aws:SourceIp
具有 VPC
aws:SourceVpc
当任何Amazon服务使用委托人的凭证发出请求时,aws:ViaAWSService
条件键允许访问。有关更多信息,请参阅《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
全局条件密钥的策略示例,请参阅终端节点策略和 Amazon Keyspaces point-in-time恢复 (PITR)。
PITR 连续备份的时间窗口
Amazon Keyspaces PITR 使用两个时间戳来维持表可恢复备份的时间范围。
-
最早可恢复时间-标记最早可恢复的备份的时间。最早的可恢复备份可追溯至 35 天或启用 PITR 的时间,以较晚者为准。无法修改。无法修改。
-
当前时间-最新可恢复备份的时间戳是当前时间。如果在还原期间未提供时间戳,则使用当前时间。
启用 PITR 后,您可以还原时EarliestRestorableDateTime
。CurrentTime
您只能将表数据恢复到启用 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 指标和告警
-
标签(可以使用以下方法
WITH TAGS
添加到 CQLRESTORE
语句中)
PITR 恢复加密表
当您使用 PITR 还原表时,Amazon Keyspaces 会恢复您的源表的加密设置。如果表是使用Amazon 拥有的密钥(默认)加密的,则该表将自动使用相同的设置进行恢复。如果您要恢复的表是使用客户管理的密钥加密的,那么 Amazon Keyspaces 需要访问相同的客户管理密钥才能恢复表数据。
您可以在还原时更改表的加密设置。要从客户管理密钥更改Amazon 拥有的密钥为客户管理的密钥,您需要在恢复时提供有效且可访问的客户管理密钥。
如果您想从客户管理的密钥更改为客户管理的密钥Amazon 拥有的密钥,请确认 Amazon Keyspaces 有权访问源表的客户管理密钥,以便使用恢复表。Amazon 拥有的密钥有关表静态加密设置的更多信息,请参阅静态加密:它在 Amazon Keyspaces 中的工作原理。
注意
如果该表是因为 Amazon Keyspaces 无法访问您的客户托管密钥而被删除的,则在尝试恢复表之前,您需要确保 Amazon Keyspaces 可以访问客户管理的密钥。如果 Amazon Keyspaces 无权访问该密钥,则无法恢复使用客户管理密钥加密的表。有关更多信息,请参阅《Amazon Key Management Service开发人员指南》中的疑难解答。
多区域表的 PITR 恢复
您可以使用 PITR 恢复多区域表。要成功执行还原操作,必须将源表和目标表复制到同一个表中Amazon Web Services 区域。
Amazon Keyspaces 会恢复每个复制区域中源表的设置。您还可以在还原操作期间覆盖设置。有关恢复期间可以更改的设置的更多信息,请参阅PITR 恢复设置。
有关多区域复制的更多信息,请参阅多区域复制在 Amazon Keyspaces 中的工作原理。
使用 PITR 进行表恢复时间
恢复表所花费的时间取决于多个因素,并不总是与表的大小直接相关。
以下是恢复时间的一些注意事项。
-
将备份还原到新表。执行用于创建新表和启动还原流程的所有操作可能最多需要 20 分钟(即使表是空的)。
-
数据模型分布良好的大型表的恢复时间可能长达数小时或更长。
-
如果您的源表包含明显偏差的数据,则恢复时间可能会增加。例如,如果表的主键使用一年中的月份作为分区键,而您的所有数据均来自 12 月,那么您的数据偏差。
规划灾难恢复的最佳做法是定期记录平均还原完成时间,并确定这些时间对整个恢复时间目标的影响。
亚马逊 Keyspaces PITR 以及与服务的集成 Amazon
使用以下 PITR 操作进行记录Amazon CloudTrail,以启用持续监控和审计。
-
创建启用或禁用 PITR 的新表。
-
在现有表上启用或禁用 PITR。
-
恢复活动或已删除的表。
有关更多信息,请参阅使用 Amazon Keyspaces API 调用Amazon CloudTrail:
您可以使用Amazon CloudFormation执行以下 PITR 操作。
创建启用或禁用 PITR 的新表。
在现有表上启用或禁用 PITR。
有关更多信息,请参阅《Amazon CloudFormation用户指南》中的 Cassandra 资源类型参考。