温馨提示×

GitLab在Debian上的备份与恢复策略是什么

小樊
41
2025-12-09 07:26:13
栏目: 智能运维

Debian 上 GitLab 的备份与恢复策略

一 核心策略与范围

  • 备份对象应覆盖:代码仓库、数据库、上传文件、CI 工件、LFS 对象、以及用于加解密与单点登录的敏感配置(如 /etc/gitlab/gitlab.rbgitlab-secrets.json、SSL 证书目录)。GitLab 提供的备份工具会导出应用数据,但默认不包含上述配置文件与证书,需单独备份与恢复。备份文件默认位于 /var/opt/gitlab/backups,可通过配置自定义路径与保留时间。为降低风险,建议将备份文件同步到异地/离线存储,并定期做恢复演练验证可用性。

二 备份策略与实施步骤

  • 标准流程(Omnibus 包)
    1. 配置备份路径与保留时间:编辑 /etc/gitlab/gitlab.rb
      • gitlab_rails[‘backup_path’] = ‘/data/gitlab/backups’
      • gitlab_rails[‘backup_keep_time’] = 604800 # 保留 7 天(单位:秒) 执行:sudo gitlab-ctl reconfigure
    2. 创建备份:sudo gitlab-rake gitlab:backup:create
    3. 定时备份(示例:每天 02:00):
      • 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
    4. 远程/离线留存(示例:SCP 到备份服务器):
      • scp /var/opt/gitlab/backups/*.tar user@remote:/path/to/backups
    5. 手动备份敏感配置与证书:
      • sudo cp /etc/gitlab/gitlab.rb /backup/gitlab.rb.$(date +%F)
      • sudo cp /etc/gitlab/gitlab-secrets.json /backup/gitlab-secrets.json.$(date +%F)
      • sudo rsync -a /etc/ssl/certs/ /backup/ssl-certs.$(date +%F)/
  • 容器化部署(Docker)
    • 通过挂载卷持久化 /etc/gitlab/var/opt/gitlab/var/log/gitlab,对宿主机挂载目录执行备份(如 tar 打包或定时 rsync),恢复时保持卷与目录结构一致即可。

三 恢复策略与实施步骤

  • 标准流程(Omnibus 包)
    1. 准备:在新/目标机器安装同版本 GitLab,先仅恢复数据,暂不覆盖配置。
    2. 停止服务:sudo gitlab-ctl stop unicorn && sudo gitlab-ctl stop sidekiq
    3. 拷贝备份:将备份 tar 放到目标机的备份目录(默认 /var/opt/gitlab/backups)。
    4. 执行恢复:sudo gitlab-rake gitlab:backup:restore BACKUP=<时间戳或编号>(示例:2025_12_09_00_00_00)
      • 按提示输入 yes 确认两次以覆盖现有数据
    5. 启动服务:sudo gitlab-ctl start(或 restart)
    6. 恢复配置与证书:将之前备份的 gitlab.rbgitlab-secrets.json 与 SSL 证书复制回 /etc/gitlab/ 相应位置,再执行 sudo gitlab-ctl reconfigure
    7. 验证:登录 Web,检查项目、用户、Runner、LFS、CI 工件与 Pages 等是否完整一致
  • 容器化部署(Docker)
    • 停止并移除旧容器,确保挂载卷指向已恢复的数据目录后,使用相同运行命令启动新容器,完成数据就位与自动恢复。

四 关键注意事项与最佳实践

  • 版本一致性:备份与恢复的 GitLab 版本应尽量完全一致,避免对象/结构不兼容。
  • 配置与机密:备份工具不涵盖 gitlab.rbgitlab-secrets.json,务必单独、加密、异地保存,并在恢复后第一时间校验权限与密钥是否正确。
  • 保留与监控:通过 backup_keep_time 设置合理保留周期(如 7 天),并配合监控告警与定期恢复演练,确保备份可用。
  • 一致性权衡:部分场景会建议备份前停止 unicorn/sidekiq 以提升一致性;在追求零停机时可采用不停止服务的在线备份,但需接受极小概率的数据不一致风险并做好校验。
  • 安全与合规:备份文件含敏感信息,传输与存放需加密,访问最小化,定期清理过期副本,满足合规审计要求。

0