> For the complete documentation index, see [llms.txt](https://liujinye.gitbook.io/openshift-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://liujinye.gitbook.io/openshift-docs/etcd/hui-fu-openshift3.11etcd-shu-ju-kuai-zhao.md).

# 恢复openshift3.11-etcd数据快照

参考：<https://docs.openshift.com/container-platform/3.11/admin_guide/assembly_restoring-cluster.html#restoring-etcd-v2-v3-data>

因openshift数据是以etcd v3版本存储，本恢复方法只编写了etcd v3版本的数据恢复，v2版本数据恢复不支持。

1.通过删除etcd pod定义并重新启动主机来停止所有etcd服务

```
mkdir -p /etc/origin/node/pods-stopped
mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
```

2.所有etcd主机，清除所有旧数据，因为etcdctl将在将要执行还原过程的节点中重新创建它(这里为安全起见，使用mv把目录改名)

```
mv /var/lib/etcd /var/lib/etcd.old
```

3.所有etcd主机，运行snapshot restore命令：

```
. /etc/etcd/etcd.conf
etcdctl3 snapshot restore /backup/etcd-xxxxxx/db \
  --data-dir /var/lib/etcd \
  --name $ETCD_NAME \
  --initial-cluster "$ETCD_INITIAL_CLUSTER" \
  --initial-cluster-token "$ETCD_INITIAL_CLUSTER_TOKEN" \
  --initial-advertise-peer-urls $ETCD_INITIAL_ADVERTISE_PEER_URLS \
  --skip-hash-check=true
```

4.所有etcd主机将权限和selinux上下文还原到还原的文件：

```
chown -R etcd.etcd /var/lib/etcd/
restorecon -Rv /var/lib/etcd
```

5.所有etcd主机启动服务

```
mv /etc/origin/node/pods-stopped/* /etc/origin/node/pods/
```

6.所有etcd主机检查是否有错误日志

```
master-logs etcd etcd
```

7.检查openshift服务

```
oc get user
oc get all
```

## 支持作者

如果文章对您有帮助，欢迎打赏，谢谢

![支付宝](https://379859240-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZILiWXMjweRuuuoQKf%2F-LbLkeZcs7Sx04qcEp0-%2F-LbLkf5wGLqw4_zZhgmC%2Fshoukuan.png?generation=1554086280851493\&alt=media)
