# V8系统备份恢复教程

文档内容为V8系统的备份和恢复的操作指南,适用场景如下:

  • 1、V8系统升级前备份
  • 2、V8系统压测前备份
  • 3、V8系统迁移前备份
  • 4、需要根据备份数据对系统进行还原

备份、恢复的前提条件和要求:

  • 1、服务器磁盘存储足够(根据真实数据量评估)
  • 2、备份、恢复 都需要停服操作
  • 3、恢复的前提是必须要有备份数据
  • 4、系统恢复操作为高危操作,请务必做好充分评估后执行

# 1、V8系统备份操作

# 1.1 V8系统停服

登录k8s master节点执行(集群情况选择一个master节点执行即可)

  • 1、创建备份目录,备份V8服务名称空间下的所有deployment
mkdir -pv /data/backup/k8s-seeyon
cd /data/backup/k8s-seeyon
# seeyon-test为v8使用的名称空间,根据实际情况替换
for i in `kubectl -n seeyon-test get deployment | grep -v NAME | awk '{print $1}'`;do kubectl -n seeyon-test get deployment $i -o yaml > ./$i.yaml;done
  • 2、检查备份文件,确保备份文件正常
    1787109757470.png
  • 3、停止V8服务
# 将v8服务副本数设置为0
for i in `kubectl -n seeyon-test get deployment | grep -v NAME | awk '{print $1}'`;do kubectl -n seeyon-test scale --replicas=0 deployment $i ;done
# 检查、确认所有的服务都已经停止,直到没有运行的pod为止
kubectl -n seeyon-test get pod

# 1.2 备份V8数据

# 1.2.1 备份数据库

如果不是自建的数据库,和客户沟通,由客户自行备份;自建数据库的备份,以mysql数据库为例

# 停止mysql服务
systemctl stop mysqld
# 创建备份目录
mkdir -pv /data/backup/mysql/
# 执行备份,/var/lib/mysql目录为mysql默认的数据存储目录,根据实际情况填写
cd /var/lib/
tar -czf /data/backup/mysql/mysqldata.tar.gz mysql
# 备份完成后,启动mysql服务
systemctl start mysqld

# 1.2.2 备份对象存储

若是客户提供的对象存储,和客户沟通,由客户自行备份;自建的minio备份,两种备份方式,二选一:

  • 方式1、通过mc客户端命令备份
# 配置mc, backupminio是添加的host标识,可以自定义;http://ip:9000 填写实际的minio服务地址加端口;user填写实际的用户;password填写实际的密码
mc config host add backupminio http://ip:9000 user password --api S3v4
# 创建备份目录
mkdir -pv /data/backup/minio
# 执行备份,seeyon-test-public公共桶名称,seeyon-test-private私有桶名称,seeyon-test-ferry摆渡桶名称,根据实际情况修改桶名称
cd /data/backup/minio
mc cp -r backupminio/seeyon-test-public ./seeyon-test-public
mc cp -r backupminio/seeyon-test-private ./seeyon-test-private
mc cp -r backupminio/seeyon-test-ferry ./seeyon-test-ferry
  • 方式2、直接备份数据目录
# 停止minio服务
systemctl stop minio
# 创建备份目录
mkdir -pv /data/backup/minio
# 执行备份,/data/app/minio/data为minio的数据盘目录,根据实际情况填写
cd /data/app/minio/
tar -czf /data/backup/minio/miniodata.tar.gz  data
# 备份完成后,启动服务
systemctl start minio

# 1.2.3 备份Nacos

直接通过浏览器登录,选择对应的命名空间,执行导出,将导出的配置文件保存好即可
1787119848534.png

# 1.2.4 备份kafka

# 停止kafka服务,停止zookeeper服务
systemctl stop kafka
systemctl stop zookeeper
# 创建备份目录
mkdir -pv /data/backup/kafka
mkdir -pv /data/backup/zookeeper
# 执行备份,/data/app/kafka/data 是kafka的数据存储目录,/data/app/zookeeper/data是zookeeper的数据存储目录,都需要根据实际情况填写
cd /data/app/kafka/
tar -czf /data/backup/kafka/kafkadata.tar.gz data
cd /data/app/zookeeper/
tar -czf /data/backup/zookeeper/zkdata.tar.gz data
# 备份完成重启服务
systemctl stop zookeeper
systemctl stop kafka

# 1.2.5 备份ElasticSearch

# 停止服务
systemctl stop elasticsearch
# 创建备份目录
mkdir -pv /data/backup/elasticsearch
# 执行备份,/data/app/elasticsearch/data为elasticsearch的数据存储目录,按实际情况填写
cd /data/app/elasticsearch/
tar -czf /data/backup/elasticsearch/esdata.tar.gz data
# 备份完成后,启动服务
systemctl start elasticsearch

# 1.2.6 备份ClickHouse

