本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Amazon Keyspaces 表还原到某个时间点
Amazon Keyspaces(针对 Apache Cassandra) point-in-time 使用恢复 (PITR),您可以将 Amazon Keyspaces 表还原到最近 35 天中的任何时间点。本教程的第一部分将向您展示如何使用 Amazon Keyspaces 控制台将表还原到某个时间点。Amazon Command Line Interface(Amazon CLI) 和 Cassandra 查询语言 (CQL)。第二部分向您展示了如何使用Amazon CLI和 CQL。
开始前的准备工作
如果未完成这些任务,您必须为用户配置相应的权限,以还原 Amazon Keyspaces 表。InAmazon Identity and Access Management(IAM),Amazon管理的策略AmazonKeyspacesFullAccess包括恢复 Amazon Keyspaces 表的权限。有关实施具有最低所需权限的策略的详细步骤,请参阅还原表所需的权限.
将表还原到某个时间点 (控制台)
以下示例演示如何使用 Amazon Keyspaces 控制台还原名为的现有表。mytable到某个时间点。
此过程假设您已启用 point-in-time 恢复。启用 PITRmytable表中的步骤,请按照中的步骤使用控制台启用 PITR.
登录到Amazon Web Services Management Console,然后打开亚马逊 Keyspaces 控制台https://console.aws.amazon.com/keyspaces/home
. -
在控制台左侧的导航窗格中,选择 Tables (表)。
-
在表的列表中,选择
mytable表。 -
在存储库的备份的选项卡
mytable表格,在时间点恢复部分,选择还原. -
对于新表名称,输入
mytable_restored。 -
要定义还原操作的时间点,您可以选择两个选项:
选择预配置最早时间。
Select指定日期和时间然后输入要将新表还原到的日期和时间。
注意 您可以还原到内部的任何时间点最早时间和当前时间。Amazon Keyspaces 将您的表数据还原到基于选定的日期和时间的状态(日:time: time: min: min: second)。
选择还原以启动还原过程。
正在还原的表显示状态为 Restoring (正在还原)。还原过程完成后,
mytable_restored表的状态更改为 Active (活动)。重要 正在还原时,请勿修改或删除授予 IAM 实体(例如,用户、组或角色)执行还原的权限的 Amazon Identity and Access Management (IAM) 策略。否则,可能会出现意外行为。例如,假设您在还原表时删除了对该表的写入权限。在这种情况下,底层
RestoreTableToPointInTime操作将无法向表中写入任何还原的数据。您只能在还原操作完成之后修改或删除权限。
使用将表还原到某个时间点Amazon CLI
以下过程演示如何使用 Amazon CLI 将名为 myTable 的现有表还原到某个时间点。
在第一步中,您将创建一个名为的简单表。
myTable已启用 PITR。为了便于阅读,该命令分成单独的行。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'确认新表的属性并查看
earliestRestorableTimestamp对于 PITR。aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'此命令的输出将返回以下内容。
{ "keyspaceName": "myKeyspace", "tableName": "myTable", "resourceArn": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/myKeyspace/table/myTable", "creationTimestamp": "2022-06-20T14:34:57.049000-07:00", "status": "ACTIVE", "schemaDefinition": { "allColumns": [ { "name": "id", "type": "int" }, { "name": "date", "type": "timestamp" }, { "name": "name", "type": "text" } ], "partitionKeys": [ { "name": "id" } ], "clusteringKeys": [], "staticColumns": [] }, "capacitySpecification": { "throughputMode": "PAY_PER_REQUEST", "lastUpdateToPayPerRequestTimestamp": "2022-06-20T14:34:57.049000-07:00" }, "encryptionSpecification": { "type": "AWS_OWNED_KMS_KEY" }, "pointInTimeRecovery": { "status": "ENABLED", "earliestRestorableTimestamp": "2022-06-20T14:35:13.693000-07:00" }, "defaultTimeToLive": 0, "comment": { "message": "" } }您可以将活动表还原到任何 point-in-time 介于
earliestRestorableTimestamp以及每秒钟内的当前时间。当前时间是默认值。-
要将表还原到某个时间点,请指定
restore_timestamp采用 ISO 8601 格式。您可以在每秒间隔内选择最近 35 天中的任何时间点。例如,以下命令使表还原到EarliestRestorableDateTime。aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored' --restore-timestamp "2022-06-20 21:35:14.693"此命令的输出将返回还原表的 ARN。
{ "restoredTableARN": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/myKeyspace/table/myTable_restored" }要将表恢复到当前时间,可以省略
restore-timestamp.aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored1'"
正在还原时,请勿修改或删除授予 IAM 实体(例如,用户、组或角色)执行还原的权限的 Amazon Identity and Access Management (IAM) 策略。否则,可能会出现意外行为。例如,假设您在还原表时删除了对该表的写入权限。在这种情况下,底层 RestoreTableToPointInTime 操作将无法向表中写入任何还原的数据。
您只能在还原操作完成之后修改或删除权限。
使用 CQL 将表还原到某个时间点
以下过程演示如何使用 CQL 还原名为的现有表。mytable到某个时间点。
此过程假设您已启用 point-in-time 恢复。要在桌面上启用 PITR,请执行中的步骤使用 CQL 启用 PITR.
-
您可以将活动表还原到 point-in-time 之间
earliest_restorable_timestamp以及当前时间。当前时间是默认值。为了确认 point-in-time 已启用恢复
mytable表中,查询system_schema_mcs.tables如下所示。SELECT custom_properties FROM system_schema_mcs.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';如下面的示例输出所示,启用了时间点恢复。
custom_properties ----------------- { ..., "point_in_time_recovery": { "earliest_restorable_timestamp":"2020-06-30T19:19:21.175Z" "status":"enabled" } } -
将表还原到某个时间点,由
restore_timestamp采用 ISO 8601 格式。在这种情况下,mytable表将恢复到当前时间。您可以省略WITH restore_timestamp = ...子句。如果没有该子句,则使用当前时间戳。RESTORE TABLE mykeyspace.mytable_restored FROM TABLE mykeyspace.mytable;您还可以还原到特定时间点。您可以指定最近 35 天内的任何时间点。例如,以下命令使表还原到
EarliestRestorableDateTime。RESTORE TABLE mykeyspace.mytable_restored FROM TABLE mykeyspace.mytable WITH restore_timestamp = '2020-06-30T19:19:21.175Z';有关完整的语法说明,请参阅还原表在语言参考中。
要验证表的还原是否成功,请查询system_schema_mcs.tables以确认表格的状态。
SELECT status FROM system_schema_mcs.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable_restored'
此查询将显示以下输出。
status ------ RESTORING
正在还原的表显示状态为 Restoring (正在还原)。还原过程完成后,mytable_restored 表的状态更改为 Active (活动)。
正在还原时,请勿修改或删除授予 IAM 实体(例如,用户、组或角色)执行还原的权限的 Amazon Identity and Access Management (IAM) 策略。否则,可能会出现意外行为。例如,假设您在还原表时删除了对该表的写入权限。在这种情况下,底层 RestoreTableToPointInTime 操作将无法向表中写入任何还原的数据。
您只能在还原操作完成之后修改或删除权限。
使用恢复已删除的表Amazon CLI
以下过程演示如何使用Amazon CLI要还原名为的已删除表myTable直到删除时间。
此过程假设已在删除的表上启用了 PITR。
-
删除您在上一教程中创建的表。
aws keyspaces delete-table --keyspace-name 'myKeyspace' --table-name 'myTable' -
使用以下命令将已删除的表恢复到删除时。
aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored2'此命令的输出将返回还原表的 ARN。
{ "restoredTableARN": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/myKeyspace/table/myTable_restored2" }
使用 CQL 恢复已删除的表
以下过程演示如何使用 CQL 还原名为的已删除表。mytable直到删除时间。
此过程假设已在删除的表上启用了 PITR。
-
为了确认 point-in-time 已删除表启用恢复,请查询系统表。只有带有 point-in-time 此时将显示启用恢复。
SELECT custom_properties FROM system_schema_mcs.tables_history WHERE keyspace_name = 'mykeyspace' AND table_name = 'my_table';此查询将显示以下输出。
custom_properties ------------------ { ..., "point_in_time_recovery":{ "restorable_until_time":"2020-08-04T00:48:58.381Z", "status":"enabled" } } -
使用以下示例语句将表恢复到删除时间。
RESTORE TABLE mykeyspace.mytable_restored FROM TABLE mykeyspace.mytable;