本页介绍了如何执行 Memorystore for Redis 集群备份操作。在阅读本页内容之前,您应该先熟悉备份。
准备工作
确保您或您正在使用的用户账号拥有所需的操作权限。
Redis 管理员和 Redis 编辑者角色可以执行所有备份操作。Redis 查看者角色可以查看和导出备份。
发起按需备份
使用以下命令可进行按需备份:
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 存储桶以及在存储分区内创建文件夹和对象的权限。
以下步骤演示了如何导出备份。
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.get
、storage.objects.create
、storage.objects.delete
和storage.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 是服务代理名称中使用的项目编号。
使用
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 存储桶和对象的访问权限,然后运行创建操作。
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.get
和storage.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 是服务代理名称中使用的项目编号。
以下示例演示了如何将 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 备份的指标列表,请参阅备份指标。