管理备份

本页介绍了如何执行 Memorystore for Redis 集群备份操作。在阅读本页内容之前,您应该先熟悉备份

准备工作

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

    Redis 管理员Redis 编辑者角色可以执行所有备份操作。Redis 查看者角色可以查看和导出备份。

  2. 安装并更新 Google Cloud CLI

发起按需备份

使用以下命令可进行按需备份:

gcloud

gcloud redis clusters create-backup INSTANCE_ID \
--backup-id=BACKUP_ID \
--ttl=TTL_PERIOD \
--project=PROJECT_ID \
--region=REGION

替换以下内容:

  • INSTANCE_ID 是 Memorystore for Redis Cluster 实例的 ID。
  • BACKUP_ID 是备份的 ID,例如 december-2024-backup
  • TTL_PERIOD 指定备份的存留时间 (TTL)。备份在达到 TTL 限制后会自动删除。 设置为天数。例如 14d。最小值为 1 天。 如果未指定,则默认值为 100 年。
  • PROJECT_ID 是项目 ID。
  • REGION 是集群所在的区域(例如 us-east1)。

该命令会返回以下格式的操作名称:

projects/PROJECT_ID/locations/REGION/operations/operation-UID

您可以使用 gcloud redis operations describe 命令检查操作的状态:

gcloud redis operations describe projects/PROJECT_ID/locations/REGION/operations/operation-UID

您还可以使用 gcloud redis operations list 命令列出项目和区域中的所有操作。

配置自动备份时间表

您可以在创建新集群时配置每日备份时间表,也可以在现有集群上启用每日备份时间表。

创建启用了自动备份时间表的集群

以下示例演示了如何在创建新集群时设置每日备份时间表。如需了解创建集群时可用的更多选项,请参阅创建实例

gcloud

gcloud redis clusters create INSTANCE_ID \
--automated-backup-mode=ENABLED \
--automated-backup-start-time=START_TIME \
--automated-backup-ttl=RETENTION_POLICY

替换以下内容:

  • INSTANCE_ID 是您要创建的 Memorystore for Redis Cluster 实例的 ID。
  • START_TIME A 用于指定何时开始备份。以 24 小时制指定时间,格式为 HH:00,时间为世界协调时间 (UTC)。例如 23:00
  • RETENTION_POLICY 用于指定保留每个备份的天数。 设置为天数,例如 7d。最长为 365 天,默认值为 35 天。

    即使在集群被删除后,备份也会在保留期限内保留,最长保留期限为 365 天。您必须手动删除备份,才能在保留期限到期之前移除备份。

在现有集群上启用计划备份

gcloud

gcloud redis clusters update INSTANCE_ID \
--automated-backup-mode=enabled \
--automated-backup-start-time=START_TIME \
--automated-backup-ttl=RETENTION_POLICY

替换以下内容:

  • INSTANCE_ID 是您要更新的 Memorystore for Redis Cluster 实例的 ID。
  • START_TIME 一个时间戳,用于指定开始备份的时间。 时间戳必须精确到小时,并指定备份开始时间所在的一小时时段,例如 2024-01-01T01:00:00Z

  • RETENTION_POLICY 用于指定保留每个备份的天数。 设置为天数,例如 7d

    即使在集群被删除后,备份也会在保留期限内保留。 您必须手动删除备份,才能在保留期限到期之前移除备份。

停用计划备份

使用以下命令停用集群上的定期备份:

gcloud

gcloud redis clusters update INSTANCE_ID \
--automated-backup-mode=disabled

INSTANCE_ID 替换为您要更新的 Memorystore for Redis Cluster 实例的 ID。

备份和更新集群操作之间的并发性

集群上的更新操作和维护操作可以在以下情况下取消正在进行的备份操作:

  • 如果正在进行集群更新操作,则备份操作请求会被拒绝。
  • 如果正在进行备份操作,则传入的集群更新操作可能会取消并导致正在进行的备份操作失败。
  • 在极少数情况下,维护和备份操作可能会同时进行,导致相应实例的备份操作被跳过。

列出和描述备份

以下各部分演示了如何查找有关可用备份的信息。

列出备份集合

备份集合包含集群下的所有备份。使用以下命令列出指定项目和区域中的备份集合:

gcloud

gcloud redis clusters backup-collections list \
--project=PROJECT_ID \
--region=REGION

替换以下内容:

  • REGION 是集群所在的区域(例如 us-east1)。
  • PROJECT_ID 是项目 ID。