# 停止服务
systemctl stop clickhouse-server
# 创建备份目录
mkdir -pv /data/backup/clickhouse
# 执行备份,/var/lib/clickhouse-server为clickhouse的默认数据存储目录,按实际情况填写
cd /var/lib/
tar -czf /data/backup/clickhouse/ckdata.tar.gz clickhouse-server
# 备份完成后,启动服务
systemctl start clickhouse-server

# 1.3 启动V8系统

参照“1.1 V8系统停服” 所登录的服务器,进入备份目录,执行以下命令启动v8服务

# /data/backup/k8s-seeyon 为备份v8服务deployment的目录,按实际填写
cd /data/backup/k8s-seeyon
# seeyon-test 为v8的namespace,按实际填写
kubectl -n seeyon-test replace --force -f ./
# 查看服务状态,直到所有服务启动完成
kubectl -n seeyon-test get pod

# 2、V8系统恢复操作

# 2.1 V8系统停服

登录k8s master节点执行(集群情况选择一个master节点执行即可)
停止V8服务

# 将v8服务副本数设置为0,seeyon-test为v8使用namespace,按实际填写
for i in `kubectl -n seeyon-test get deployment | grep -v NAME | awk '{print $1}'`;do kubectl -n seeyon-test scale --replicas=0 deployment $i ;done
# 检查、确认所有的服务都已经停止,直到没有运行的pod为止
kubectl -n seeyon-test get pod

# 2.2 恢复V8数据

# 2.2.1 恢复数据库

如果不是自建的数据库,和客户沟通,由客户执行数据库恢复;自建数据库的恢复,以mysql数据库为例
使用“1.2.1 备份数据库”数据库的备份数据恢复数据库

# 停止mysql服务
systemctl stop mysqld
# 使用备份数据覆盖数据目录,/var/lib/mysql为默认的mysql数据目录,根据实际情况填写
rm -rf /var/lib/mysql
tar -xf mysqldata.tar.gz  -C /var/lib
# 恢复完成后,启动mysql服务
systemctl start mysqld

# 2.2.2 恢复对象存储

若是客户提供的对象存储,和客户沟通,由客户自行恢复;自建的minio备份,根据备份方式选择恢复方式:

  • 方式1、通过mc客户端命令进行的备份,同样使用mc客户端进行恢复
# 配置mc, backupminio是添加的host标识,可以自定义;http://ip:9000 填写实际的minio服务地址加端口;user填写实际的用户;password填写实际的密码
mc config host add backupminio http://ip:9000 user password --api S3v4
# 进入备份目录
cd /data/backup/minio
# 执行备份,seeyon-test-public公共桶名称,seeyon-test-private私有桶名称,seeyon-test-ferry摆渡桶名称,根据实际情况修改桶名称
cd /data/backup/minio
mc rm -r --force backupminio/seeyon-test-public/
mc cp -r seeyon-test-public  backupminio/seeyon-test-public
mc rm -r --force backupminio/seeyon-test-private/
mc cp -r seeyon-test-private  backupminio/seeyon-test-private
mc rm -r --force backupminio/seeyon-test-ferry/
mc cp -r  seeyon-test-ferry  backupminio/seeyon-test-ferry
  • 方式2、通过直接备份数据目录的方式,使用恢复数据目录的方式恢复
# 停止minio服务
systemctl stop minio
# 进入备份目录,执行恢复,/data/app/minio/data为minio的数据盘目录,根据实际情况填写
cd /data/backup/minio/
rm -rf /data/app/minio/data
tar -xf miniodata.tar.gz  -C /data/app/minio
# 恢复完成后,启动服务
systemctl start minio

# 2.2.3 恢复Nacos

通过浏览器登录nacos,在界面直接导入备份的数据
1787127131479.png

# 2.2.4 恢复kafka

同数据库恢复和对象存储恢复类似,根据“1.2.4 备份kafka”的备份数据恢复数据
停服 --> 恢复备份数据 --> 启动服务

# 2.2.5 恢复ElasticSearch

同数据库恢复和对象存储恢复类似,根据“1.2.5 备份ElasticSearch”的备份数据恢复数据
停服 --> 恢复备份数据 --> 启动服务

# 2.2.6 恢复ClickHouse

同数据库恢复和对象存储恢复类似,根据“1.2.6 备份ClickHouse”的备份数据恢复数据
停服 --> 恢复备份数据 --> 启动服务

# 2.2.7 清空Redis

# 集群模式
redis-cli -c -h 127.0.0.1 -p 7001 -a xxxx
flushall
# 单机模式
redis-cli -h 127.0.0.1 -p 6379 -a xxxxxx
flushall

1787128521059.png

# 2.3 恢复V8服务deployment,启动V8系统

参照“1.1 V8系统停服” 所登录的服务器,进入备份目录,执行以下命令启动v8服务

# /data/backup/k8s-seeyon 为备份v8服务deployment的目录,按实际填写
cd /data/backup/k8s-seeyon
# seeyon-test 为v8的namespace,按实际填写
kubectl -n seeyon-test replace --force -f ./
# 查看服务状态,直到所有服务启动完成
kubectl -n seeyon-test get pod
编撰人:liubo