温馨提示×

Ubuntu中GitLab的备份方法有哪些

小樊
45
2026-01-03 09:42:53
栏目: 智能运维

Ubuntu中GitLab的备份方法

一 标准备份与定时任务

  • 手动创建备份:执行命令生成归档,默认存放于**/var/opt/gitlab/backups**,文件名形如时间戳_版本号_gitlab_backup.tar。命令示例:sudo gitlab-backup create(旧版也可用:sudo gitlab-rake gitlab:backup:create)。建议将备份文件拷贝到外部存储或对象存储以实现异地留存。
  • 定时自动备份:使用crontab按日/周执行。示例(每天02:00执行):0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1。如需指定自定义备份目录,请先在gitlab.rb中配置gitlab_rails['backup_path']并执行gitlab-ctl reconfigure使配置生效。

二 关键配置与保留策略

  • 备份路径与权限:在/etc/gitlab/gitlab.rb中设置gitlab_rails['manage_backup_path'] = truegitlab_rails['backup_path'] = "/your/path";创建目录并授权(如chown -R git:git /your/path),随后执行gitlab-ctl reconfigure
  • 保留时间:通过gitlab_rails['backup_keep_time'] = 604800(单位:秒)设置保留周期,例如604800秒=7天7776000秒=90天
  • 归档权限:可设置gitlab_rails['backup_archive_permissions'] = 0644控制备份文件权限。

三 高并发与一致性优化

  • 使用复制策略减少锁竞争:执行gitlab-backup create STRATEGY=copy,在备份期间对仓库进行文件系统级拷贝,可降低高写入场景下的失败概率。
  • 传统方式的风险提示:直接备份时,官方任务会提示可选择性停止Puma/Sidekiq/Unicorn以减少不一致风险(示例:sudo gitlab-ctl stop pumasidekiq)。使用STRATEGY=copy通常无需停机,但在极端并发下仍建议评估维护窗口。

四 备份文件不包含的关键项与异地容灾

  • 敏感与关键配置需单独备份:备份归档不包含**/etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json**,恢复时必须手动准备,否则可能导致无法解密或无法启动
  • 异地/离线留存:将生成的.tar归档通过scp/rsync等工具同步到远程服务器对象存储,实现多副本与灾备。示例:sudo scp /var/opt/gitlab/backups/*.tar user@remote:/path/
  • 校验与巡检:恢复后可执行gitlab-rake gitlab:check SANITIZE=truegitlab-rake gitlab:artifacts:checkgitlab-rake gitlab:lfs:checkgitlab-rake gitlab:uploads:check进行完整性校验。

五 恢复要点(简版)

  • 准备:安装与备份时相同版本的GitLab,已执行gitlab-ctl reconfigure;将备份文件放到配置的backup_path,并确保权限为git:git
  • 停止服务:sudo gitlab-ctl stop pumasidekiq(或按实际组件调整)。
  • 执行恢复:使用时间戳前缀(不含“_gitlab_backup.tar”后缀),如:sudo gitlab-backup restore BACKUP=1686474838_2023_06_11_15.3.2
  • 启动与检查:sudo gitlab-ctl restart,随后运行gitlab-rake gitlab:check等巡检命令确认恢复成功。

0