Gitlab 数据备份全攻略:命令、方法与注意事项

文章目录

1、备份命令

可以使用如下命令进行GitLab的备份:

gitlab-backup create(GitLab 12.1之后版本新增)

gitlab-rake gitlab:backup:create (GitLab 12.1及之前版本,之后也可以用)

备份默认生成的tar归档文件

2、备份目录名称说明

名称 说明
db 数据库数据内容
uploads 附件数据备份
repositories Git仓库数据备份
builds CI Job输入日志等数据备份
artifacts CI Job构件数据备份
lfs LFS对象数据备份
registry 容器镜像备份
pages GitLab Pages content数据备份

3、手工备份配置文件

3.1 备份配置文件

提示了由于安全的关系如下的配置文件需要手工去备份:

/etc/gitlab/gitlab-secrets.json

/etc/gitlab/gitlab.rb

示例:kubectl exec -it gitlab-7d7d97d574-5w88f -- gitlab-ctl backup-etc

查看pod挂载到本地的目录路径里是否有gitlab_config_1677288885_2023_02_25.tar

3.2 备份ssh文件

需要登录到容器里进行备份,或者将/etc/ssh在yaml文件里直接写好挂载,示例备份:

通过持载的目录找到在本地为如下示例:

4、备份注意事项

4.1 停止puma和sicdekiq组件

为了保证备份的安全性和完整性,备份时最好停止puma和sicdekiq组件,或者尽量找数据量变化小的时段进行备份,以免造成数据不一致。

Kubectl示例:kubectl exec -it gitlab-7d7d97d574-5w88f -- gitlab-ctl stop puma

docker示例:

4.2 copy策略需要更多磁盘空间

采用copy策略进行备份时会占用额外的一倍空间,因此采用此方式进行备份时需要保证磁盘剩余的空间是已经占用空间的2倍及以上

5、数据备份方法

5.1 docker命令备份

  1. Docker exec -it gitlab-name /bin/bsh进入到容器里面
  2. 执行gitlab-rake gitlab:backup:create STRATEGY=copy 或
    Gitlab-backup create STRATEGY=copy
  3. 直接执行:docker exec -it gitlab-name gitlab-rake gitlab:backup:create STRATEGY=copy
  4. 会在~$HOME/backups/查看到备份的数据文件,示例如下:

5.2 kubectl命令备份

kubectl exec -it gitlab-7d7d97d574-5w88f gitlab-rake gitlab:backup:create STRATEGY=copy

示例如下:

5.3 参数说明

STRATEGY=copy表示能在线数据备份时,如果数据变化过快,会导致备份命令报错, 此copy策略可以很好的解决这个问题。

5.4、选择性备份

参数:SKIP=xx,xx

跳过备份对分对像,可跳过的对像主要有db、uplads、artifacts 、lfs 、terraform_state 、registry 、pages、repositories、packages

示例:

使用gitlab-rake

kubectl exec -it gitlab-7d7d97d574-5w88f gitlab-rake -- gitlab:backup:create SKIP=db STRATEGY=copy

使用gitlab-backup

kubectl exec -it gitlab-7d7d97d574-5w88f -- gitlab-backup create SKIP=db STRATEGY=copy

5.5、非tar备份

备份时创建tar文件是备份最后一步,打包会消耗额外时间,在某些情况下采用不打包的方式会更加方便备份和恢复。

示例:

kubectl exec -it gitlab-7d7d97d574-5w88f -- gitlab-backup create SKIP=tar STRATEGY=copy

5.6、定时备份

Gitlab默认没有定时备份机制,需要借助crontab来完成,如下:

示例:

复制代码
*/2 * * * * kubectl exec -it gitlab-7d7d97d574-5w88f -- gitlab-backup create SKIP=tar STRATEGY=copy CRON=1
相关推荐
Aliex_git5 天前
Dockerfile 优化实践笔记
笔记·学习·gitlab
成为你的宁宁5 天前
Jenkins 自动化部署前后端分离若依项目全攻略:涵盖环境配置、Maven/Node.js 工具安装、GitLab 项目协同,及前后端构建、服务器推送与代码更新验证全步骤
node.js·自动化·gitlab·jenkins·maven
sunshinebo6 天前
一次 GitLab 无法启动的排查:Docker 日志把 500G 磁盘打满
docker·eureka·gitlab
何以不说话6 天前
DevOps、Git 和 GitLab
git·gitlab·devops
ZAEQgyKFs9 天前
永磁同步电机模型预测电流控制+滑模控制 [1]速度环采用滑模控制 滑模控制器采用新型趋近律与扰...
gitlab
马克Markorg9 天前
使用 Docker Compose 本地部署 GitLab 教程
docker·容器·gitlab
大尚来也12 天前
CI/CD 流水线搭建实战:GitHub Actions vs GitLab CI 2026 深度对比与选型指南
ci/cd·gitlab·github
ProgramHan13 天前
github、gitlab、gitee分别都是什么,为什么不能访问?
gitee·gitlab·github
Aliex_git15 天前
Gitlab Runner 配置实践
笔记·学习·ci/cd·gitlab
阿莫西林夹馍15 天前
GitLab的IP地址发生变更导致Runner掉线
gitlab