Gitlab的迁移升级

时间:2025-04-13 07:07:00

Gitlab11.6.5的迁移升级

Gitlab升级是不能跨大版本升级的,根据官方升级路径来操作。

gitlab迁移

首先需要查看当前gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
当前版本是11.6.5

备份源数据

原仓库备份所有的文件

/opt/gitlab/bin/gitlab-rake gitlab:backup:create

将备份内容拷贝到新服务器对应目录下面

scp 1720118803_2024_07_05_11.6.5_gitlab_backup.tar root@127.0.0.1:/opt/

gitlab 恢复备份有两个必要条件:

  1. 备份和恢复需要相同的GitLab版本
  2. 新的环境至少运行过一次

搭建新gitlab仓库

首先搭建一个同样版本是11.6.5的gitlab

设置gitlab的yum源(使用清华镜像源安装GitLab)

在 /etc/yum.repos.d/ 下新建 gitlab-ce.repo,写入如下内容:

cd /etc/yum.repos.d/
vim gitlab-ce.repo
 
[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
 
yum clean all && yum makecache  #缓存编译
安装指定版本的gitlab
yum install -y gitlab-ce-11.6.5

安装完gitlab需要修改配置文件

vim /etc/gitlab/gitlab.rb     进入配置文件修改访问地址

external_url "http://127.0.0.1:8080"

修改好配置文件后,重载一下配置文件,否则不生效,即可启动Gitlab。注意,启动过程较长,需要耐心等待。

gitlab-ctl reconfigure

确认GitLab是否 正常运行

gitlab-ctl status

恢复备份数据到新仓库

使用gitlab-ctl命令停止unicorn(或者puma)以及sidekiq服务

gitlab-ctl stop sidekiq
gitlab-ctl stop unicorn

#校验是否关闭
gitlab-ctl status

拷贝备份文件至backups目录下,并确保有权限,一般指定权限为 777

cp /opt/1720118803_2024_07_05_11.6.5_gitlab_backup.tar  /var/opt/gitlab/backups

赋权

cd /var/opt/gitlab/backups

chmod 777 1720118803_2024_07_05_11.6.5_gitlab_backup.tar

使用gitlab-backup restore进行数据恢复

gitlab-rake gitlab:backup:restore BACKUP=1720118803_2024_07_05_11.6.5
(排除文件名后段"_gitlab_backup.tar")

输入两次yes

启动Gitlab服务

gitlab-ctl start unicorn

gitlab-ctl start sidekiq

gitlab-ctl restart

访问127.0.0.1:8080验证是否迁移成功

gitlab升级

Gitlab升级是不能跨大版本升级的,根据官方升级路径来操作。
注意:

  1. gitLab版本升级,是先小版本升级到最高版本,在升级到下一个大版本,进行依次升级
  2. 比如:12.1.3->12.1.9->12.2.0->12.2.9 小版本升级到*,在向下一个版本升级
  3. 升级前需要备份,或者做镜像、快照等操作
  4. 升级完成后,重启服务,查看响应版本号是否正确
  5. 查看版本

升级到11最高版本

11.6.5版本需要先升级至11最高版本

#停止gitlab
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
#下载安装11最高版本11.11.8
yum install gitlab-ce-11.11.8-ce.0.el7.x86_64
#重新运行配置
gitlab-ctl reconfigure
#启动
gitlab-ctl restart
#查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

修改代码,检查测试git提交是否正常,如果没有问题就当升级成功了

升级到12版本

#停止gitlab
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
#下载安装12版本12.0.12
yum install gitlab-ce-12.0.12-ce.0.el7.x86_64
#重新运行配置
gitlab-ctl reconfigure
#启动
gitlab-ctl restart
#查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

修改代码,检查测试git提交是否正常

升级到12最高版本

#停止gitlab
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
#下载安装12最高版本12.10.14
yum install gitlab-ce-12.10.14-ce.0.el7.x86_64
#重新运行配置
gitlab-ctl reconfigure
#启动
gitlab-ctl restart
#查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
#验证

升级至13

停止gitlab
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
下载13版本13.0.14
yum install gitlab-ce-13.0.14-ce.0.el7.x86_64
重新运行配置
gitlab-ctl reconfigure
启动
gitlab-ctl restart
查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
验证

升级至13最高版本

13.x以前版本关闭unicorn,14.x版本就不支持unicorn,从13版本开始,我使用puma方式,停止方式

停止gitlab
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
下载13最高版本13.12.15
yum install gitlab-ce-13.12.15-ce.0.el7.x86_64
更新
gitlab-ctl pg-upgrade
重新运行配置
gitlab-ctl reconfigure
启动
gitlab-ctl restart
查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
验证

gitlab13.x的最后一个版本 将传统存储转换为哈希存储,也就是13.12.15版本,升级14.x版本先执行下面命令

gitlab-rake gitlab:storage:migrate_to_hashed

执行成功后,会提示如下内容:
There are no projects requiring storage migration. Nothing to do!

全部迁移成功,以下命令查看所列出的项目总数与页面的理应一致
gitlab-rake gitlab:storage:hashed_projects

查看,全部迁移成功以下两条命令应该为 0
gitlab-rake gitlab:storage:legacy_projects
gitlab-rake gitlab:storage:legacy_attachments

列出传统存储的项目以及附件应该也是都为0
gitlab-rake gitlab:storage:list_legacy_projects
gitlab-rake gitlab:storage:list_legacy_attachments

如果执行报错
could not save history to file “/var/opt/gitlab/.psql_history”: 权限不够,需要去赋权

chown git /var/opt/gitlab

赋权后执行报错
显示Enqueuing migration of 673 projects in batches of 200… Done!
673个项目的排队迁移,每批200个……完成!
此时传统存储转HASH显示成功,但是实际没有成功的情况,可以更新下令牌重新转HASH就可以。

#进入数据库终端
gitlab-rails dbconsole
#执行清空命令
UPDATE projects SET runners_token = null, runners_token_encrypted = null;
#退出
exit;
#然后重新执行 hash转储命令,校验后发现已经迁移成功!
gitlab-rake gitlab:storage:migrate_to_hashed

升级至14

停止gitlab
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
下载14版本14.0.12
yum install gitlab-ce-14.0.12-ce.0.el7.x86_64
重新运行配置
gitlab-ctl reconfigure
启动
gitlab-ctl restart
查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
验证

升级至14最高版本

停止gitlab
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
升级至14最高版本
yum install gitlab-ce-14.10.5-ce.0.el7.x86_64
查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
重新运行配置
gitlab-ctl reconfigure
启动
gitlab-ctl restart
验证

升级至15

停止gitlab
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
升级至15.0.5版本
yum install gitlab-ce-15.0.5-ce.0.el7.x86_64
查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
重新运行配置
gitlab-ctl reconfigure
启动
gitlab-ctl restart
验证

升级至15最高版本

停止gitlab
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
升级至15.11.13版本
yum install gitlab-ce-15.11.13-ce.0.el7.x86_64
查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
重新运行配置
gitlab-ctl reconfigure
启动
gitlab-ctl restart
验证