Gitlab omnibus 8.15.1 升级到 9.5.+

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

升级场景

由于公司要通过gitlab接入ci和cd功能,经测试一个repo不能正常使用,且gitlab9.5之后增加了很多新功能,比较吸引我们

  • GPG Commit Verification: GPG密钥允许您验证签名提交

  • New Navigation Improvements: 界面窗口有所改进,更便捷和美观,可以在老界面和新界面自由切换

  • Project Template: 新增了更多的项目模板

  • Automatic Retry for Failed CI Jobs:自动重试失败的ci job

  • Automatically Monitor Auto Deployed Apps:自动监控自动部署应用程序

  • Merge Request Diff File Navigation:查看merge request时更清晰

更多的特性请查阅:https://about.gitlab.com/2017/08/22/gitlab-9-5-released/

考虑的点及问题

  • 1.postgresql版本问题: 由于我们公司使用的是外部的postgresql和redis,postgresql的版本为9.3,而gitlab9.5.9依赖postgresql 9.6以上的版本,所以在升级gitlab的时候他会升级数据库,但是我们是外部的(AWS RDS),所以他并不能升级,会抛出异常。

  • 2.postgresql的表结构问题:在升级期间,由于版本变化比较大,所以会涉及表结构及表字段的更改,如果使用外部的postgresql,可能会导致不成功

  • 3.gitlab有可能升级失败,失败后必须理解还原,且不影响线上数据

解决方案

根据上述问题,新启动一台实例,首先保持和线上的版本相同,其次将线上的数据还原到这台实例,然后在将新启动的实例进行升级,不过在这其中有几个点必须注意:

  • 1.新启动的实例必须使用本地的postgresql和redis

  • 2.必须将线上的postgresql的数据还原到当前实例的postgresql

  • 3.当前实例上面的psql和pg_dump工具必须和线上版本保持一致(AWS RDS POSTGRESQL)

  • 4.在测试期间,绝对不能和线上使用同一个redis,必须保持redis只有一个connect

  • 5.在gitlab还原数据的时候,其必须在running状态

实施步骤

一、新实例安装线上同版本gitlab


$ curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

$ sudo yum install gitlab-ce-8.15.1-ce.0.el7.x86_64 -y

二、初始化新实例的gitlab

修改配置文件,修改external_url


$ sudo vim /etc/gitlab/gitlab.rb

external_url 'http://git.test.com'

$ sudo gitlab-ctl reconfigure

# 成功后,通过域名映射来访问(注意,这里如果没有增加dns记录,需要添加hosts)

三、还原postgresqlgit-data,与线上保持一致

还原postgresql

1.清除当前实例pgsql的数据


$ gitlab-psql -h /var/opt/gitlab/postgresql -d template1

template1=> DROP DATABASE gitlabhq_production;

DROP

template1=> CREATE DATABASE gitlabhq_production WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';

CREATE

template1=> ALTER DATABASE gitlabhq_production OWNER TO gitlab;

ALTER

2.还原线上数据


$ pg_dump -U gitlab -h HOST -p 5432 gitlabhq_production > gitlabhq_production.sql

$ gitlab-psql -h /var/opt/gitlab/postgresql -d gitlabhq_production < gitlabhq_production.sql

还原Gitlab data

1.首先下载备份文件,我这里保存在s3上面,所以从s3直接下载,如果没有可以执行下面的命令先进行备份,如果有请忽略


$ sudo gitlab-rake gitlab:backup:create SKIP=db  # // 如果有备份不需要执行 //

$ aws s3 cp s3://git-bak/1505322888_2017_10_27_gitlab_backup.tar .

$ cp 1505322888_2017_10_27_gitlab_backup.tar /var/opt/gitlab/backups/

2.进行还原


$ sudo gitlab-rake gitlab:backup:restore SKIP=db BACKUP=1505322888_2017_09_14_gitlab_backup.tar

3.重新配置并访问查看


$ sudo gitlab-ctl reconfigure

四、对当前实例Gitlab进行升级

1.通过yum升级


sudo yum install gitlab-ce-9.5.9-ce.0.el7.x86_64 -y

2.访问正常后,将当前实例的数据导出