该命令会返回类似于以下内容的备份集合列表:

BACKUP_COLLECTION_NAME                CLUSTER_NAME                                           CLUSTER_UID
6d9e1ff4-0f89-4c0a-a941-155dd4c3a213  projects/PROJECT_ID/locations/REGION/clusters/cluster1  6e539aed-ee7b-4eea-83ad-b4715b1ef160
dda2f551-b416-47ff-b1cf-684e00483dc9  projects/PROJECT_ID/locations/REGION/clusters/cluster2  57130520-636c-4ac7-ad7e-86f7cfb32838

列出备份集合下的备份

使用以下命令列出备份集合中的备份:

gcloud

gcloud redis clusters backups list \
--backup-collection=BACKUP_COLLECTION
--project=PROJECT_ID \
--region=REGION

替换以下内容:

  • BACKUP_COLLECTION 是备份集合的名称。
  • REGION 是集群所在的区域,例如 us-east1
  • PROJECT_ID 是项目 ID。

该命令会返回类似于以下内容的备份列表:

BACKUP_NAME  STATE   CREATE_TIME                     EXPIRE_TIME
backup-1     ACTIVE  2024-11-10T03:52:40.899882388Z  2124-11-10T03:53:02.856981736Z
backup-2     ACTIVE  2024-11-11T03:48:22.137134936Z  2124-11-11T03:48:44.130735425Z

描述备份

使用以下命令检索特定备份的相关信息:

gcloud

gcloud redis clusters backups describe BACKUP_NAME \
--backup-collections=BACKUP_COLLECTION
--project=PROJECT_ID \
--region=REGION

替换以下内容:

  • BACKUP_NAME 是备份的名称,例如 2024-05-01-10-15-00
  • BACKUP_COLLECTION 是备份集合的名称。
  • REGION 是集群所在的区域,例如 us-east1
  • PROJECT_ID 是项目 ID。

该命令会返回类似于以下内容的备份信息:

backupFiles:
- createTime: '2024-11-10T03:52:55.539Z'
fileName: 3d2774dab822137c5bac9386f3fa69ee4c73b928.rdb
sizeBytes: '694879680'
- createTime: '2024-11-10T03:52:54.742Z'
fileName: 7f5d99faaefc63ed8292a71da2552db3b06cdcff.rdb
sizeBytes: '694925906'
- createTime: '2024-11-10T03:52:54.972Z'
fileName: 0aac1092a3fb81515aefb6b2421f31eb346c3961.rdb
sizeBytes: '694784169'
cluster: projects/PROJECT_ID/locations/us-east1/clusters/cluster1
clusterUid: 57130520-636c-4ac7-ad7e-86f7cfb32838
createTime: '2024-11-10T03:52:40.899882388Z'
expireTime: '2124-11-10T03:53:02.856981736Z'
name: projects/PROJECT_ID/locations/us-east1/backupCollections/dda2f551-b416-47ff-b1cf-684e00483dc9/backups/december-2024-backup
nodeType: REDIS_HIGHMEM_MEDIUM
shardCount: 3
state: ACTIVE
totalSizeBytes: '2084589755'

删除备份

使用以下命令删除备份:

gcloud

gcloud redis clusters backups delete BACKUP_NAME \
--backup-collection=BACKUP_COLLECTION
--project=PROJECT_ID \
--region=REGION

替换以下内容:

  • BACKUP_NAME 是备份的名称,例如 2024-05-01-10-15-00
  • BACKUP_COLLECTION 是备份集合的名称。
  • REGION 是集群所在的区域,例如 us-east1
  • PROJECT_ID 是项目 ID。

将备份导出到存储桶

您可以将备份导出到 Cloud Storage 存储桶。 目标存储桶必须是区域存储桶,并且必须与备份位于同一区域。Memorystore for Redis Cluster 必须具有访问 Cloud Storage 存储桶以及在存储分区内创建文件夹和对象的权限。

