温馨提示×

CentOS上GitLab的备份与恢复方案

小樊
45
2025-11-05 18:19:59
栏目: 智能运维

CentOS上GitLab备份与恢复方案

一、备份方案

1. 手动备份
  • 配置备份路径与保留策略
    编辑GitLab主配置文件/etc/gitlab/gitlab.rb,设置备份存储路径(默认/var/opt/gitlab/backups)和备份文件保留时间(单位:秒,如7776000秒≈90天):

    gitlab_rails['manage_backup_path'] = true
    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
    gitlab_rails['backup_keep_time'] = 7776000
    

    保存后执行sudo gitlab-ctl reconfigure使配置生效。

  • 执行手动备份
    使用gitlab-rake命令创建全量备份,备份文件会自动生成在配置的路径中(文件名格式为时间戳_版本号_gitlab_backup.tar):

    sudo gitlab-rake gitlab:backup:create
    

    若需指定备份文件名前缀,可添加NAME参数:

    sudo gitlab-rake gitlab:backup:create NAME="custom_backup"
    
2. 自动备份(定时任务)
  • 通过Crontab设置定时任务
    编辑当前用户的crontab文件(crontab -e),添加定时任务(如每天凌晨2点执行备份):

    0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
    

    CRON=1参数用于标识定时任务,避免触发邮件通知。

  • Docker部署的自动备份
    若GitLab通过Docker运行,需进入容器执行备份命令。首先创建备份脚本/root/gitlab_backup.sh

    #!/bin/bash
    docker exec gitlab gitlab-rake gitlab:backup:create
    

    赋予脚本执行权限并添加定时任务:

    chmod +x /root/gitlab_backup.sh
    echo "0 2 * * * /root/gitlab_backup.sh" >> /etc/crontab
    

    重启cron服务使配置生效:

    systemctl restart crond
    
3. 备份文件管理
  • 清理过期备份
    使用find命令定期删除超过保留期限的备份文件(如删除30天前的备份):
    find /var/opt/gitlab/backups -type f -mtime +30 -exec rm -rf {} \;
    
  • 异地备份
    通过scprsync将备份文件同步到远程服务器(需提前配置SSH免密登录),例如:
    scp /var/opt/gitlab/backups/*.tar user@remote_server:/remote/backup/path/
    

二、恢复方案

1. 恢复前准备
  • 停止GitLab相关服务
    为确保数据一致性,恢复前需停止GitLab的关键服务(unicornsidekiq):
    sudo gitlab-ctl stop unicorn
    sudo gitlab-ctl stop sidekiq
    
2. 执行恢复操作
  • 放置备份文件
    将备份文件(如1672232546_2023_01_01_15.0.0_gitlab_backup.tar)复制到GitLab备份目录(默认/var/opt/gitlab/backups)。

  • 运行恢复命令
    使用gitlab-rake命令恢复指定备份(BACKUP参数为备份文件的时间戳部分):

    sudo gitlab-rake gitlab:backup:restore BACKUP=1672232546_2023_01_01_15.0.0
    

    执行后会提示“是否覆盖现有数据”,输入yes确认。

3. 恢复后启动
  • 启动GitLab服务
    恢复完成后,启动GitLab所有服务并检查状态:
    sudo gitlab-ctl start
    sudo gitlab-ctl status
    
4. 验证恢复结果
  • 检查Web界面
    访问GitLab的Web地址(如http://your_server_ip),确认能否正常登录。
  • 验证数据完整性
    检查仓库、用户、权限、CI/CD配置等是否与备份前一致。

三、注意事项

  • 版本匹配:恢复时GitLab的版本必须与备份时的版本一致或更高(如备份时为15.0.0,恢复时可使用15.0.x或15.1.x)。
  • 备份文件安全:备份文件包含敏感信息(如用户密码、SSH密钥),需存储在安全位置(如加密磁盘、远程服务器),并限制访问权限。
  • 定期测试恢复:至少每月测试一次恢复流程,确保备份文件可用,避免灾难发生时无法恢复数据。

0