ubuntu下gitlab备份与恢复方法
导读:Ubuntu下GitLab备份与恢复实操指南 一 环境准备与关键注意事项 适用对象为 Omnibus 安装 的 GitLab(Ubuntu 常见)。备份命令在 GitLab 12.1 及更早版本使用 rake 形式,之后版本可用新工具形式...
Ubuntu下GitLab备份与恢复实操指南
一 环境准备与关键注意事项
- 适用对象为 Omnibus 安装 的 GitLab(Ubuntu 常见)。备份命令在 GitLab 12.1 及更早版本使用 rake 形式,之后版本可用新工具形式;两者在功能上等效。恢复时要求 GitLab 版本一致(小版本也尽量一致),避免对象关系与结构不兼容。备份归档默认不包含 /etc/gitlab/gitlab.rb 与 gitlab-secrets.json,迁移需单独处理。为提高大并发写入时的备份一致性,可使用 STRATEGY=copy;备份保留周期可在配置中设置自动清理。
二 备份步骤
-
- 配置备份路径与保留时间
- 编辑配置文件:sudo vim /etc/gitlab/gitlab.rb
- 建议开启并自定义:
- gitlab_rails[‘manage_backup_path’] = true
- gitlab_rails[‘backup_path’] = “/var/opt/gitlab/backups”(可按需修改)
- gitlab_rails[‘backup_keep_time’] = 604800(保留 7 天,单位秒;也可设为 7776000 即 90 天)
- 使配置生效:sudo gitlab-ctl reconfigure
-
- 手动创建备份
- GitLab 12.1 及更早:sudo gitlab-rake gitlab:backup:create
- GitLab 12.2 及之后:sudo gitlab-backup create
- 一致性优化(可选):sudo gitlab-backup create STRATEGY=copy
- 备份文件位于 backup_path,命名形如:TIMESTAMP_VERSION_gitlab_backup.tar
-
- 自动定时备份(Cron)
- 建议以 root 身份添加任务:sudo su - & & crontab -e
- 示例(每天 02:00 执行):0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
-
- 远程/离线留存(可选)
- 使用对象存储或本地挂载目录(Fog Local)上传备份,便于异地保存与灾备。
三 恢复步骤
-
- 前置检查
- 在新/目标机器安装 与备份时相同版本 的 GitLab,完成首次 sudo gitlab-ctl reconfigure 并启动服务;将备份文件放到配置的 backup_path(默认 /var/opt/gitlab/backups),并确保文件属主为 git:git(例如:sudo chown git:git /var/opt/gitlab/backups/*.tar)。
-
- 停止写入服务
- GitLab 13.0+:sudo gitlab-ctl stop puma;sudo gitlab-ctl stop sidekiq
- GitLab 12.x:sudo gitlab-ctl stop unicorn;sudo gitlab-ctl stop sidekiq
-
- 执行恢复
- 仅填写时间戳部分:sudo gitlab-backup restore BACKUP=TIMESTAMP(不要带 “_gitlab_backup.tar” 后缀)
- 如备份时使用了 STRATEGY=copy,恢复时保持一致策略可减少一致性风险
-
- 启动与验证
- 启动:sudo gitlab-ctl start
- 自检:sudo gitlab-rake gitlab:check SANITIZE=true
- 可选数据完整性检查:artifacts、lfs、uploads 等 rake 检查任务
-
- 配置文件与密钥
- 将旧实例的 /etc/gitlab/gitlab.rb 与 /etc/gitlab/gitlab-secrets.json 复制到新实例相同路径并重新配置:sudo gitlab-ctl reconfigure
- 注意:恢复过程可能会覆盖新实例的 secrets,请提前备份本机 secrets 并在恢复后核对。
四 迁移与增量备份
- 实例迁移要点
- 版本一致、备份文件到位、权限正确(属主 git:git)、恢复后执行 reconfigure 与自检;如涉及 HTTPS/SSH 等,确保证书与密钥同步配置。
- 增量备份(GitLab 14.9+)
- 首次全量:sudo gitlab-backup create
- 基于上一次备份创建增量:
- GitLab 14.9–14.10:sudo gitlab-backup create INCREMENTAL=yes BACKUP=PREV_TIMESTAMP
- GitLab 15.0+:sudo gitlab-backup create INCREMENTAL=yes PREVIOUS_BACKUP=PREV_TIMESTAMP
- 可用于加快备份并减少存储占用,但恢复时仍需按依赖链从基础全量开始依次恢复。
五 常见问题与排错
- 权限问题:备份归档放入 backup_path 后执行 chown git:git,避免因权限不足导致恢复失败。
- 版本不匹配:恢复时报版本不一致应升级/降级到备份时版本,或重新在目标版本上做一次全量备份再迁移。
- 服务未停导致不一致:恢复前务必停止 puma/unicorn 与 sidekiq,恢复完成后再启动。
- 配置文件遗漏:备份归档不含 gitlab.rb 与 gitlab-secrets.json,迁移需单独拷贝并 reconfigure,避免实例启动异常或无法解密数据。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu下gitlab备份与恢复方法
本文地址: https://pptw.com/jishu/757742.html
