管理备份

本页面介绍了如何执行 Bigtable 备份操作。之前 您应熟悉备份

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

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

准备工作

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

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

使用自动备份

您可以使用 gcloud CLI 或 Google Cloud 控制台来启用 自动备份。删除更新 复制restore备份相同 无论是手动创建还是通过自动备份创建。

默认情况下,自动创建的备份会在三天后过期。您可以延长到期日期。如需了解详情,请参阅修改备份

如果您打算在预览版期间启用 自动备份:

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

启用自动备份

您可以使用控制台或 Google Cloud CLI 启用自动备份。启用自动备份功能后,Bigtable 每天都会在实例中的每个集群上创建表的标准备份。您无法使用自动备份来创建热备份。

在自动备份中创建的备份 ID 以 尽在 auto。例如,ID 为 my-table 的表将具有自动备份 ID,例如 auto.my-table.c7x3.20230220-145537,其中 my-table 是截断的表 ID,c7x3 是唯一的哈希 ID,20230220-145537 是日期和时间(采用世界协调时间格式)。

如需创建启用了自动备份的新表,请参阅创建和管理表

控制台

  1. 在 Google Cloud 控制台中打开 Bigtable 实例列表。

    打开实例列表

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

  3. 在左侧窗格中,点击

    页面显示实例中的表列表。

  4. 在表格的自动备份列中,点击启用。Bigtable 最长可能需要 1 小时才能开始创建备份。

gcloud

如需为表启用自动备份,请运行 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
    

停用自动备份

为表停用自动备份政策后,更新后的配置最多可能需要 1 小时才会生效。已创建的备份 政策更改之前会一直保留到过期,除非您删除 。

控制台

  1. 在 Google Cloud 控制台中打开 Bigtable 实例列表。

    打开实例列表

  2. 点击要停用自动化功能的表所在的实例 备份。

  3. 点击 Tables

    页面显示实例中的表列表。

  4. 在要为其停用自动备份的表格行中,点击 Edit(修改)。

  5. 清除启用自动备份复选框。

  6. 点击保存

gcloud

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

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 天。如需更新备份保留期限,请参阅修改备份

创建标准备份

您可以使用 Google Cloud CLI、 或使用某个 Bigtable 客户端 库。您还可以启用自动备份,以执行以下操作: 让 Bigtable 为您创建每日标准备份。

控制台

  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 天的未来日期,格式为 如“祖鲁语”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 表示备份已完成。

创建热备份

gcloud

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

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

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

  • RETENTION_PERIOD:最多 90 天,以数字表示 单位为 mhd(分钟、小时或天)。

    示例36h89d

  • HOT_TO_STANDARD_TIME:(可选)显示 Bigtable 应将备份从热备份转换为 标准备份此值必须晚于备份创建时间至少 24 小时。

    示例:2024-08-02T15:01:23.045123456Z

    或者,您也可以提供相对时长日期和时间。如需了解详情,请参阅 gcloud topic datetimes

    示例+P30D(30 天)

  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 instances Backup 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 \
      --backup-type=HOT \
      --hot-to-standard-time=HOT_TO_STANDARD_TIME
    

    --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 tables restore 命令,将内容从备份恢复到新表。

    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 表示五天或 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 backend copy 命令创建备份副本。

    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 的值,请查看下一项 操作。

修改备份或备份副本

控制台

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

gcloud

您可以使用 gcloud CLI 修改备份或备份副本的到期日期或存留期限。您还可以将热备份转换为标准备份。

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

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

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

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

    示例36h89d

  • HOT_TO_STANDARD_TIME:(可选)显示 Bigtable 应将备份从热备份转换为 标准备份此值必须晚于备份创建时间至少 24 小时。

    示例:2024-08-02T15:01:23.045123456Z

    或者,您也可以提供相对时长的日期和时间。如需了解详情,请参阅 gcloud topic datetimes

    示例+P30D 表示 30 天

  1. 查看备份列表:

        gcloud bigtable backups list --instance=INSTANCE_ID
    

    终端会显示备份列表。

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

  3. 运行 gcloud bigtable instancesbackup update 命令以添加新的失效日期或保留期限,或转换热备份 标准备份

      gcloud bigtable backups update BACKUP_ID \
      --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID \
      --expiration-date=EXPIRATION_DATE \
      --retention-period=RETENTION_PERIOD
      --hot-to-standard-time=HOT_TO_STANDARD_TIME
    
  4. 运行 gcloud bigtable instances backups 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 backups delete 命令,用记下的备份 ID 替换 BACKUP_ID,用集群 ID 替换 CLUSTER_ID

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

后续步骤