本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Keyspaces 中 point-in-time恢复的工作原理
本节概述了 Amazon Keyspaces point-in-time 恢复 (PITR) 的工作原理。有关定价的更多信息,请参阅 Amazon Keyspaces(Apache Cassandra 兼容)定价
主题
PITR 连续备份的时段
Amazon Keyspaces PITR 使用两个时间戳来维护表中可还原备份的可用时间范围。
-
最早可还原时间:标记最早可还原备份的时间。最早的可还原备份最长可追溯到 35 天或启用 PITR 时(以较晚者为准)。最长备份期限为 35 天,无法修改。
-
当前时间:最新可还原备份的时间戳为当前时间。如果在还原期间未提供时间戳,则使用当前时间。
启用 PITR 后,您可以还原到 EarliestRestorableDateTime
和 CurrentTime
之间的任意时间点。您只能将表数据还原到启用 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
参数或结合 CLI 使用 autoScalingSpecification
来覆盖它们。有关自动扩缩的更多信息,请参阅使用 Amazon Keyspaces 自动扩缩自动管理吞吐能力。
执行完整表还原时,还原表的所有表设置都来自还原时源表的当前设置。
例如,假设一个表的预配置的吞吐量最近下降到 50 个读取容量单位和 50 个写入容量单位。然后,您将表的状态还原到三周前的状态。表在该时间的预置吞吐量为 100 个读取容量单位和 100 个写入容量单位。在这种情况下,Amazon Keyspaces restores 将表数据还原到该时间点,但使用当前预置吞吐量设置(50 个读取容量单位和 50 个写入容量单位)。
以下设置不会还原,您必须手动为新表配置这些设置。
-
AWS Identity and Access Management (IAM) 策略
-
Amazon CloudWatch 指标和警报
-
标签(可以使用
WITH TAGS
将其添加到 CQLRESTORE
语句中)
使用 PITR 还原加密表
当您使用 PITR 还原表时,Amazon Keyspaces 会还原源表的加密设置。如果使用加密表 AWS 拥有的密钥 (默认),则会使用相同的设置自动恢复表。如果您要还原的表是使用客户自主管理型密钥加密的,那么 Amazon Keyspaces 需要能够访问相同的客户自主管理型密钥才能还原表数据。
您可以在还原时更改表的加密设置。要从客户管理的密钥更改 AWS 拥有的密钥 为客户管理的密钥,您需要在恢复时提供有效且可访问的客户托管密钥。
如果您想从客户管理的密钥更改为 AWS 拥有的密钥,请确认 Amazon Keyspaces 有权访问源表的客户托管密钥以使用恢复表。 AWS 拥有的密钥有关表的静态加密设置的更多信息,请参阅 静态加密:它在 Amazon Keyspaces 中如何运作。
注意
如果表是因为 Amazon Keyspaces 无法访问您的客户自主管理型密钥而被删除,则在尝试还原表之前,您需要确保 Amazon Keyspaces 能够访问客户自主管理型密钥。如果 Amazon Keyspaces 无权访问该密钥,则无法还原使用客户自主管理型密钥加密的表。有关更多信息,请参阅《 AWS Key Management Service 开发人员指南》中的密钥访问疑难解答。
使用 PITR 还原多区域表
您可以使用 PITR 还原多区域表。要使恢复操作成功,必须在源表的所有副本上启用 PITR,并且必须将源表和目标表都复制到同一个副本。 AWS 区域
Amazon Keyspaces 会在属于键空间的每个复制区域中还原源表的设置。您还可以在还原操作期间覆盖设置。有关可在还原期间更改的设置的更多信息,请参阅 PITR 还原设置。
有关多区域复制的更多信息,请参阅在 Amazon Keyspaces 中如何进行多区域复制。
PITR 还原用户定义类型的表 () UDTs
您可以恢复使用的表 UDTs。要使还原操作成功,引用的 UDTs 内容必须在密钥空间中存在且有效。
如果您在尝试恢复表时缺少任何必需的 UDT,Amazon Keyspaces 会尝试自动恢复 UDT 架构,然后继续恢复该表。
如果您删除并重新创建了 UDT,Amazon Keyspaces 会使用新的 UDT 架构恢复 UDT,并拒绝使用原始 UDT 架构恢复表的请求。在这种情况下,如果您希望使用旧 UDT 架构恢复表,则可以将该表恢复到新的密钥空间。删除并重新创建 UDT 时,即使重新创建的 UDT 的架构与已删除的 UDT 的架构相同,重新创建的 UDT 也被视为新的 UDT。在这种情况下,Amazon Keyspaces 会拒绝使用旧 UDT 架构恢复表的请求。
如果 UDT 丢失且 Amazon Keyspaces 尝试恢复 UDT,则如果您已达到该地区账户的最大 UDTs 数量,则尝试将失败。
有关 UDT 配额和默认值的更多信息,请参见Amazon Keyspaces 中用户定义类型 (UDTs) 的配额和默认值。有关使用的更多信息 UDTs,请参阅Amazon Keys UDTs paces 中的用户定义类型 ()。
使用 PITR 还原表所需的时间
还原表所需的时间取决于多种因素,并且并不是始终与表的大小直接相关。
以下是还原用时的一些注意事项。
-
将备份还原到新表。执行用于创建新表和启动还原流程的所有操作可能最多需要 20 分钟(即使表是空的)。
-
具有分布良好的数据模型的大型表的还原时间可能是几个小时或更长时间。
-
如果源表包含严重偏斜的数据,则还原时间可能会增加。例如,如果表的主键使用一年中的月份作为分区键,而您的所有数据均来自 12 月,那么就出现了偏斜数据。
规划灾难恢复的最佳做法是定期记录平均还原完成时间,并确定这些时间对整个恢复时间目标的影响。
Amazon Keyspaces PITR 以及与 AWS 服务的集成
使用以下 PITR 操作进行记录 AWS CloudTrail ,以实现持续监控和审计。
-
创建启用或禁用 PITR 的新表。
-
为现有表启用或禁用 PITR。
-
还原活动或已删除的表。
有关更多信息,请参阅 使用记录 Amazon Keyspaces API 调用 AWS CloudTrail。
您可以使用 AWS CloudFormation执行以下 PITR 操作。
创建启用或禁用 PITR 的新表。
为现有表启用或禁用 PITR。
有关更多信息,请参阅《AWS CloudFormation 用户指南》中的 Cassandra 资源类型参考。