管理备份

本页面介绍了 Bigtable 备份操作,并说明了如何备份表并从表中恢复表。在阅读本页内容之前,您应该先熟悉备份

您可以通过以下命令使用 Bigtable 备份:

  • Google Cloud 控制台。
  • Google Cloud CLI。
  • Cloud Bigtable 客户端库

您还可以直接访问 API,但我们强烈建议,只有在需要使用 Cloud Bigtable 客户端库不支持的语言时才这样做。

准备工作

确保您或您正在使用的用户账号拥有所需的操作权限

如果您计划使用 gcloud CLI,请安装适用于 Bigtable 的 gcloud CLI

使用自动备份

您可以在创建或更新表时使用 gcloud CLI 启用自动备份。无论是手动创建备份还是通过自动备份创建备份,删除更新复制恢复备份的步骤都是相同的。

在预览版期间,如果您计划启用自动备份,请考虑以下事项:

  • 如果将集群添加到包含已启用自动备份的表的实例,则系统不会在添加的集群上创建每日备份。如需对所有集群(包括新添加的集群)创建每日备份,请停用表的自动备份,然后重新启用自动备份。
  • 如果启用了自动备份的表被删除,随后又恢复了删除,则您需要在恢复的表上重新启用自动备份。
  • 恢复表的自动备份并不会为已恢复的表自动启用自动备份。您需要手动启用自动备份。

启用自动备份

如需为表启用自动备份,请运行 gcloud bigtable instances tables update 命令。如需详细了解如何在创建表时启用自动备份,请参阅创建表

为表启用自动备份政策后,更新后的配置最多可能需要 1 小时才能生效。

gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--enable-automated-backup

替换以下内容:

  • TABLE_ID:要备份的表的 ID。
  • INSTANCE_ID:实例的永久性标识符。
  1. 如果您不知道实例 ID,请使用 bigtable instances list 命令查看项目的实例列表:

      gcloud bigtable instances list
    
  2. 查看表列表,确认要备份的表的 ID。

        gcloud bigtable instances tables list --instances=INSTANCE_ID
    

作为自动备份的一部分创建的备份会分配以 auto 开头的 ID。例如,ID 为 my-table 的表具有类似 auto.my-table.c7x3.20230220-1455 的自动备份 ID,其中 my-table 是被截断的表 ID,c7x3 是唯一哈希 ID,20230220-1455 是采用世界协调时间 (UTC) 格式的日期和时间。

停用自动备份

如需为现有表停用自动备份,请运行 gcloud bigtable instances tables update 命令。

为表停用自动备份政策后,更新后的配置最多可能需要 1 小时才能生效。首次备份最多可能需要 24 小时才能使用。

gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--disable-automated-backup

替换以下内容:

  • TABLE_ID:表的 ID。
  • INSTANCE_ID:实例的永久性标识符。

查看自动备份政策

如需查看表的自动备份政策,请运行 gcloud bigtable instances tables describe 命令。

gcloud bigtable instances tables describe TABLE_ID \
--instance=INSTANCE_ID

替换以下内容:

  • TABLE_ID:表的 ID。
  • INSTANCE_ID:实例的永久性标识符。

输出类似于以下内容:

automatedBackupPolicy:
  retentionPeriod: 3d
  frequency: 24h
columnFamilies:
  my-family: {}
createTime: '2023-02-07T20:10:55.613546Z'
granularity: MILLIS
name: projects/my-project/instances/my-instance/tables/my-table
updateTime: '2023-02-07T20:10:55.613546Z'

请注意以下几点:

  • 如果表未启用自动备份,则 automatedBackupPolicy 字段缺失。
  • retentionPeriod 指示自动创建的备份的保留期限。备份的保留期限最长可以修改为自备份创建之时起 90 天。如需更新备份保留期限,请参阅修改备份

创建备份

控制台

  1. 转到 Google Cloud 控制台中的 Bigtable 实例页面。

    打开实例列表

  2. 点击包含要备份的表的实例。

  3. 在左侧导航窗格中,点击

  4. 点击要备份的表所对应的创建备份

  5. 如果您使用的是复制功能,请使用下拉菜单选择应存储备份的集群的集群 ID。(如果在页面上点击了集群 ID(而非实例 ID)旁边的创建备份,则系统会预先选择相应集群。)

  6. 为备份输入唯一 ID。

  7. 设置到期日期。

  8. 点击创建

    此时,控制台会显示经过过滤的备份页面,以显示备份及其详细信息。

  9. 点击活动以查看备份的状态。

    备份完成后,“状态”列会显示备份完成

gcloud