sudo -u gitlab-psql pg_dump -h /var/opt/gitlab/postgresql -U gitlab-psql gitlabhq_production > /tmp/gitlab.sql

3.导入到线上的新postgresql(AWS RDS 9.6+)


psql -U gitlab -h HOST -p 5432 -d gitlabhq_production < gitlabhq_production.sql

4.修改gitlab配置,配置pgsql及nginx等

注意,修改后为https,需要增加证书。禁用默认的pgsql及prometheus等(如果需要可以开启)


$ sudo vim /etc/gitlab/gitlab.rb

external_url 'https://git.test.com'

nginx['redirect_http_to_https'] = true

gitlab_rails['time_zone'] = 'Asia/Shanghai'

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "xxx.xxx.com"

gitlab_rails['smtp_port'] = 25

gitlab_rails['smtp_user_name'] = "xxx"

gitlab_rails['smtp_password'] = "xxx"

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['gitlab_email_from'] = 'xxx@xxx.com'

gitlab_rails['db_adapter'] = 'postgresql'

gitlab_rails['db_encoding'] = 'utf8'

gitlab_rails['db_host'] = 'HOST'

gitlab_rails['db_port'] = '5432'

gitlab_rails['db_username'] = 'gitlab'

gitlab_rails['db_password'] = 'xxxxxx'

postgresql['enable'] = false

redis['enable'] = false

gitlab_rails['redis_host'] = 'xxxx.qm7fjs.ng.0001.cnn1.cache.amazonaws.com.cn'

gitlab_rails['redis_port'] = 6379

nginx['enable'] = true

nginx['ssl_certificate'] = '/etc/gitlab/ssl/xxx.com.chain.crt'

nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/xxx.com.key'

node_exporter['enable'] = false

prometheus_monitoring['enable'] = false

5.重新配置gitlab


$ gitlab-ctl reconfigure

6.重新访问,并确认成功
gitlab-1.png
gitlab-2.png
gitlab-3.png










本文转自 赵大鑫 51CTO博客,原文链接:http://blog.51cto.com/xinzong/2045285,如需转载请自行联系原作者
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
存储 Linux 网络安全
Gitlab的基本使用与备份恢复升级
Gitlab的基本使用与备份恢复升级
|
7月前
|
人工智能 IDE Java
IntelliJ IDEA 2023.2正式发布,引入AI助手和GitLab集成,升级你的开发体验!( IDEA 2023.2彻底弃用Struts2,不支持Win7)
IntelliJ IDEA 2023.2正式发布,引入AI助手和GitLab集成,升级你的开发体验!( IDEA 2023.2彻底弃用Struts2,不支持Win7)
180 0
|
7月前
|
存储 Kubernetes Linux
GitLab 最新安装&备份&升级教程(全)
本文介绍了gitlab从安装、升级、备份、恢复一系列操作方法,便于日常更新维护。
263 0
GitLab 最新安装&备份&升级教程(全)
|
8月前
|
安全 关系型数据库 应用服务中间件
服务被挖矿了?凌晨三点还在升级GitLab
gitlab漏洞导致服务器被植入挖矿程序,凌晨三点还在升级。
293 0
|
机器学习/深度学习 传感器 运维
GitLab 新版本发布,抢人大战再升级
当地时间 5 月 23 日,GitLab 宣布发布 GitLab 15.0 大版本更新。GitLab 15.0 在安全性和合规性等重要方面提供了一系列新功能,还提供了可观察性、敏捷规划和工作流自动化以及数据科学工作负载的支持。
254 0
|
应用服务中间件 数据库 nginx
|
开发工具 git 数据安全/隐私保护
gitlab迁移升级
一、迁移步骤 1.首先安装最新版本gitlab(gitlab7.2安装) 2.停止旧版本gitlab服务 3.将旧的项目文件完整导入新的gitlab   bundle exec rake gitlab:import:repos RAILS_ENV=...
1334 0
|
2月前
|
Linux 应用服务中间件 网络安全
linux安装Gitlab
linux安装Gitlab
89 0
|
4月前
|
缓存 数据安全/隐私保护 Docker
安装gitlab
安装gitlab
152 0