Technology · 2019年12月20日

GitLab迁移

今天有个需求,想要把以前一个Gitlab迁移到新的Server上。

我第一个想到的就是用Docker在新Server上创建Gitlab,我比较喜欢用docker-compose,因此docker-compose.yml如下:



创建之后第一次启动较久,需要耐心,知道可以在浏览器里输入本机IP看到Gitlab的界面。

我首先尝试了将原机器里/etc/gitlab和/var/opt/gitlab的内容都拷贝到新机器上,但是不行。所以还是得要做Migration。

过程如下:参考《Migrating GitLab to Another Server


原机器:

  1. gitlab-ctl stop unicorn
  2. sudo gitlab-ctl stop sidekiq
  3. gitlab-rake gitlab:backup:create
  4. 生成的备份文件位于:/var/opt/gitlab/backups/,名称格式为XXXXXXXXXX_gitlab_backup.tar或XXXXXXXXXX_<year>_<mm>_<dd>_<version>_gitlab_backup.tar(取决于当前版本)
  5. 然后将上述文件,连同在/etc/gitlab下的所有文件,都拷贝到新机器的同样位置。
  6. 用chown将上述文件的用户改为git

新机器

  1. gitlab-ctl stop unicorn
  2. gitlab-ctl stop sidekiq
  3. gitlab-rake gitlab:backup:restore BACKUP=XXXXXXXXX
  4. gitlab-ctl start
  5. gitlab-rake gitlab:check SANITIZE=true
  6. 如果做5的时候还有一些错误,界面上会指出如何解决,运行其提示的命令即可。

我当时遇到的最大的一个问题是,原机器上的gitlab版本太低了,是8.x.x,而用docker的最新gitlab-ce版本已经到了12.5.5。

解决办法有两个思路,一个是把原机器上的gitlab升级到12.5.5,然后备份;一个是在新机器上装一个8.x.x的版本,然后再迁移。

我走了前边那条路,因为docker貌似没有那么旧的gitlab-ce版本。

由于操作系统是CentOS,因此用yum install gitlab-ce即可升级。但是,不支持从8直接跳到12,只能够一个主版本一个主版本一点一点地升级。

参考官方文档《Upgrade recommendations》,我的升级路径是8.3.4->8.17.7->9.5.10->10.8.7->11.11.8->12.5.5。

其实yum上最新的gitlab-ce已经是12.5.8了,但docker那边用latest拿到的还是12.5.5,因此我也就升到了12.5.5。

重复备份恢复的流程,一切顺利。