温馨提示×

GitLab在Debian下如何进行数据迁移

小樊
39
2025-11-07 12:39:36
栏目: 智能运维

GitLab在Debian下的数据迁移步骤

一、迁移前准备

  1. 版本一致性检查:新旧服务器的GitLab版本需保持一致或兼容(如旧版本为16.2.4,新版本建议安装相同版本),避免恢复数据时因版本差异导致错误。可通过cat /opt/gitlab/embedded/service/gitlab-rails/VERSION查看旧版本,新服务器安装时指定对应版本。
  2. 备份旧服务器数据
    • 完整备份:使用GitLab内置工具创建包含数据库、仓库、配置等的完整备份,命令:sudo gitlab-rake gitlab:backup:create。备份文件默认存放在/var/opt/gitlab/backups目录,文件名格式为时间戳_gitlab_backup.tar(如1725431200_2024_09_04_16.2.4_gitlab_backup.tar)。
    • 单独备份关键文件:将/etc/gitlab/gitlab.rb(配置文件)、/etc/gitlab/gitlab-secrets.json(密钥文件)复制到安全位置,后续恢复时需用到。

二、新服务器环境搭建

  1. 安装GitLab:在新Debian服务器上安装与旧服务器相同版本的GitLab。以GitLab CE(社区版)为例,步骤如下:
    • 添加GitLab仓库:curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
    • 安装GitLab:sudo EXTERNAL_URL="http://新服务器IP" apt-get install gitlab-ce(将新服务器IP替换为实际地址)。
  2. 配置基础参数:编辑/etc/gitlab/gitlab.rb,设置external_url(实例访问URL)、gitlab_rails['gitlab_shell_ssh_port'](SSH端口,默认22)等参数,确保与新环境匹配。

三、数据迁移执行

  1. 传输备份文件到新服务器:使用scp命令将旧服务器的备份文件(含gitlab-backup.targitlab.rbgitlab-secrets.json)复制到新服务器的/var/opt/gitlab/backups目录。例如:
    scp /var/opt/gitlab/backups/1725431200_2024_09_04_16.2.4_gitlab_backup.tar user@新服务器IP:/var/opt/gitlab/backups/
    scp /etc/gitlab/gitlab.rb user@新服务器IP:/etc/gitlab/
    scp /etc/gitlab/gitlab-secrets.json user@新服务器IP:/etc/gitlab/
  2. 恢复数据到新服务器
    • 设置备份文件权限:确保备份文件可执行,命令:chmod 755 /var/opt/gitlab/backups/*.tar
    • 停止相关服务:停止GitLab的unicorn、sidekiq、nginx等服务,避免数据冲突:
      sudo gitlab-ctl stop unicorn
      sudo gitlab-ctl stop sidekiq
      sudo gitlab-ctl stop nginx
    • 执行恢复命令:使用gitlab-rake恢复备份,命令:sudo gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=时间戳(时间戳需与备份文件名中的时间戳一致,如1725431200)。恢复过程中会提示“是否删除现有表”“是否重建authorized_keys文件”,均选择yes
    • 恢复密钥文件:将传输来的gitlab-secrets.json复制到新服务器的/etc/gitlab/目录,覆盖现有文件。
  3. 迁移仓库数据(可选补充):若需单独迁移仓库(如/var/opt/gitlab/repositories目录),可使用rsync命令同步:
    sudo rsync -avz /var/opt/gitlab/repositories/ user@新服务器IP:/var/opt/gitlab/repositories/
    同步后需检查目录权限(chown -R git:git /var/opt/gitlab/repositories)。

四、恢复后配置与验证

  1. 重新配置GitLab:运行sudo gitlab-ctl reconfigure,使gitlab.rb中的配置生效。
  2. 启动GitLab服务:启动所有服务并设置为开机自启:sudo gitlab-ctl start
  3. 验证迁移结果
    • 访问新服务器的GitLab实例(http://新服务器IP),检查登录页面是否正常。
    • 登录后查看项目列表、用户权限、CI/CD配置、仓库文件等,确保所有数据完整迁移。
    • 测试基本功能(如创建项目、提交代码、发起合并请求),确认系统运行正常。

注意事项

  • 测试环境优先:生产环境迁移前,建议在测试环境模拟整个流程,排查潜在问题。
  • 数据一致性保障:迁移过程中避免修改旧服务器数据,停止服务可防止数据写入冲突。
  • 权限检查:恢复后需检查用户、项目权限是否正确,尤其是git用户的目录归属(chown -R git:git /var/opt/gitlab/)。

0