管理备份
本页介绍了如何执行 Bigtable 备份操作。在阅读本页内容之前,您应该先熟悉备份。
您可以通过以下命令使用 Bigtable 备份:
- Google Cloud 控制台。
- Google Cloud CLI。
- Cloud Bigtable 客户端库。
准备工作
确保您或您正在使用的用户账号拥有所需的操作权限。
如果您计划使用 gcloud CLI,请安装适用于 Bigtable 的 gcloud CLI。
使用自动备份
您可以使用 gcloud CLI 或 Google Cloud 控制台启用自动备份。无论备份是手动创建的还是自动备份的结果,删除、更新、复制和restore备份的步骤都是相同的。
默认情况下,自动创建的备份会在三天后过期。您可以延长到期日期。如需了解详情,请参阅修改备份。
在预览期间,如果您打算启用自动备份功能,请考虑以下因素:
- 如果将集群添加到包含已启用自动备份的表的实例中,系统不会在添加的集群上创建每日备份。如需在所有集群(包括新添加的集群)上创建每日备份,请停用表的自动备份,然后重新启用自动备份。
- 如果已启用自动备份的表被删除,然后又取消删除,您需要在已恢复的表上重新启用自动备份。
- 恢复表的自动备份不会自动为恢复的表启用自动备份。您需要手动启用自动备份。
启用自动备份
您可以使用控制台或 Google Cloud CLI 启用自动备份。启用自动备份后,Bigtable 每天都会在实例中的每个集群上为表创建标准备份。您无法使用自动备份功能创建热备份。
系统会为自动备份过程中创建的备份分配以 auto
开头的 ID。例如,ID 为 my-table
的表将具有自动备份 ID,例如 auto.my-table.c7x3.20230220-145537
,其中 my-table
是截断的表 ID,c7x3
是唯一的哈希 ID,20230220-145537
是世界协调时间格式的日期和时间。
如需创建启用了自动备份的新表,请参阅创建和管理表。
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击包含要备份的表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
在表格的自动备份列中,点击启用。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:实例的永久性标识符。
如果您不知道实例 ID,请使用
bigtable instances list
命令查看项目的实例列表:gcloud bigtable instances list
查看表列表,确认要备份的表的 ID。
gcloud bigtable instances tables list --instances=INSTANCE_ID
停用自动备份
为表停用自动备份政策后,更新后的配置最多可能需要 1 小时才会生效。在政策更改之前创建的备份会保留到到期为止,除非您将其删除。
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击包含要为其停用自动备份的表的实例。
点击 Tables。
表页面显示实例中的表列表。
在要为其停用自动备份的表格行中,点击
Edit(修改)。取消选中启用自动备份复选框。
点击保存。
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 每天为您创建标准备份。
控制台
转到 Google Cloud 控制台中的 Bigtable 实例页面。
点击包含要备份的表的实例。
在左侧导航窗格中,点击表。
点击要备份的表所对应的创建备份。
如果使用的是复制功能,请使用下拉菜单选择应存储备份的集群的集群 ID。(如果在表页面上点击了集群 ID(而非实例 ID)旁边的创建备份,则系统会预先选择相应集群。)
为备份输入唯一 ID。
设置到期日期。
点击创建。
此时,控制台会显示经过过滤的备份页面,以显示备份及其详细信息。
点击活动以查看备份的状态。
备份完成后,“状态”列会显示备份完成。
gcloud
对于所有命令,请用实际值替换以下内容:
- INSTANCE_ID:实例的永久性标识符。
- CLUSTER_ID:集群的永久性标识符。
- TABLE_ID:要备份的表的 ID。
- BACKUP_ID:您分配给备份的 ID。
EXPIRATION_DATE:未来 90 天或更近的日期,格式为“祖鲁时”世界协调时间 (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 instances backups 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
表示备份已完成。
创建热备份
gcloud
对于所有命令,请用实际值替换以下内容:
- INSTANCE_ID:实例的永久性标识符。
- CLUSTER_ID:集群的永久性标识符。
- TABLE_ID:要备份的表的 ID。
- BACKUP_ID:您分配给备份的 ID。
EXPIRATION_DATE:未来 90 天或更近的日期,格式为“祖鲁时”世界协调时间 (UTC) 时间戳,精确到纳秒。
示例:
2022-10-02T15:01:23.045123456Z
RETENTION_PERIOD:最长 90 天的期限,以数字加上
m
、h
或d
单位(分钟、小时或天)表示。示例:
36h
或89d
HOT_TO_STANDARD_TIME:(可选)Bigtable 应将备份从热备份转换为标准备份的日期和时间。此值必须晚于备份创建时间至少 24 小时。
示例:
2024-08-02T15:01:23.045123456Z
或者,您也可以提供相对时长日期和时间。如需了解详情,请参阅 gcloud topic datetimes。
示例:
+P30D
(30 天)
如果您不知道实例 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 instances backups 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。如果想要检查操作的状态,这将非常有用。查看备份列表,看看备份是否已创建。
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 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。如果想要检查操作的状态,这将非常有用。查看表列表,看看表是否已创建。
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 backups 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,则可以使用此标志。如果想要检查操作的状态,则此标志非常有用。如果返回超时消息,则表示备份可能已成功完成,并且可能已创建副本。
查看备份列表,看看该副本是否已创建。
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 天或更近的日期,格式为“祖鲁时”世界协调时间 (UTC) 时间戳,精确到纳秒。
示例:
2019-10-02T15:01:23.045123456Z
RETENTION_PERIOD:最长 90 天的期限,以数字加上
m
、h
或d
单位(分钟、小时或天)表示。示例:
36h
或89d
HOT_TO_STANDARD_TIME:(可选)Bigtable 应将备份从热备份转换为标准备份的日期和时间。此值必须晚于备份创建时间至少 24 小时。
示例:
2024-08-02T15:01:23.045123456Z
或者,您也可以提供相对时长日期和时间。如需了解详情,请参阅 gcloud topic datetimes。
示例:
+P30D
(30 天)
查看备份列表:
gcloud bigtable backups list --instance=INSTANCE_ID
终端会显示备份列表。
记下需要更新的备份的备份和集群 ID。
运行 gcloud bigtable instances backups 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
运行 gcloud bigtable instances backups 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 backups delete 命令,用记下的备份 ID 替换
BACKUP_ID
,用集群 ID 替换CLUSTER_ID
。gcloud bigtable backups delete BACKUP_ID \ --instance=INSTANCE_ID \ --cluster=CLUSTER_ID