将 Amazon Keyspaces 表还原到某个时间点 - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将 Amazon Keyspaces 表还原到某个时间点

Amazon Keyspaces(Apache Cassandra 兼容)时间点故障恢复 (PITR) 让您能够将 Amazon Keyspaces 表数据还原到最近 35 天中的任何时间点。本教程的第一部分介绍了如何使用 Amazon Keyspaces 控制台、Amazon Command Line Interface (Amazon CLI) 和 Cassandra 查询语言 (CQL) 将表还原到某个时间点。第二部分介绍了如何使用 Amazon CLI 和 CQL 还原已删除的表。

开始前的准备工作

您必须为用户配置相应的权限才能还原 Amazon Keyspaces 表(如果尚未执行此操作)。在 Amazon Identity and Access Management (IAM) 中,Amazon 托管式策略 AmazonKeyspacesFullAccess 包括还原 Amazon Keyspaces 表所需的权限。有关实施包含所需最低权限的策略的详细步骤,请参阅 还原表所需的权限

将表还原到某个时间点(控制台)

以下示例演示了如何使用 Amazon Keyspaces 控制台将名为 mytable 的现有表还原到某个时间点。

注意

此过程假定您已启用时间点故障恢复。要为 mytable 表启用 PITR,请按照 使用控制台启用 PITR 中的步骤操作。

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

  2. 在控制台左侧的导航窗格中,选择 Tables (表)

  3. 在表的列表中,选择 mytable 表。

  4. mytable 表的备份选项卡的时间点故障恢复部分,选择还原

  5. 对于新表名称,输入 mytable_restored

  6. 要定义还原操作的时间点,可以在两个选项之间进行选择:

    • 选择预配置的最早时间。

    • 选择指定日期和时间并输入要将新表还原到的日期和时间。

    注意

    您可以还原到最早时间和当前时间之间的任何时间点。Amazon Keyspaces 会根据所选日期和时间 (day:hour:minute:second) 将表数据还原到相应状态。

  7. 选择还原,启动还原过程。

    正在还原的表显示状态为 Restoring (正在还原)。还原过程完成后,mytable_restored 表的状态更改为 Active (活动)

    重要

    正在还原时,请勿修改或删除授予 IAM 实体(例如,用户、组或角色)执行还原的权限的 Amazon Identity and Access Management (IAM) 策略。否则,可能会出现意外行为。例如,假设您在还原表时删除了对该表的写入权限。在这种情况下,底层的 RestoreTableToPointInTime 操作将无法向该表中写入任何还原的数据。

    您只能在还原操作完成之后修改或删除权限。

使用 Amazon CLI 将表还原到某个时间点

以下过程演示如何使用 Amazon CLI 将名为 myTable 的现有表还原到某个时间点。

  1. 在第一步中,您将创建一个名为 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'
  2. 确认新表的属性并查看 PITR 的 earliestRestorableTimestamp

    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": "" } }

    您可以每隔一秒钟将活动表还原到 earliestRestorableTimestamp 对应的时间和当前时间之间的任意时间点。默认值为当前时间。

  3. 要将表还原到某个时间点,请指定 ISO 8601 格式的 restore_timestamp。您可以选择最近 35 天中的任何时间点,时间间隔为 1 秒。例如,以下命令使表还原到 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 的现有表还原到某个时间点。

注意

此过程假定您已启用时间点故障恢复。要为表启用 PITR,请按照 使用 CQL 启用 PITR 中的步骤操作。

  1. 您可以将活动表还原到 earliest_restorable_timestamp 对应的时间和当前时间之间的某个时间点。默认值为当前时间。

    要确认是否为 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" } }
  2. 将表还原到由 ISO 8601 格式的 restore_timestamp 指定的时间点。在这种情况下,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';

    有关完整的语法描述,请参阅语言参考中的 RESTORE TABLE

要验证表的还原是否成功,请查询 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。

  1. 删除您在前面教程中创建的表。

    aws keyspaces delete-table --keyspace-name 'myKeyspace' --table-name 'myTable'
  2. 使用以下命令将已删除的表还原到删除时的状态。

    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。

  1. 要确认是否为已删除表启用时间点故障恢复,请查询系统表。仅显示已启用时间点故障恢复的表。

    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" } }
  2. 使用以下示例语句将表还原到删除时的状态。

    RESTORE TABLE mykeyspace.mytable_restored FROM TABLE mykeyspace.mytable;