Skip to content

Commit

Permalink
update design doc: cluster_backup_and_restore.md
Browse files Browse the repository at this point in the history
  • Loading branch information
polefishu committed Oct 19, 2020
1 parent eae5cc5 commit 6be7a80
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions doc/design/zh/cluster_backup_and_restore.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

目前只支持备份到 ceph 对象存储及本地 pvc 中。

备份开始时使用 redis-cli 同步 Master 的 RDB到本地后再使用 [Rclone](https://rclone.org/) 将 RDB 文件传输到对象存储或者 pvc 中。
备份开始时使用 redis-cli 同步 Master 的 RDB到本地后再使用 [Rclone](https://rclone.org/)
RDB 文件传输到对象存储或者 pvc 中,恢复时先使用 Rclone 从之前备份的位置同步备份到本地后,再启动 Redis
服务。备份恢复的工具类镜像中预置了 redis-cli 和 Rclone,参见 [Dockerfile](hack/docker/redis-tools/Dockerfile)

## 备份

Expand All @@ -18,11 +20,15 @@ redis/default/redis-cluster-test/20191101083020/backup-1
redis/default/redis-cluster-test/20191101083020/backup-2
```

每个master节点备份的快照和节点元数据信息会存储在上述路径,用户可以到相应的bucket中查看
每个master节点备份的快照和节点元数据信息会存储在上述路径,用户可以到相应的 bucket 中查看

## 从备份恢复

从备份恢复和创建步骤不同,分为两阶段,第一阶段同步数据,从快照启动 Master 节点;第二阶段启动 Slave 节点。

1. 根据备份信息,创建与备份集群切片数相同的 Statefulset,设置 Replicas 为 1,只启动 master 节点,注入 init container,init container 的作用是拉取对象存储上的快照数据。
2. 第1步完成之后,增加每个分片的副本数调大 Statefulset 的 Replicas,拉起 Slave 节点,等待所有 Pod 节点状态变为 Runing 之后,设置每个 Statefulset 的 Slave 节点 replicate Master 节点,加入集群。
1. 设置`DistributedRedisCluster.Status.Restore.Phase=Running`,根据备份信息,创建与备份集群切片数相同的 Statefulset,
设置 Replicas 为 1,只启动 master 节点,注入 init container,init container 的作用是拉取对象存储上的快照数据。
2. 等待第1步同步数据完成,master 启动完成后,设置`DistributedRedisCluster.Status.Restore.Phase=Restart`,移除
init container 后等待节点重启。
3. 第2步完成之后,增加每个分片的副本数调大 Statefulset 的 Replicas,拉起 Slave 节点,设置`DistributedRedisCluster.Status.Restore.Phase=Succeeded`
等待所有 Pod 节点状态变为 Runing 之后,设置每个 Statefulset 的 Slave 节点 replicate Master 节点,加入集群。

0 comments on commit 6be7a80

Please sign in to comment.