对于所有命令,请用实际值替换以下内容:

  • INSTANCE_ID:实例的永久性标识符。
  • CLUSTER_ID:集群的永久性标识符。
  • TABLE_ID:要备份的表的 ID。
  • BACKUP_ID:您分配给备份的 ID。
  • EXPIRATION_DATE:未来 90 天或更短的日期,格式为“Zulu”UTC 时间戳,精确到纳秒。

    示例:2022-10-02T15:01:23.045123456Z

  • RETENTION_PERIOD:最长 90 天的期限,以数字加上 mhd 单位(分钟、小时或天)表示。

    示例36h89d

  1. 如果您不知道实例 ID,请使用 bigtable instances list 命令查看项目的实例列表:

    gcloud bigtable instances list
    
  2. 查看包含要备份的表的实例的备份列表,以便选择尚未在目标集群上使用的备份 ID。

    gcloud bigtable backups list --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID
    
  3. 查看表列表,确认要备份的表的 ID。

    gcloud bigtable instances tables list --instances=INSTANCE_ID
    
  4. 运行 gcloud bigtable instancesbackup create 命令以根据表创建备份,并提供过期日期最长 90 天的保留期限。

    gcloud bigtable backups create BACKUP_ID --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID \
      --table=TABLE_ID \
      --async /
      --expiration-date=EXPIRATION_DATE \
      --retention-period=RETENTION_PERIOD
    

    --async 标志是可选的。如果希望终端在操作完成之前返回操作 ID,请使用此 ID。如果想要检查操作的状态,这将非常有用。

  5. 查看备份列表,看看备份是否已创建。

    gcloud bigtable backups list --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID
    
  6. 如果备份未列出,请检查操作状态

    状态为 Ready 表示备份已完成。

使用备份进行恢复

控制台

您无法使用 Google Cloud 控制台将内容恢复到其他项目。如果需要这样做,请改用 gcloud CLI。

  1. 转到 Google Cloud 控制台中的 Bigtable 实例页面。

    打开实例列表

  2. 点击包含您要恢复的备份的实例。

  3. 在左侧导航窗格中,点击备份

  4. 针对您要恢复的备份,点击恢复

  5. 选择要恢复到的实例。

    因存储空间不足而无法存储新表的实例不可用。如果您没有在某个实例中创建表的权限,则该实例不可用。如需了解详情,请将鼠标悬停在 图标上。

    如果您从受 CMEK 保护的备份进行恢复,则目标实例也必须受 CMEK 保护。

    您无法使用 Google Cloud 控制台恢复到其他项目。如果需要这样做,请改用 gcloud CLI。

  6. 为要从备份创建的表输入唯一 ID。 您以后无法更改此 ID。

  7. 点击恢复

    控制台会显示经过过滤的页面以显示新表。

    控制台显示每个集群的恢复状态。当所有集群的状态列显示就绪时,该表已恢复并复制到实例中的所有集群。

gcloud

对于所有命令,请用实际值替换以下内容:

  • PROJECT_ID_SOURCE:要从中恢复的备份所属项目的 ID。
  • INSTANCE_ID_SOURCE:源实例的永久 ID。
  • PROJECT_ID_DESTINATION:您要恢复到的项目的 ID。此标志是可选标志。如果您未指定此选项,则备份将恢复到创建它的同一实例中的新表。
  • INSTANCE_ID_DESTINATION:目标实例的永久 ID。
  • CLUSTER_ID:集群的永久性标识符。
  • BACKUP_ID:要从中恢复的备份的 ID。
  • TABLE_ID_NEW:新表的 ID。
  1. 如果您不知道实例 ID,请使用 bigtable instances list 命令查看项目的实例列表:

    gcloud bigtable instances list
    
  2. 查看包含备份的实例的备份列表,以验证备份是否存在。

    gcloud bigtable backups list --instance=INSTANCE_ID_SOURCE \
      --cluster=CLUSTER_ID_SOURCE
    
  3. 查看目标实例中表的列表,以便为尚未使用的新表选择 ID。

    gcloud bigtable instances tables list --instances=INSTANCE_ID_DESTINATION
    
  4. 您可以运行 gcloud bigtable instances table delete 命令以从备份恢复到新表。

    gcloud bigtable instances tables restore \
    --source=projects/PROJECT_ID_SOURCE/instances/INSTANCE_ID_SOURCE/clusters/CLUSTER_ID/backups/BACKUP_ID \
    --async \
    --destination=TABLE_ID_NEW \
    --destination-instance=INSTANCE_ID_DESTINATION \
    --project=PROJECT_ID_DESTINATION
    

    --async 标志是可选的。如果希望终端在操作完成之前返回操作 ID,请使用此 ID。如果想要检查操作的状态,这将非常有用。

  5. 查看表列表,看看表是否已创建。

    gcloud bigtable instances tables list --instances=INSTANCE_ID_DESTINATION
    
  6. 如果备份未列出,请检查操作状态

创建备份的副本

控制台

