目录
容器数据备份
备份是任何 IT 系统必不可少的一部分,按照不同的系统架构,有不同的备份大致有下列几类:
- 文件级别的备份:直接在应用所属宿主机上运行定时任务,增量或者全量将文件复制到其他远程位置,此方式支持的应用有限,功能单一,恢复依赖于手动恢复。
- 应用级别的备份:通过应用完成备份,例如 gitlab 自带项目的备份,可以将用户数据和数据库一起备份到远程位置,又例如数据库可以将库备份到其他位置。
- 系统级别的备份:例如 mac 自带的备份(Time Machine),或者其他软件实现的全盘备份。
- 虚拟化备份:在有虚拟化的时候,整个操作系统等于多个文件,所以只需要将此文件备份便能实现整个虚拟机的备份,更高阶的备份软件会使用虚拟化提供的 API,实现块改变跟踪(CBT/BCT),增量备份,如果在虚拟机安装了插件,也能支持文件级别的恢复。
- 存储卷级别备份:如果存储有足够的剩余空间,可以启用卷级别的备份,根据不同存储,支持的功能可能有:全量备份、增量备份、压缩、文件级别恢复等等。
以上备份方式可以说是逐渐重量,但是对环境的依赖逐渐减少。比如存储卷级别的备份无需关心上面运行的是什么负载,用统一的方式进行备份,但是应用级别的则只有此应用能做到,其他应用可能无法效仿。
支持容器环境的备份方案
restic:
偶尔在网上搜到的软件,支持Linux、Windows、mac 平台,支持备份、恢复和 mount 三种操作,用法简单,后端支持:本地文件夹、SFTP、HTTP rest server、AWS S3、Openstack Swift、BackBlaze B2、微软 Azure Blob 存储、Google Cloud Storage
项目链接:https://github.com/restic/restic
官方有 Docker 镜像:restic/restic:latest
rsync:
一个用的比较多的同步工具,可以简单的实现文件级别的备份。
有很多人写过相关的文档:
https://www.cnblogs.com/kevingrace/p/6601088.html
https://www.jianshu.com/p/db46c42bf51e
https://blog.csdn.net/weixin_41843699/article/details/90246940
https://averagelinuxuser.com/backup-and-restore-your-linux-system-with-rsync/
- Velero:https://www.objectif-libre.com/en/blog/2020/01/10/kubernetes-backup-stateful-apps/
- Avamar: https://github.com/cn-dp/K8s-Avamar
应用级别备份
- gitlab:https://docs.gitlab.com/ee/raketasks/backup_restore.html
- MongoDB:https://www.jianshu.com/p/0ad0b3b8acbf
- MySQL:https://www.jianshu.com/p/984123a59d35
- HDFS:Cloudera
容器存储自带解决方案(Cloud-Native Storage)
焱融云 :
支持 Kubernetes 标准的 CSI 接口、支持 multi-write 多读写、Qos等
参考资料
https://www.openshift.com/blog/how-to-backup-clone-and-migrate-persistent-volume-claims-on-openshift