作者:刘健 后端开发工程师
目录
一、需备份的数据
二、在云航项目中使用
三、备份任务说明
一、需备份的数据
kubernetes在运行中,通常会产生两类数据:
-
kubernetes集群资源对象数据。
-
容器运行时产生的数据。
针对cloudUp项目而言,需要备份的数据如下:
-
kubernetes集群资源对象数据:kubernetes集群资源对象数据,通常存储在集群控制平面连接的etcd中。所以只需要备份etcd中的数据就可以了。
-
容器运行时产生的数据:cloudUp容器在运行过程中,会产生以下数据。
-
Postgres:cloudUp portal端使用的关系数据库。用于存储portal的用户数据,配置数据等。
-
Mongo:cloudUp devops端使用的nosql数据库。用于存储devops端的系统配置数据,任务数据等。
-
Mysql:cloudUp devops端使用的关系数据库。用于存储devops的用户数据,及用户登录数据等。
-
minio:cloudUp devops端使用的对象数据库。用于存储devops运行时产生的日志数据等。
二、在云航项目中使用
//backup微服务
响应⽤户的备份策略,并创建备份任务。备份策略有:即时备份和定时备份。
触发备份任务时,微服务中,创建备份任务pod。并监听pod的运行状态。记录任务执行结果到数据库中。
//备份任务
备份任务使用独立的pod运行。备份任务采用命令行的方式,接收备份参数并进行相应处理。
备份任务可以将cloudUp中的数据备份到minio,sftp和独立数据卷中,也可以在备份的数据中选择某⼀个进行恢复。
三、备份任务说明
备份恢复采用单独工具的方式独立开发。可以通过Pod的方式与cloudUpi配套使用,也可以某个独立的环境中使用。
//备份/恢复kubernetes
对于kuberentes,只需要对etcd进行备份与恢复。etcd官方提供了snapshot的方式进行数据备份与恢复。本次也是依赖于官方提供的备份方式进行备份与恢复。
-
备份etcd
etcd的备份使用官方提供的etcdctl工具。
获取工具并执行:在golang中,可以使用调用etcdutl依赖包go.etcd.io/etcd/etcdut L/v3中的snapshot..Save()的方法进行数据备份。
备份完成后,会根据传入的文件名(dbpath),生成备份文件。根据传入的参数,选择将备份文件打包并传入到stp,minio或数据卷中。
-
恢复etcd
etcd的恢复使用官方提供的etcdctl.工具。
获取工具并执行:在golang中,可以使用调用etcdutl依赖包go,etcd.io/etcd/etcdutl/v3中的snapshot.Restore()方法进行数据恢复。
etcd的恢复,是生成一个新的etcd的数据目录,然后需要手动将新后动的etcd数据目录,替换成生成的数据目录
//备份恢复portal
portal需要备份和恢复的有postgreso。
-
备份bostgres
postgres的备份采用官方提供的pg dump.工具。
获取pg_dump工具:pg_dump工具是postgres自带,并依赖于postgres环境运行。故采用portal使用的对应版本的oostgres作为基础镜像时,就可以使用此工具。
执行pg_dump工具:在golang中使用exec.Command方法后动pg_dump工具
-
恢复postgres
使用对应的sqldriveri连接到新的postgres数据库。然后执行需要恢复到sql语句。
//备份恢复devops
备份和恢复devops:涉及到mongo,minio和mysql
-
备份mongo
mongo备份使用官方提供的MongoDump工具。
获取工具并执行:在golang中,可以使用调用依赖包github.com/mongodb/mongo-tools/mongodump中的MongoDump.Dump()方法进行数据备份。
-
恢复mongo
mongol的恢复使用了官方提供的MongoRestore工具。
获取工具并执行:在golang中,可以使用调用依赖包github,com/mongodb/mongo-tools/mongorestore中的MongoRestore.Restore()方法进行数据恢复
-
备份minio
minio的备份,先获取一个桶下的所有object,然后逐一获取object并打包成一个统一的备份文件。
-
恢复minio
minio的恢复,将备份的objecti重新写入到minio的对应桶中。
-
备份mysql
mysqli备份采用mysq驱动,执行sql语句的方式,从mysql数据库中查询并拼接成sql语句。
-
恢复mysql
mysqlt恢复采用mysql驱动,执行备份sql语句的方式。
//备份数据存储
根据传入的参数,决定将数据存储到那个目标存储中心。cloudUp定义了三个存储中心。
Minio:传入的参数store-.minio-file有值时,将数据存储到minio中。
SFTP:传入的参数store-sftp-file有值时,将数据存储到sftp中。
volume:传入的参数store-volume-file有值时,将数据存储到volume中。
本次分享就到这里啦~
版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。
公众号搜索神州数码云基地,了解更多技术干货。