原创

优雅管理 GitLab:全面备份与恢复指南

温馨提示:
本文最后更新于 2025年07月23日,已超过 51 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

在企业级项目中,GitLab 扮演着核心的代码托管与持续集成平台角色。定期备份与快速恢复是保障业务连续性的关键。本文将带你一步步:

  1. 自定义备份存储路径
  2. 备份 GitLab 关键配置与数据
  3. 执行备份操作
  4. 在新服务器上恢复 GitLab 实例
  5. 更新外部访问地址

一、自定义备份存储路径

默认情况下,GitLab 会将备份文件存放在 /var/opt/gitlab/backups。如需更改到其他目录:

  1. 编辑配置文件:

    sudo vi /etc/gitlab/gitlab.rb
    `
    
  2. 添加或修改以下行,将路径替换为你所需位置:

    gitlab_rails['backup_path'] = "/data/gitlab/backups"
    
  3. 使配置生效:

    sudo gitlab-ctl reconfigure
    

二、备份关键配置与数据

除了 GitLab 自带的数据备份,还需保留以下关键文件,确保恢复后服务配置无遗漏:

  • GitLab 主配置文件
    /etc/gitlab/gitlab.rb
  • Nginx 配置
    /var/opt/gitlab/nginx/conf
  • Postfix 邮件服务配置
    /etc/postfix/main.cf

可将上述文件打包或同步到远程存储,以便灾难恢复时快速恢复。


三、执行备份

在确保目标存储路径空间充足后,运行以下命令进行全量备份:

sudo gitlab-rake gitlab:backup:create

执行成功后,备份目录下会生成以时间戳命名的 .tar 文件,包含所有仓库、数据库及上传文件等。


四、在新服务器上恢复 GitLab 实例

  1. 新服务器安装 GitLab
    按官方文档完成相同版本的 GitLab 安装。

  2. 拷贝备份文件
    .tar 备份包以及关键配置文件同步到新服务器:

    scp backup.tar root@new-server:/var/opt/gitlab/backups/
    scp gitlab.rb main.cf nginx-conf/ root@new-server:/etc/gitlab/
    
  3. 停止 GitLab 服务

    sudo gitlab-ctl stop unicorn
    sudo gitlab-ctl stop sidekiq
    
  4. 设置备份包权限

    sudo chmod 600 /var/opt/gitlab/backups/backup.tar
    
  5. 执行恢复
    假设备份文件名为 1612753347_2021_02_08_gitlab_backup.tar,则运行:

    sudo gitlab-rake gitlab:backup:restore BACKUP=1612753347_2021_02_08
    

    系统会提示输入 yes 两次以确认操作。

  6. 启动服务

    sudo gitlab-ctl start
    

至此,GitLab 数据与配置已在新服务器上完整恢复。


五、更新外部访问地址

若新服务器 IP 或端口与原环境不同,可在配置文件中修改 external_url

sudo vi /etc/gitlab/gitlab.rb

定位并修改为新的访问地址,例如:

external_url 'http://10.20.31.133:8000'

保存后,执行:

sudo gitlab-ctl reconfigure

完成后,访问 http://10.20.31.133:8000 即可使用恢复后的 GitLab。


通过上述步骤,你可以灵活定制备份路径、保全关键配置,并实现快速、可靠的跨机房容灾恢复。定期演练,方能无忧应对突发故障,保障团队协作与持续集成的稳定运行!

正文到此结束
本文目录