---
url: /v6.2/k8s-backup-restore.md
---
# Kubernetes 备份与恢复

## 备份/恢复 数据

备份与恢复数据需要使用 [数据备份与恢复](backup-restore.md) 中的介绍的脚本，区别是 metadb 备份与恢复在 **metadb-0** 的容器中执行，engine 备份与恢复在 **master-0**，minio 备份与恢复在 **minio-0**
容器中执行。

> \[!CAUTION] 请注意
> 在 k8s 环境中，只使用本地备份方式，默认备份到/opt/hsdata/backup 目录下。

### 数据恢复前准备工作

metadb 与 engine 数据恢复前需要停止 hengshi-sense 服务，避免服务对数据恢复结果造成影响，minio 数据恢复可忽略此步

* hengshi-sense 服务停止示例。

```shell
kubectl -n hengshi scale --replicas=0 deployment hengshi-sense
```

### 备份 metadb

```shell
kubectl -n hengshi exec -it metadb-0 -- mkdir -p /opt/hsdata/backup
kubectl -n hengshi exec -it metadb-0 -- /opt/hengshi/bin/dbbackup.sh -m metadb -l /opt/hsdata/backup -t sql.gz
```

### 恢复 metadb

```shell
kubectl -n hengshi exec -it metadb-0 -- /bin/bash ## 进入 metadb-0 容器中，执行下列操作
/opt/hengshi/bin/hengshi-sense-bin stop metadb single
sudo mv ${HSDATA}/pg_data ${HSDATA}/pg_data.old
/opt/hengshi/bin/hengshi-sense-bin init metadb single
/opt/hengshi/bin/hengshi-sense-bin start metadb single
/opt/hengshi/bin/dbrestore.sh -m metadb -l /opt/hsdata/backup -t metadb_backup.xx-xx-xx_xx-xx-xx[.tar.gz]
```

* 数据恢复成功后，确认数据正确性，然后删除历史旧数据。

```shell
kubectl -n hengshi exec -it metadb-0 -- sudo rm -rf ${HSDATA}/pg_data.old
```

### 备份恢复 engine 数据

按照示例中的操作步骤进行备份和恢复引擎数据。

### 备份 engine 数据

```shell
kubectl -n hengshi exec -it master-0 -- mkdir -p /opt/hsdata/backup
kubectl -n hengshi exec -it master-0 -- /opt/hengshi/bin/dbbackup.sh -m engine -l /opt/hsdata/backup -t sql.gz
```

### 恢复 engine 数据

```shell
kubectl -n hengshi exec -it master-0 -- /bin/bash  ## 进入 master-0 容器中，执行下列操作
/entrypoint.sh -m stopsystem
for host in ${MASTER} ${SEGMENTS};do ssh $host "sudo mv ${HSDATA}/engine-cluster ${HSDATA}/engine-cluster.old";done
/entrypoint.sh -m initsystem
/entrypoint.sh -m startsystem
/opt/hengshi/bin/dbrestore.sh -m engine -l /opt/hsdata/backup -t engine_backup.xx-xx-xx_xx-xx-xx[.tar.gz]
```

* 数据恢复成功后，确认数据正确性，然后删除历史旧数据。

```shell
kubectl -n hengshi exec -it master-0 -- for host in ${MASTER} ${SEGMENTS};do ssh $host "sudo rm -rf ${HSDATA}/engine-cluster.old";done
```

### 备份 minio

```shell
kubectl -n hengshi exec -it inio-0 -- mkdir -p /opt/hsdata/backup
kubectl -n hengshi exec -it inio-0 -- /opt/hengshi/bin/dbbackup.sh -m inio -l /opt/hsdata/backup
```

### 恢复 minio

```shell
kubectl -n hengshi exec -it minio-0 -- /bin/bash ## 进入 metadb-0 容器中，执行下列操作
/opt/hengshi/bin/hengshi-sense-bin stop minio single
sudo mv ${HSDATA}/minio-data ${HSDATA}/minio-data.old
/opt/hengshi/bin/dbrestore.sh -m minio -l /opt/hsdata/backup -t minio_backup.xx-xx-xx_xx-xx-xx.tar.gz
/opt/hengshi/bin/hengshi-sense-bin start minio single
```

* 数据恢复成功后，确认数据正确性，然后删除历史旧数据。

```shell
kubectl -n hengshi exec -it minio-0 -- sudo rm -rf ${HSDATA}/minio-data.old
```

### 数据恢复完成后操作

metadb 与 engine 数据恢复完成后，继续恢复 hengshi-sense 服务，minio 数据恢复可忽略此步

* hengshi-sense 服务恢复示例。

```shell
hs_pods_num=  #hengshi-sense 服务数量，根据自身停止前数量填写
kubectl -n hengshi scale --replicas=${hs_pods_num} deployment hengshi-sense
```