以下步骤演示了如何导出备份。

  1. Memorystore for Redis Cluster 必须具有访问目标 Cloud Storage 存储桶的权限。向 Memorystore for Redis Cluster 服务代理授予对 Cloud Storage 资源的访问权限。

    Memorystore for Redis Cluster 服务代理使用以下命名格式:

    service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
    

    PROJECT_NUMBER 替换为集群或备份所在项目的项目编号

    向服务代理授予具有 storage.buckets.getstorage.objects.createstorage.objects.deletestorage.folders.create 权限的角色。例如,以下命令会向 Memorystore for Redis 集群服务代理授予指定存储桶的 Storage Admin 角色:

    gcloud

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com \
    --role=roles/storage.admin
    

    替换以下内容:

    • BUCKET_NAME 是目标存储桶的名称。
    • PROJECT_NUMBER 是服务代理名称中使用的项目编号。
  2. 使用 gcloud redis clusters backups export 命令将备份导出到 Cloud Storage 存储桶。

    gcloud

    gcloud redis clusters backups export BACKUP_NAME \
    --region=REGION \
    --backup-collection=BACKUP_COLLECTION \
    --gcs-bucket=BUCKET
    

    替换以下内容:

    • BACKUP_NAME 是 Memorystore for Redis 集群备份的名称。
    • BACKUP_COLLECTION 是备份集合的名称。
    • REGION 是备份集合所在的区域,例如 us-east1
    • BUCKET_NAME 是一个 Cloud Storage 存储桶,不以 gs:// 为前缀。

    存储桶必须是区域级存储桶,并且必须与备份位于同一区域。Memorystore for Redis Cluster 必须有权访问 Cloud Storage 存储桶,以及在该存储分区内创建文件夹和对象。

从备份中恢复数据

如需从备份恢复数据,您可以从同一项目中的代管式备份为新集群提供初始数据,也可以从存储桶中的 RDB 文件为新集群提供初始数据。如需使用 RDB 文件为集群提供初始数据,Memorystore for Redis Cluster 必须有权访问这些文件。

使用备份为新集群提供初始数据

以下示例演示了如何将数据从备份导入到新集群。备份必须与新集群位于同一区域。创建集群的主账号必须拥有备份的 redis.backups.get 权限。

如需了解创建集群时可用的更多选项,请参阅创建实例

gcloud

gcloud redis clusters create INSTANCE_ID \
--import-managed-backup=BACKUP_NAME \
--region=REGION

替换以下内容:

  • INSTANCE_ID 是您要创建的 Memorystore for Redis Cluster 实例的 ID。
  • BACKUP_NAME 是受管理的备份的名称。例如 projects/PROJECT_ID/locations/REGION/backupCollections/BACKUP_COLLECTION_ID/backups/BACKUP_ID
  • REGION 是集群所在的区域,例如 us-east1

使用存储桶中的 RDB 文件为新集群设定初始状态

以下示例演示了如何将 Cloud Storage 存储桶中 RDB 文件的数据导入到新集群。存储桶必须是与新集群位于同一区域的单区域存储桶,或者是一个区域与新集群位于同一区域的双区域存储桶。

如需使用 Cloud Storage 中的 RDB 文件为集群提供初始数据,您必须向 Memorystore for Redis 集群授予对 Cloud Storage 存储桶和对象的访问权限,然后运行创建操作。

  1. Memorystore for Redis Cluster 必须具有访问 Cloud Storage 对象的权限。向 Memorystore for Redis Cluster 服务代理授予对 Cloud Storage 资源的访问权限。

    Memorystore for Redis Cluster 服务代理使用以下命名格式:

    service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com

    PROJECT_NUMBER 替换为要在其中创建新集群的项目的项目编号

    为该服务代理授予具有 storage.buckets.getstorage.objects.get 权限的角色。例如,以下命令会向 Cloud Storage 存储桶授予 Storage Admin 角色:

    gcloud

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com --role=roles/storage.admin
    

    替换以下内容:

    • BUCKET_NAME 是 RDB 文件所在的存储桶的名称。
    • PROJECT_NUMBER 是服务代理名称中使用的项目编号。
  2. 以下示例演示了如何将 Cloud Storage 存储桶中的 RDB 文件中的数据导入到新集群。如需了解创建集群时可用的更多选项,请参阅创建实例

    gcloud

    gcloud redis clusters create INSTANCE_ID \
    --import-gcs-object-uris=URI \
    --region=REGION
    

    替换以下内容:

    • INSTANCE_ID 是您要创建的 Memorystore for Redis Cluster 实例的 ID。
    • URI 是一个或多个以英文逗号 (,) 分隔的 Cloud Storage URI。例如,gs://my-bucket/folder/file1.rdb,gs://my-bucket/folder/file2.rdb
    • REGION 是集群所在的区域,例如 us-east1

Cloud Monitoring 指标

您可以使用 Cloud Monitoring 指标来监控近期的备份和导入操作。如需查看适用于 Memorystore for Redis Cluster 备份的指标列表,请参阅备份指标

后续步骤