Gitlab 备份恢复和版本升级
1. gitlab 数据备份 1.1 数据备份 GitLab 提供一条命令 gitlab-backup create,运行命令后会产出一个压缩 tar 归档,包含数据库、Git 仓库与 LFS、CI/CD artifacts、Wiki、附件上传、Pages、注册表等。但它不包含配置文件、密钥、Redis 队列和对象存储,这些要另行处理。 官方提示至少必须单独备份 /etc/gitlab/gitlab-secrets.json(内含数据库加密密钥,丢失后无法解密两步验证和 CI 安全变量)与 /etc/gitlab/gitlab.rb。建议连同 /etc/gitlab/trusted-certs一起备份,避免整机恢复时出现中间人警告。 1.2 执行备份 Omnibus 包安装的环境下,可以直接调用官方封装命令: gitlab-backup create 归档默认生成在 /var/opt/gitlab/backups/,文件名一般是这个样子: 1730000000_2026_10_12_17.5_gitlab_backup.tar。 可以在 /etc/gitlab/gitlab.rb 中调整文件保存路径和时间: # 备份保留7天 gitlab_rails['backup_keep_time'] = 604800 # 备份目录配置 gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" 修改后执行 gitlab-ctl reconfigure。 需要排除某类数据时用 SKIP,例如跳过 CI 输出日志: gitlab-backup create SKIP=builds,artifacts 1.3 生产备份策略 策略 做法 为什么 定时执行 用 cron 每天/每周触发 gitlab-backup create 备份频率决定最多可丢失多少数据(RPO) 异地/对象存储 把 tar 归档拷贝到另一台机器或对象存储(支持 S3 等 remote 配置) 单机磁盘故障时本地归档同样会丢 配置密钥单独备 定期打包 /etc/gitlab 到加密存储 密钥丢失=数据库无法解密,归档也无意义 定期恢复演练 在测试机用备份实际恢复一次 没验证能恢复的备份等于没有备份 提示: ...