将表从备份中恢复到 Amazon Keyspaces 中的指定时间点 - Amazon Keyspaces(Apache Cassandra 兼容)

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

将表从备份中恢复到 Amazon Keyspaces 中的指定时间点

以下部分演示如何将现有 Amazon Keyspaces 表恢复到指定的时间点。

注意

此过程假设您正在使用的表已配置为 point-in-time 恢复功能。要PITR为表启用,请参阅在 Amazon Keyspaces 中PITR为表进行配置

重要

在恢复过程中,请勿修改或删除 AWS Identity and Access Management (IAM) 授予IAM委托人(例如用户、组或角色)执行还原的权限的策略。否则,可能会出现意外行为。例如,如果您在恢复表时删除了该表的写入权限,则基础RestoreTableToPointInTime操作无法将任何已恢复的数据写入该表。

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

Console
使用控制台将表恢复到指定时间点
  1. 登录 AWS Management Console,然后在家中打开 Amazon Keyspaces 控制台。https://console.aws.amazon.com/keyspaces/

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

  3. 在表列表中,选择要恢复的表。

  4. 在该表的备份选项卡上的 P oint-in-time 恢复部分,选择恢

  5. 例如,在新的表名中,为已恢复的表输入一个新名称mytable_restored

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

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

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

    注意

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

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

    正在还原的表显示状态为 Restoring (正在还原)。恢复过程完成后,已还原表的状态将更改为 “活动”。

Cassandra Query Language (CQL)
使用将表还原到某个时间点 CQL
  1. 您可以将活动表恢复到介于当前时间 point-in-time earliest_restorable_timestamp之间。默认值为当前时间。

    要确认该表已启用 point-in-time 恢复,请查询,system_schema_mcs.tables如本示例所示。

    SELECT custom_properties FROM system_schema_mcs.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';

    P oint-in-time 恢复已启用,如以下示例输出所示。

    custom_properties ----------------- { ..., "point_in_time_recovery": { "earliest_restorable_timestamp":"2020-06-30T19:19:21.175Z" "status":"enabled" } }
    • 将表恢复到当前时间。省略该WITH restore_timestamp = ...子句时,将使用当前的时间戳。

      RESTORE TABLE mykeyspace.mytable_restored FROM TABLE mykeyspace.mytable;
    • 也可以恢复到由 ISO 8601 格式定义restore_timestamp的特定时间点。您可以指定最近 35 天内的任何时间点。例如,以下命令使表还原到 EarliestRestorableDateTime

      RESTORE TABLE mykeyspace.mytable_restored FROM TABLE mykeyspace.mytable WITH restore_timestamp = '2020-06-30T19:19:21.175Z';

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

  2. 要验证表的还原是否成功,请查询 system_schema_mcs.tables,确认表的状态。

    SELECT status FROM system_schema_mcs.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable_restored'

    该查询会显示以下输出。

    status ------ RESTORING

    正在还原的表显示状态为 Restoring (正在还原)。恢复过程完成后,表的状态变为 “活动”。

CLI
使用将表还原到某个时间点 AWS CLI
  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": "" } }
    • 要将表恢复到某个时间点,请以 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'"