插件窝 干货文章 介绍gitlab的备份恢复与升级

介绍gitlab的备份恢复与升级

GitLab 备份 sudo 升级 935    来源:    2025-05-22

GitLab 备份、恢复与升级指南

一、GitLab 备份

1. 备份方法

GitLab 提供了内置的备份工具,使用以下命令创建完整备份:

sudo gitlab-rake gitlab:backup:create

2. 备份内容

默认备份包括: - 数据库 - 仓库数据 - 附件 - CI/CD 作业日志 - 容器注册表镜像 - GitLab Pages 内容 - 包 - 群组 wiki

3. 备份配置

/etc/gitlab/gitlab.rb 中可配置备份选项:

# 备份存储路径
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

# 备份保留时间(秒)
gitlab_rails['backup_keep_time'] = 604800  # 7天

# 备份压缩方式
gitlab_rails['backup_archive_permissions'] = 0644

配置后需运行 sudo gitlab-ctl reconfigure 使更改生效。

4. 选择性备份

可以只备份特定部分:

# 只备份仓库
sudo gitlab-rake gitlab:backup:create SKIP=db,uploads

# 可用SKIP选项: db, uploads, repositories, builds, artifacts, lfs, registry, pages

二、GitLab 恢复

1. 恢复前提条件

  • 必须使用与备份时相同版本的 GitLab
  • 服务器配置应与备份时相同(路径、数据库等)

2. 恢复步骤

  1. 停止相关服务:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
  1. 执行恢复(替换TIMESTAMP为备份文件中的时间戳):
sudo gitlab-rake gitlab:backup:restore BACKUP=TIMESTAMP
  1. 重启并检查服务:
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

3. 恢复特定数据

# 只恢复数据库
sudo gitlab-rake gitlab:backup:restore BACKUP=TIMESTAMP SKIP=repositories,uploads

三、GitLab 升级

1. 升级前准备

  1. 查看当前版本:
sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
  1. 备份当前系统:
sudo gitlab-rake gitlab:backup:create
  1. 检查升级路径:

- 参考官方升级路径建议 - 不能跨越大版本升级(如 12.x → 14.x 需先升级到 13.x)

2. 升级方法

方法一:Omnibus 包升级

  1. 停止 GitLab:
sudo gitlab-ctl stop
  1. 获取新版包:
# 对于Ubuntu/Debian
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get update

# 对于CentOS/RHEL
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  1. 执行升级:
# Ubuntu/Debian
sudo apt-get install gitlab-ce

# CentOS/RHEL
sudo yum install gitlab-ce
  1. 重新配置并启动:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

方法二:手动下载安装包

  1. 从官网下载对应版本的安装包
  2. 使用包管理器安装:
# Debian/Ubuntu
sudo dpkg -i gitlab-ce-<version>.deb

# CentOS/RHEL
sudo rpm -Uvh gitlab-ce-<version>.rpm

3. 升级后检查

  1. 检查服务状态:
sudo gitlab-ctl status
  1. 运行健康检查:
sudo gitlab-rake gitlab:check SANITIZE=true
  1. 登录Web界面确认功能正常

四、最佳实践

  1. 备份策略

    • 定期自动备份(如每日)
    • 备份文件异地存储
    • 测试备份恢复流程
  2. 升级策略

    • 先在测试环境验证升级
    • 阅读目标版本的升级说明和破坏性变更
    • 避免在生产环境直接升级到最新版本
  3. 监控

    • 监控备份任务是否成功
    • 监控升级后系统性能
  4. 文档

    • 记录每次备份和升级操作
    • 维护回滚计划

通过遵循这些指南,您可以确保GitLab数据的安全性和系统的稳定性。