您无法使用控制台在其他项目中创建备份的副本。如果需要这样做,请改用 gcloud CLI。

  1. 转到 Google Cloud 控制台中的 Bigtable 实例页面。

    打开实例列表

  2. 点击包含您要复制的备份的实例。

  3. 在左侧导航窗格中,点击备份

  4. 对要复制的备份,展开恢复旁边的“更多”菜单,然后点击复制

  5. 对要创建其副本的备份,点击复制

    如果该备份本身已是另一个备份的副本,则复制操作不可用。

  6. 选择目标实例。

    您无法使用控制台在其他项目中创建备份的副本。如果需要这样做,请改用 gcloud CLI。

    因存储空间不足而无法存储备份副本的实例不可用。如果您没有在某个实例中创建备份的权限,则该实例不可用。将指针悬停在 图标上可了解详情。

    如果您要创建受 CMEK 保护的备份的副本,则目标实例也必须受 CMEK 保护。

  7. 选择目标集群。

    与任何备份一样,一个备份副本仅存储在实例中的一个集群上,即使该实例使用复制功能也是如此。

  8. 为要通过备份创建的副本输入一个唯一的 ID。您以后无法更改此 ID。

  9. 设置备份副本的到期时间,即提供一个时间值,并从下拉菜单中选择一个单位

  10. 点击复制

  11. 如需查看该副本,请点击查看副本

    控制台会显示目标实例经过过滤的备份页面,以显示刚刚创建的备份副本。如果状态列显示就绪,则表示副本已创建完成,可对其进行后续操作。

gcloud

对于所有命令,请用实际值替换以下内容:

  • PROJECT_ID_SOURCE:包含要复制的备份的项目。
  • INSTANCE_ID_SOURCE:源实例的永久 ID。
  • CLUSTER_ID_SOURCE:用来存储源备份的集群的 ID。
  • BACKUP_ID_SOURCE:要复制的备份的 ID。
  • PROJECT_ID_DESTINATION:要在其中存放副本的项目。
  • INSTANCE_ID_DESTINATION:目标实例的永久 ID。
  • CLUSTER_ID_DESTINATION:您要存储副本的目标实例中集群的 ID。
  • BACKUP_ID_DESTINATION:您为备份副本分配的 ID。
  • RETENTION_PERIOD:备份副本的存留时间,以数字和单位(d 或 h)表示。例如,5d 表示 5 天,15h 表示 15 小时。可以使用该属性,也可以使用到期日期属性。
  • EXPIRATION_DATE:备份副本到期的日期和时间,格式为 2022-09-01T10:00:00.0Z
  1. 如果您不知道实例 ID,请使用 bigtable instances list 命令查看项目的实例列表:

    gcloud bigtable instances list
    
  2. 查看包含该备份的源实例的备份列表,以验证要复制的备份是否存在。

    gcloud bigtable backups list --instance=INSTANCE_ID_SOURCE \
    --cluster=CLUSTER_ID_SOURCE
    
  3. 查看目标实例中备份的列表,以便为尚未使用的副本选择 ID。

    gcloud bigtable backups list --instances=DESTINATION_INSTANCE
    
  4. 运行 gcloud bigtable instances 备份副本命令以创建备份副本。

    gcloud bigtable backups copy \
      --source-project=PROJECT_ID_SOURCE \
      --source-instance=INSTANCE_ID_SOURCE \
      --source-cluster=CLUSTER_ID_SOURCE \
      --source-backup=BACKUP_ID_SOURCE \
      --destination-project=PROJECT_ID_DESTINATION \
      --destination-instance=INSTANCE_ID_DESTINATION \
      --destination-cluster=CLUSTER_ID_DESTINATION \
      --destination-backup=BACKUP_ID_DESTINATION \
    

    在该命令中附加以下内容之一:

    • --retention-period`=RETENTION_PERIOD:备份副本的保留期限。自创建源备份起必须至少 6 小时至 30 天。
    • --expiration-date`=EXPIRATION_DATE:备份副本的到期时间。自创建源备份起必须至少 6 小时至 30 天。

    您还可以选择在该命令中添加 --async。如果您希望终端在操作完成之前返回操作 ID,则可以使用此标志。如果想要检查操作的状态,则此标志非常有用。

  5. 查看备份列表,看看该副本是否已创建。

    gcloud bigtable backups list --instances=INSTANCE_ID_DESTINATION
    
  6. 如果备份未列出,请检查操作状态

在极少数情况下,创建备份副本的操作会因容量限制而失败,可使用其他目标集群进行重试。如果操作仍失败,请与支持团队联系。

检查操作的状态

控制台

  1. 转到 Google Cloud 控制台中的 Bigtable 实例页面。

    打开实例列表

  2. 点击包含备份的实例。

  3. 在左侧导航窗格中,点击备份

  4. 备份页面上,点击活动。状态列会显示每项操作的当前状态。

