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 恢复备份有两个必要条件:
- 备份和恢复需要相同的GitLab版本
- 新的环境至少运行过一次
搭建新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升级是不能跨大版本升级的,根据官方升级路径来操作。
注意:
- gitLab版本升级,是先小版本升级到最高版本,在升级到下一个大版本,进行依次升级
- 比如:12.1.3->12.1.9->12.2.0->12.2.9 小版本升级到*,在向下一个版本升级
- 升级前需要备份,或者做镜像、快照等操作
- 升级完成后,重启服务,查看响应版本号是否正确
- 查看版本
升级到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
验证