记录一次线上gitlab11.x升级gitlab14.x版本操作
前言:gitlab11升级到14还是有挺多需要注意的坑,也算是做一次积累吧,升级前后,gitalb的WEB界面也变化了很多,升级过程需要注意的地方我放到最后说明,挺关键的
一、首先需要下载好要升级的包,这里需要注意,gitlab的官网有说明如何升级,大概就是如下面所示,跨版本升级先要升级到版本最后一个版本才行,比如线上使用11.0.7,要升级到11.11.8才能升级到12.0.12
包下载地址
https://packages.gitlab.com/gitlab/gitlab-ce
官网建议按以下版本来升级

GitLab 8: 8.11.Z > 8.12.0 > 8.17.7
GitLab 9: 9.0.13 > 9.5.10
GitLab 10: 10.0.7 > 10.8.7
GitLab 11: 11.0.6 > 11.11.8
GitLab 12: 12.0.12 > 12.1.17 > 12.10.14
GitLab 13: 13.0.14 > 13.1.11 > 13.8.8 > 13.12.15
GitLab 14: 14.0.12 > 14.3.6 > 14.9.5 > 14.10.5
GitLab 15: 15.0.5 > 15.1.6 (for GitLab instances with multiple web nodes) > 15.4.6 > latest 15.Y.Z
官网文档链接在这里
https://docs.gitlab.com/ee/update/index.html#upgrade-paths
二、升级步骤
2.1 先把nginx停止,外部无法访问了
/usr/local/nginx/sbin/nginx -s stop
2.2 做一次备份,整个过程我只做一次备份,我也在阿里云做镜像以防万一,同时我在操作线上升级前已经反复尝试,还是有信心的
gitlab-rake gitlab:backup:create 备份敏感数据
cp /etc/gitlab/gitlab.rb /data/gitlab/backups
cp /etc/gitlab/gitlab-secrets.json /data/gitlab/backups
2.3 关闭gitlab的部分服务
13.x以前版本关闭unicorn,14.x版本就不支持unicorn,从13版本开始,我使用puma方式,停止方式gitlab-ctl stop puma
gitlab-ctl stop unicorn gitlab-ctl stop sidekiq
2.4 升级新版本
rpm -Uvh 要升级版本.rpm
这里要升级到11.11.8版本为例子
rpm -Uvh gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm
2.5升级完成后,没有报错情况下,需要重新运行配置,否则启动会失败
gitlab-ctl reconfigure
2.6 启动
gitlab-ctl restart
2.7 查看gitlab版本信息
第一种
gitlab-rake gitlab:env:info 第二种
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
2.8 检查服务
gitlab-rake gitlab:check SANITIZE=true systemctl status gitlab-runsvdir.service
2.9 启动nginx
/usr/local/nginx/sbin/nginx
三、检查测试git提交是否正常
我这里会修改代码,然后提交是否正常,如果没有问题就当升级成功了

