GitLab在CentOS上的备份恢复流程
导读:CentOS 上 GitLab 备份与恢复流程 一 环境准备与前置检查 确认 GitLab 为 Omnibus 包安装,且版本为 CE/EE 一致(恢复时要求版本一致,避免兼容性问题)。 备份前建议先完成一次 gitlab-ctl rec...
CentOS 上 GitLab 备份与恢复流程
一 环境准备与前置检查
- 确认 GitLab 为 Omnibus 包安装,且版本为 CE/EE 一致(恢复时要求版本一致,避免兼容性问题)。
- 备份前建议先完成一次 gitlab-ctl reconfigure,确保配置生效;备份文件默认位于 /var/opt/gitlab/backups,并确保该目录有足够空间与正确权限(属主 git:git)。
- 恢复前建议暂时避免新写入(如暂停 CI、避免用户推送),以减少数据不一致风险。
二 备份步骤
- 配置备份目录(可选):编辑 /etc/gitlab/gitlab.rb,设置例如
gitlab_rails[‘backup_path’] = ‘/opt/gitlab-backups’
修改后执行:gitlab-ctl reconfigure 使配置生效。 - 执行备份:
- 推荐:gitlab-backup create(新版本命令)
- 兼容:gitlab-rake gitlab:backup:create
- 备份内容包含:仓库数据(Git repositories)、数据库(PostgreSQL)、上传文件(如头像、附件);生成的 tar 包通常位于配置的备份目录,文件名形如 < 时间戳> _gitlab_backup.tar 或 < 时间戳> _< 日期版本> _gitlab_backup.tar。
- 建议同时备份关键配置文件(与数据分开存放):
- /etc/gitlab/gitlab.rb
- /etc/gitlab/gitlab-secrets.json(数据库加密密钥、CI/CD 变量、2FA 等敏感信息)
- 如需保持原有邮件配置,可一并备份 /etc/postfix/ 相关文件。
三 恢复步骤
- 将备份 tar 包复制到配置的备份目录(默认 /var/opt/gitlab/backups),并修正属主属组:
chown git:git /var/opt/gitlab/backups
chown git:git /var/opt/gitlab/backups/< 备份文件> - 准备配置文件:将旧环境的 gitlab.rb 与 gitlab-secrets.json 覆盖到新环境对应路径(恢复时 secrets 必须一致,否则可能导致无法解密或登录异常)。
- 停止写入相关进程(保持其他组件运行):
- 新版本(使用 Puma):gitlab-ctl stop puma;gitlab-ctl stop sidekiq
- 旧版本(使用 Unicorn):gitlab-ctl stop unicorn;gitlab-ctl stop sidekiq
- 执行恢复(BACKUP 取值为备份文件名中 时间戳或时间戳_日期版本 部分,不含 “_gitlab_backup.tar” 后缀):
gitlab-rake gitlab:backup:restore BACKUP=< 时间戳或时间戳_日期版本>
恢复过程中通常会有两次交互式确认,输入 yes 继续。 - 完成后执行:gitlab-ctl reconfigure 与 gitlab-ctl restart,访问页面校验项目、用户、Runner、密钥等是否正常。
四 定时备份与异地容灾
- 定时备份(crontab 示例,每天 02:00 执行):
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
可按需调整保留策略(如保留 30 天):在 gitlab.rb 中设置 gitlab_rails[‘backup_keep_time’] = 2592000(单位:秒)。 - 异地备份(示例思路):
- 使用 scp/rsync + SSH 免密 将备份目录自动同步到备份服务器;
- 或在容器内执行备份后,由宿主机定时将容器内生成的备份文件拷贝并上传至远端存储。
五 常见问题与排错
- 版本不一致导致恢复失败:恢复环境的 GitLab 版本与类型(CE/EE) 必须与备份时完全一致。
- 权限问题:备份目录与 tar 包需属主 git:git,否则可能报权限拒绝。
- secrets 不一致:缺少或错误的 gitlab-secrets.json 会导致数据库加密信息不可用,影响登录与 CI 变量解密。
- 备份文件命名与 BACKUP 参数:BACKUP 应填写 时间戳或时间戳_日期版本(不含后缀),否则会提示找不到备份。
- 服务未停干净:恢复时应停止 puma/unicorn 与 sidekiq,避免写入冲突;恢复后可再启动相关服务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: GitLab在CentOS上的备份恢复流程
本文地址: https://pptw.com/jishu/781027.html
