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

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

将 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.

  1. 登录到Amazon Web Services Management Console,然后打开亚马逊 Keyspaces 控制台https://console.aws.amazon.com/keyspaces/home.

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

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

  4. 在存储库的备份的选项卡mytable表格,在时间点恢复部分,选择还原.

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

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

    • 选择预配置最早时间。

    • Select指定日期和时间然后输入要将新表还原到的日期和时间。

    注意

    您可以还原到内部的任何时间点最早时间和当前时间。Amazon Keyspaces 将您的表数据还原到基于选定的日期和时间的状态(日:time: time: min: min: 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. 确认新表的属性并查看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以及每秒钟内的当前时间。当前时间是默认值。

  3. 要将表还原到某个时间点,请指定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.

  1. 您可以将活动表还原到 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" } }
  2. 将表还原到某个时间点,由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。

  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. 为了确认 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" } }
  2. 使用以下示例语句将表恢复到删除时间。

    RESTORE TABLE mykeyspace.mytable_restored FROM TABLE mykeyspace.mytable;