四、需要注意的问题,我都说明下
4.1 gitlab13.x版本要安装并且开启Puma,因为14版本就不支持unicorn
4.2 升级13版本前一个版本需要升级postgresql,就是升级到了12.10.14版本,再执行更新postgresql
更新
gitlab-ctl pg-upgrade 需要重新运行配置,否则启动会失败
gitlab-ctl reconfigure 启动
gitlab-ctl restart
4.3 在gitlab13.x的最后一个版本 将传统存储转换为哈希存储,也就是13.12.15版本,文档说明
https://docs.gitlab.com/ee/administration/raketasks/storage.html#migrate-to-hashed-storage%20for%20details
步骤如下
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 # 列出传统存储的项目以及附件
gitlab-rake gitlab:storage:list_legacy_projects
gitlab-rake gitlab:storage:list_legacy_attachments
4.5 升级14.x版本前一个版本升级postgresql,也就是13.12.15版本
更新
gitlab-ctl pg-upgrade 需要重新运行配置,否则启动会失败
gitlab-ctl reconfigure 启动
gitlab-ctl restart
最后没问题了,正常使用~
记录一次线上gitlab11.x升级gitlab14.x版本操作的更多相关文章
- Linux(2)---记录一次线上服务 CPU 100%的排查过程
Linux(2)---记录一次线上服务 CPU 100%的排查过程 当时产生CPU飙升接近100%的原因是因为项目中的websocket时时断开又重连导致CPU飙升接近100% .如何排查的呢 是通过 ...
- 记录一次线上bug
记录一次线上bug,总的来说就是弱网和重复点击.特殊值校验的问题. 测试场景一: 在3g网络或者使页面加载速度需要两秒左右的时候,输入学号,提交学生的缴费项目,提交完一个 学生的缴费后, ...
- 原创 记录一次线上Mysql慢查询问题排查过程
背景 前段时间收到运维反馈,线上Mysql数据库凌晨时候出现慢查询的报警,并把原始sql发了过来: --去除了业务含义的sql update test_user set a=1 where id=1; ...
- 【JVM】记录一次线上SWAP偏高告警的故障分析过程
近期遇到一个堆外内存导致swap飙高的问题,这类问题比较罕见,因此将整个排查过程记录下来了 现象描述 最近1周线上服务器时不时出现swap报警(swap超过内存10%时触发报警,内存是4G,因此swa ...
- 记录一次线上yarn RM频繁切换的故障
周末一大早被报警惊醒,rm频繁切换 急急忙忙排查 看到两处错误日志 错误信息1 ervation <memory:0, vCores:0> 2019-12-21 11:51:57,781 ...
- 记录一次线上实施snmp
公司要实施一个部级的项目,我们公司的提供的产品要对接下客户的一个平台监控平台,该监控平台使用snmp,我们公司的产品不支持snmp,所以由我负责在现网实施snmp,记录这次现网 一.生成编译规则 1. ...
- 记录一次线上OOM调优经历
现状: k8s 的一个pod 有32G内存,每秒产生新对象的峰值在900Mb ---- 1900Mb(根据jstat计算Eden区获得) . 修改之前的参数 就一个命令行参数是-Xmx31g; 我修改 ...
- MySQL线上执行大事务或锁表操作
前提 在线执行一些大事务或锁表操作(给某个核心级表加一列或者执行修改操作),此时不但主库从库要长时间锁表,主从延迟也会变大.未避免大事务sql对整个集群产生影响,,我们希望一条SQL语句只在Maste ...
- laravel 项目本地版本为5.5,线上mysql 为5.7.21版本,执行严格模式
看到网上很多说修改 但是在mysql 5.7中没有这个参数设置,故放弃: 结合本项目sina_id 10位超过int的最大范围4294967295,所以报错,修改为bigint 即可.
- 【Java分享客栈】从线上环境摘取了四个代码优化记录分享给大家
前言 因为前段时间新项目已经完成目前趋于稳定,所以最近我被分配到了公司的运维组,负责维护另外一个项目,包含处理客户反馈的日常问题,以及对系统缺陷进行优化. 经过了接近两周的维护,除了日常问题以外,代码 ...
随机推荐
- PAT-basic-1024 科学计数法 java
一.题目 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该 ...
- Java基础——数组的初始化与赋值、循环遍历,Random随机数[大于等于0,小于所给值)
package com.zhao.demo; public class Demo05 { //数组的静态初始化 /*public static void main(String[] args) { i ...
- react 非父子组件传参方式
1.通过父组件当中间人方式,子传父再传子 2.通过发布订阅模式 obj={ list:[], sub(callback){ list.push(callback) }, pub(){ list.for ...
- Failed to apply plugin [id com.android.application]
Failed to apply plugin [id com.android.application] 这种问题解决方法很简单,在BuildOutPut里面就能找到. 解决方法:在gradle.pro ...
- Qt实现带有映射关系的进度条
1.编写继承自widget的新类,这里我们定义为colorWidget; 2.在colorWidget中添加私有变量QVector<QRect> m_rects,用于存放进度条的不同区间( ...
- ethcat开发记录 三
一.关于controlword的控制 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 保留 待定 暂停 故障复位 模式有关 伺服使能 快停 上电 伺服准备好
- Idea 配置 tomacat
步骤 1.点击settings 2.创建tomcat 并找到tomcat的目录 添加完成 3.创建Idea项目
- Number(数字)
Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对 ...
- Topsis法的python实现
TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首 ...
- Vue2路由跳转传参,获取路由参数,Vue监听路由
1 this.$router.push({ 2 // name:路由组件名 3 name: routeName, 4 query: { 5 mapId:this.mapId 6 } 7 }) 8 9 ...