如何将 gitlab 备份迁移到具有最新 gitlab 版本的新服务器

Posted

技术标签:

【中文标题】如何将 gitlab 备份迁移到具有最新 gitlab 版本的新服务器【英文标题】:How to migrate gitlab backups to new server which has latest gitlab version 【发布时间】:2014-04-28 18:18:31 【问题描述】:

我正在尝试将旧服务器的 gitlab 备份迁移到新服务器。我的旧服务器有 gitlab (gitlab-6.5.1-0),我的新服务器有 gitlab 版本 (gitlab 6.6.5-omnibus)。我使用以下命令从我的旧服务器备份

bundle exec rake gitlab:backup:create RAILS_ENV=production

当我尝试使用此命令在新服务器中恢复此备份时

gitlab-rake gitlab:backup:restore BACKUP=1395394855

我得到以下输出

Unpacking backup ... done
GitLab version mismatch:
  Your current GitLab version (6.6.5) differs from the GitLab version in the backup!
  Please switch to the following version and try again:
  version: 6f6f1588ba5123f156ee3b0635a061745b71fcde

我尝试寻找解决方案。但在所有文档中,它都说备份已迁移到以前的版本。但它们都没有描述如何迁移备份。对此的任何解决方案都表示赞赏!

【问题讨论】:

【参考方案1】:

这个错误信息是由lib/backup/manager.rb#L87-L92产生的:

  settings = YAML.load_file("backup_information.yml")
  ENV["VERSION"] = "#settings[:db_version]" if settings[:db_version].to_i > 0

  # restoring mismatching backups can lead to unexpected problems
  if settings[:gitlab_version] != Gitlab::VERSION
    puts "GitLab version mismatch:".red

好像强制增量备份,如described in this comment:

将备份恢复到新服务器时,我遇到了同样的问题。

backup.rake 在备份时检查 GITLAB 提交号,以及在您从最近一次签出恢复到相同的分支名称时。

我必须:

删除5-2-stable和 使用相同的提交哈希 (git checkout -b 5-2-stable COMMIT-HASH) 再次签出 5-2-stable, 以安装新的5-2-stable 版本和相同的config/gitlab.ymlconfig/database.yml 运行所有任务。 然后我将backup.tar 文件复制到默认/home/git/gitlab/tmp/backups 并运行restore rake 任务。

它没有任何问题。然后我跟着 5-2-stable 到 5-3-stable 升级,一切顺利。

【讨论】:

嗨,vonc。我以前的版本是使用 Bitnami 安装的。在这个版本中没有名为 /home/git 的目录所有数据都驻留在 /opt/gitlab.5.xx 目录中 @NaveenSubramani 那么我不确定。迁移过程可能无法开箱即用。那么,GitLab 支持是一个很好的案例。 github.com/gitlabhq/gitlabhq/issues?state=open【参考方案2】:

根据错误信息,备份存档是由 (gitlab-6.5.1-0) 创建的,无法使用 (gitlab 6.6.5-omnibus) 恢复。

对于简单的解决方案,我建议先安装 gitlab-6.5.1-omnibus 并恢复您的备份存档。然后,通过linux包系统进行升级。如果遇到任何与数据库相关的问题,请运行sudo gitlab-rake db:migrate

【讨论】:

【参考方案3】:

根据Backing up and restoring GitLab上的Gitlab官方文档:

您只能将备份恢复到与创建它的 GitLab 完全相同的版本和类型 (CE/EE)。将存储库从一台服务器迁移到另一台服务器的最佳方式是通过备份恢复。

所以,首先在旧服务器上更新您的 gitlab(即 6.5.1-0 -> 6.6.5 ),然后按照 official documentation 进行操作。

【讨论】:

以上是关于如何将 gitlab 备份迁移到具有最新 gitlab 版本的新服务器的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab迁移

gitlab 从古老的 bitnami 版本 迁移到官方最新版本

gitlab 搭建 备份 升级 迁移恢复

gitlab升级和迁移

gitlab的基本操作--上传下载库的迁移/备份及回收/重命名

Gitlab备份和恢复操作