恢复表时的操作状态包括:

  • 正在等待复制
  • 正在恢复备份
  • 正在初始化
  • 优化就绪
  • 准备就绪

创建备份时有如下操作状态:

  • 正在创建备份
  • 备份完成

复制备份时有如下操作状态:

  • 正在复制备份
  • 已复制备份

gcloud

如需检查备份操作或恢复操作的状态,您需要该操作的唯一 ID。以下是操作 ID 的示例:

`instances/instance-name/tables/table-name/locations/us-east1-b/operations/917168358249360635`

运行命令以使用 --async 选项创建备份或恢复到新表后,终端会显示操作 ID。

  1. 复制操作 ID。

  2. 运行 gcloud bigtable operations describe 命令,将 OPERATION_ID 替换为您复制的值。

    gcloud bigtable operations describe OPERATION_ID
    

    示例:

    gcloud bigtable operations describe \
    instances/instance-name/tables/table-name/locations/us-east1-b/operations/917168358249360635
    

    您可以每隔几分钟执行一次此命令,直到 DONE 的值为 TRUE

如果不知道操作 ID,要么因为您不只是执行命令,要么您处于不同的终端窗口中,则可以查看实例的操作列表,并确定要检查的操作。

  1. 查看包含要备份或要恢复到的表的实例的最近操作活动列表,并将 INSTANCE_ID 替换为实例 ID:

    gcloud bigtable operations list --instance=INSTANCE_ID
    

    终端会在标记为 NAMESTART_TIMEEND_TIMEDONE 的列中显示操作列表。NAME 列中的值是操作 ID。

  2. 从列表中的第一项开始,复制操作 ID。

  3. 使用 gcloud bigtable operations describe 查看操作的元数据。

    gcloud bigtable operations describe OPERATION_ID
    

    示例:

    gcloud bigtable operations describe \
    instances/instance-name/tables/table-name/locations/us-east1-b/operations/917168358249360635
    
  4. 如果操作的元数据显示 backupInfo 的值,则您已找到正确的操作,并且可以随时重复此命令,直到 DONE 的值为 TRUE

    如果元数据未显示 backupInfo 的值,请从第 1 步中显示的操作列表中查看下一项操作。

修改备份或备份副本

控制台

无法通过 Google Cloud 控制台来修改备份,包括备份副本。

gcloud

可通过 gcloud CLI 修改备份或备份副本的到期日期或存留期限。

对于所有命令,请用实际值替换以下内容:

  • INSTANCE_ID:实例的永久性标识符。
  • CLUSTER_ID:集群的永久性标识符。
  • BACKUP_ID:备份的唯一 ID。
  • EXPIRATION_DATE:未来 90 天或更短的日期,格式为“Zulu”UTC 时间戳,精确到纳秒。

    示例:2019-10-02T15:01:23.045123456Z

  • RETENTION_PERIOD:最长 90 天的时间段,以数字形式表示,单位为 mhd(分钟、小时或天)。

    _Examples_: `36h` or `89d`
    
  1. 查看备份列表:

        gcloud bigtable backups list --instance=INSTANCE_ID
    

    终端会显示备份列表。

  2. 记下需要更新的备份的备份和集群 ID。

  3. 运行 gcloud bigtable instances 备份更新命令以添加新的到期日期或新的保留期限。

      gcloud bigtable backups update BACKUP_ID \
      --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID \
      --expiration-date=EXPIRATION_DATE \
      --retention-period=RETENTION_PERIOD
    
  4. 运行 gcloud bigtable instancesbackup describe 命令验证您是否已成功更新到期时间。

        gcloud bigtable backups describe BACKUP_ID \
        --instance=INSTANCE_ID \
        --cluster=CLUSTER_ID
    ```
    

删除备份

可以在为备份或备份副本预设的到期时间之前将其删除。

控制台

  1. 转到 Google Cloud 控制台中的 Bigtable 实例页面。

    打开实例列表

  2. 点击包含备份的实例。

  3. 在左侧导航窗格中,点击备份

  4. 对于需要删除的备份,请展开恢复字样旁的“更多”菜单,然后点击删除

  5. 确认删除字段中输入备份 ID,然后点击删除

gcloud

  1. 查看备份列表,用实例的 ID 替换 INSTANCE_ID

    gcloud bigtable backups list --instance=INSTANCE_ID
    

    终端会显示备份列表。

  2. 记下备份 ID 及其所在集群的 ID。

  3. 运行 gcloud bigtable instances 备份删除命令,将记录中的备份 ID 替换成 BACKUP_ID 和集群 ID 替换 CLUSTER_ID

    gcloud bigtable backups delete BACKUP_ID \
      --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID
    

后续步骤