管理备份
本页面介绍了 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:实例的永久性标识符。
如果您不知道实例 ID,请使用
bigtable instances list
命令查看项目的实例列表:gcloud bigtable instances list
查看表列表,确认要备份的表的 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 天。如需更新备份保留期限,请参阅修改备份。
创建备份
控制台
转到 Google Cloud 控制台中的 Bigtable 实例页面。
点击包含要备份的表的实例。
在左侧导航窗格中,点击表。
点击要备份的表所对应的创建备份。
如果您使用的是复制功能,请使用下拉菜单选择应存储备份的集群的集群 ID。(如果在表页面上点击了集群 ID(而非实例 ID)旁边的创建备份,则系统会预先选择相应集群。)
为备份输入唯一 ID。
设置到期日期。
点击创建。
此时,控制台会显示经过过滤的备份页面,以显示备份及其详细信息。
点击活动以查看备份的状态。
备份完成后,“状态”列会显示备份完成。
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 天的期限,以数字加上
m
、h
或d
单位(分钟、小时或天)表示。示例:
36h
或89d
如果您不知道实例 ID,请使用
bigtable instances list
命令查看项目的实例列表:gcloud bigtable instances list
查看包含要备份的表的实例的备份列表,以便选择尚未在目标集群上使用的备份 ID。
gcloud bigtable backups list --instance=INSTANCE_ID \ --cluster=CLUSTER_ID
查看表列表,确认要备份的表的 ID。
gcloud bigtable instances tables list --instances=INSTANCE_ID
运行 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。如果想要检查操作的状态,这将非常有用。查看备份列表,看看备份是否已创建。
gcloud bigtable backups list --instance=INSTANCE_ID \ --cluster=CLUSTER_ID
如果备份未列出,请检查操作状态。
状态为
Ready
表示备份已完成。
使用备份进行恢复
控制台
您无法使用 Google Cloud 控制台将内容恢复到其他项目。如果需要这样做,请改用 gcloud CLI。
转到 Google Cloud 控制台中的 Bigtable 实例页面。
点击包含您要恢复的备份的实例。
在左侧导航窗格中,点击备份。
针对您要恢复的备份,点击恢复。
选择要恢复到的实例。
因存储空间不足而无法存储新表的实例不可用。如果您没有在某个实例中创建表的权限,则该实例不可用。如需了解详情,请将鼠标悬停在
图标上。如果您从受 CMEK 保护的备份进行恢复,则目标实例也必须受 CMEK 保护。
您无法使用 Google Cloud 控制台恢复到其他项目。如果需要这样做,请改用 gcloud CLI。
为要从备份创建的表输入唯一 ID。 您以后无法更改此 ID。
点击恢复。
控制台会显示经过过滤的表页面以显示新表。
控制台显示每个集群的恢复状态。当所有集群的状态列显示就绪时,该表已恢复并复制到实例中的所有集群。
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。
如果您不知道实例 ID,请使用
bigtable instances list
命令查看项目的实例列表:gcloud bigtable instances list
查看包含备份的实例的备份列表,以验证备份是否存在。
gcloud bigtable backups list --instance=INSTANCE_ID_SOURCE \ --cluster=CLUSTER_ID_SOURCE
查看目标实例中表的列表,以便为尚未使用的新表选择 ID。
gcloud bigtable instances tables list --instances=INSTANCE_ID_DESTINATION
您可以运行 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。如果想要检查操作的状态,这将非常有用。查看表列表,看看表是否已创建。
gcloud bigtable instances tables list --instances=INSTANCE_ID_DESTINATION
如果备份未列出,请检查操作状态。
创建备份的副本
控制台
您无法使用控制台在其他项目中创建备份的副本。如果需要这样做,请改用 gcloud CLI。
转到 Google Cloud 控制台中的 Bigtable 实例页面。
点击包含您要复制的备份的实例。
在左侧导航窗格中,点击备份。
对要复制的备份,展开恢复旁边的“更多”菜单,然后点击复制。
对要创建其副本的备份,点击复制。
如果该备份本身已是另一个备份的副本,则复制操作不可用。
选择目标实例。
您无法使用控制台在其他项目中创建备份的副本。如果需要这样做,请改用 gcloud CLI。
因存储空间不足而无法存储备份副本的实例不可用。如果您没有在某个实例中创建备份的权限,则该实例不可用。将指针悬停在
图标上可了解详情。如果您要创建受 CMEK 保护的备份的副本,则目标实例也必须受 CMEK 保护。
选择目标集群。
与任何备份一样,一个备份副本仅存储在实例中的一个集群上,即使该实例使用复制功能也是如此。
为要通过备份创建的副本输入一个唯一的 ID。您以后无法更改此 ID。
设置备份副本的到期时间,即提供一个时间值,并从下拉菜单中选择一个单位。
点击复制。
如需查看该副本,请点击查看副本。
控制台会显示目标实例经过过滤的备份页面,以显示刚刚创建的备份副本。如果状态列显示就绪,则表示副本已创建完成,可对其进行后续操作。
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
。
如果您不知道实例 ID,请使用
bigtable instances list
命令查看项目的实例列表:gcloud bigtable instances list
查看包含该备份的源实例的备份列表,以验证要复制的备份是否存在。
gcloud bigtable backups list --instance=INSTANCE_ID_SOURCE \ --cluster=CLUSTER_ID_SOURCE
查看目标实例中备份的列表,以便为尚未使用的副本选择 ID。
gcloud bigtable backups list --instances=DESTINATION_INSTANCE
运行 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,则可以使用此标志。如果想要检查操作的状态,则此标志非常有用。查看备份列表,看看该副本是否已创建。
gcloud bigtable backups list --instances=INSTANCE_ID_DESTINATION
如果备份未列出,请检查操作状态。
在极少数情况下,创建备份副本的操作会因容量限制而失败,可使用其他目标集群进行重试。如果操作仍失败,请与支持团队联系。
检查操作的状态
控制台
转到 Google Cloud 控制台中的 Bigtable 实例页面。
点击包含备份的实例。
在左侧导航窗格中,点击备份。
在备份页面上,点击活动。状态列会显示每项操作的当前状态。
恢复表时的操作状态包括:
- 正在等待复制
- 正在恢复备份
- 正在初始化
- 优化就绪
- 准备就绪
创建备份时有如下操作状态:
- 正在创建备份
- 备份完成
复制备份时有如下操作状态:
- 正在复制备份
- 已复制备份
gcloud
如需检查备份操作或恢复操作的状态,您需要该操作的唯一 ID。以下是操作 ID 的示例:
`instances/instance-name/tables/table-name/locations/us-east1-b/operations/917168358249360635`
运行命令以使用 --async
选项创建备份或恢复到新表后,终端会显示操作 ID。
复制操作 ID。
运行 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,要么因为您不只是执行命令,要么您处于不同的终端窗口中,则可以查看实例的操作列表,并确定要检查的操作。
查看包含要备份或要恢复到的表的实例的最近操作活动列表,并将
INSTANCE_ID
替换为实例 ID:gcloud bigtable operations list --instance=INSTANCE_ID
终端会在标记为
NAME
、START_TIME
、END_TIME
和DONE
的列中显示操作列表。NAME
列中的值是操作 ID。从列表中的第一项开始,复制操作 ID。
使用 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
如果操作的元数据显示
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 天的时间段,以数字形式表示,单位为
m
、h
或d
(分钟、小时或天)。_Examples_: `36h` or `89d`
查看备份列表:
gcloud bigtable backups list --instance=INSTANCE_ID
终端会显示备份列表。
记下需要更新的备份的备份和集群 ID。
运行 gcloud bigtable instances 备份更新命令以添加新的到期日期或新的保留期限。
gcloud bigtable backups update BACKUP_ID \ --instance=INSTANCE_ID \ --cluster=CLUSTER_ID \ --expiration-date=EXPIRATION_DATE \ --retention-period=RETENTION_PERIOD
运行 gcloud bigtable instancesbackup describe 命令验证您是否已成功更新到期时间。
gcloud bigtable backups describe BACKUP_ID \ --instance=INSTANCE_ID \ --cluster=CLUSTER_ID ```
删除备份
可以在为备份或备份副本预设的到期时间之前将其删除。
控制台
转到 Google Cloud 控制台中的 Bigtable 实例页面。
点击包含备份的实例。
在左侧导航窗格中,点击备份。
对于需要删除的备份,请展开恢复字样旁的“更多”菜单,然后点击删除。
在确认删除字段中输入备份 ID,然后点击删除。
gcloud
查看备份列表,用实例的 ID 替换
INSTANCE_ID
:gcloud bigtable backups list --instance=INSTANCE_ID
终端会显示备份列表。
记下备份 ID 及其所在集群的 ID。
运行 gcloud bigtable instances 备份删除命令,将记录中的备份 ID 替换成
BACKUP_ID
和集群 ID 替换CLUSTER_ID
。gcloud bigtable backups delete BACKUP_ID \ --instance=INSTANCE_ID \ --cluster=CLUSTER_ID