CentOS中GitLab备份策略有哪些
小樊
44
2025-11-21 20:35:07
CentOS 上 GitLab 备份策略全景
一 备份范围与边界
- 全量备份为主:使用内置命令可一次性打包备份应用数据,覆盖数据库、仓库、uploads、builds、artifacts、pages、LFS objects等;自 GitLab 14.7 起还包含Terraform 状态,自 16.1 起包含项目级安全文件。注意:备份默认不包含配置文件(如 /etc/gitlab/gitlab.rb)、TLS 密钥与证书、以及Redis/Sidekiq 作业等系统级内容,这些需单独备份。若使用 PgBouncer,备份命令需额外参数。命令形式:Omnibus 包推荐用 gitlab-backup create(GitLab 12.2+ 可用,亦兼容 rake 方式),老版本可用 gitlab-rake gitlab:backup:create。
二 本地定时全量备份
- 关键配置(/etc/gitlab/gitlab.rb):建议显式设置备份路径与保留时间,例如:
- gitlab_rails[‘manage_backup_path’] = true
- gitlab_rails[‘backup_path’] = “/var/opt/gitlab/backups”
- gitlab_rails[‘backup_archive_permissions’] = 0644
- gitlab_rails[‘backup_keep_time’] = 604800(保留7 天,单位为秒)
修改后执行:gitlab-ctl reconfigure 使配置生效。
- 定时任务(crontab):例如每天 02:00 执行
- 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
可按需调整为每周、每月或多次日备份,确保与保留策略匹配。
三 异地与自动化传输
- 远程拷贝:将本地备份目录(如 /var/opt/gitlab/backups)通过 scp/rsync 推送到备份服务器或对象存储挂载点,实现异地备份。建议基于SSH 免密登录(ssh-keygen + authorized_keys)提高可靠性与自动化程度。
- 编排脚本:将“本地备份 + 远程传输 + 清理过期备份”封装为 Shell 脚本,由 cron 按计划触发,便于统一日志与异常处理。
四 配置与密钥的单独备份
- 必须单独备份的敏感项:/etc/gitlab/gitlab.rb(实例配置)、/etc/gitlab/gitlab-secrets.json(密钥与令牌)、以及 /var/opt/gitlab/nginx/conf(Nginx 配置)、/etc/postfix/main.cf(邮件配置)等。迁移或灾难恢复时,这些文件与数据备份需同时就位,才能确保实例完整恢复与可用性。
五 恢复与高可用建议
- 恢复要点:恢复前建议停止写入服务(如 unicorn、sidekiq),执行恢复命令(如 BACKUP=时间戳),完成后启动服务;不同版本命令形式略有差异,但流程一致。务必在恢复前做好配置与密钥的就位与版本匹配。
- 高可用与策略组合:对关键业务可结合主备架构/多活与定期演练,形成“本地定时全量 + 异地传输 + 定期校验”的组合策略,确保在磁盘故障、站点级别灾难时仍可快速恢复。