温馨提示×

CentOS系统中GitLab备份恢复流程

小樊
51
2025-07-08 14:24:08
栏目: 智能运维

在CentOS系统中,GitLab的备份和恢复流程主要包括以下几个步骤:

备份流程

  1. 安装和配置GitLab
  • 安装必要的依赖包,如 curl, openssh-server, postfix 等。
  • 使用 gitlab-ce-omnibus 包安装GitLab。
  • 配置备份路径,编辑 /etc/gitlab/gitlab.rb 文件,设置备份路径,例如:
    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
    gitlab_rails['backup_archive_permissions'] = 0644
    gitlab_rails['backup_keep_time'] = 604800 # 备份保留天数为7天
    
  • 保存并退出编辑器,然后运行以下命令使配置生效:
    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    
  1. 手动备份
  • 使用以下命令创建备份:
    sudo gitlab-rake gitlab:backup:create
    
  • 备份文件默认会保存在 /var/opt/gitlab/backups 目录下。
  1. 自动备份
  • 利用 crontab 设置定时任务,例如每天凌晨2点执行备份:
    0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create
    
  • 确保 /usr/bin/gitlab-rake 符号链接存在,或替换为实际路径。
  1. 备份数据库
  • 找到数据库的名称、用户和密码,这些信息通常位于 /etc/gitlab/gitlab.rb 文件中。
  • 使用 pg_dump 命令备份数据库:
    sudo -u postgres pg_dump -Fc --rolegitlab-psql --passwordYOUR_POSTGRESQL_PASSWORD gitlabhq_production > /backup/gitlab/db_backup.dump
    
  • 将备份文件压缩为一个 tar 文件:
    sudo tar -czvf /backup/gitlab/backup.tar.gz /backup/gitlab/
    
  • (可选)删除旧的备份文件,例如,保留最近7天的备份:
    sudo find /backup/gitlab/ -type f -name "*.tar.gz" -mtime 7 -exec rm {} \;
    

恢复流程

  1. 准备工作
  • 确保备份文件完整。
  • 停止GitLab服务:
    sudo gitlab-ctl stop unicorn
    sudo gitlab-ctl stop sidekiq
    
  1. 恢复数据库
  • 解压备份文件:
    tar -xzf gitlab_backup.tar.gz
    
  • 恢复数据库:
    sudo gitlab-rake gitlab:backup:restore BACKUP=备份文件名
    
  • 在恢复过程中,系统会提示输入两次 yes 以确认操作。
  1. 恢复仓库文件
  • 拷贝仓库文件到指定目录:
    cp -r repositories/* /var/opt/gitlab/git-data/repositories/
    
  1. 启动GitLab服务
  • 恢复完成后,启动GitLab服务:
    sudo gitlab-ctl start
    
  • sudo gitlab-ctl restart
    

注意事项

  • 在创建备份的过程中,GitLab会先备份数据库和仓库文件,然后通过这些文件合并成一个备份压缩包,最后删除文件,只剩一个备份压缩包。因此,需要预留足够大的备份空间。
  • 恢复过程中需要停止所有写入操作,以确保数据一致性。
  • 备份文件中不包含 gitlab.rbgitlab-secrets.json 配置文件,这些需要手动备份。
  • 通过上述步骤,可以在CentOS上为GitLab设置有效的备份和恢复策略,确保数据安全和业务连续性。

希望这些信息能帮助您在CentOS系统中成功备份和恢复GitLab。如果有任何问题,请随时联系。

0