//雪花飘落特效 //右上角github跳转   

gitlab多版本之间升级方法总结

1. 注意事项:

1,不同版本之间的注意事项(需要注意的是每个版本之间的问题官方提供了修复的方法,如果没有修复的话,更新下一个版本会报错,需要回退到上个版本修复后,才能成功升级下一个版本)
https://docs.gitlab.com/ee/update/index.html#1420

2,不同版本之间postgresql数据库需要注意的事项及升级方法
https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server

3,gitlab不能跨版本间升级,需要根据官方提供的路线升级。

4,gitlab的数据备份恢复只能在相同版本之间操作。

2. 低版本升级最新版本及不同主机之间的实现方法

点击查看代码
本教程总结为yum rpm包安装,源码安装方式需要自行总结。



一、当前版本信息收集:


1,腾讯云主机,本地原主机gitlab版本升级。

2,确认安装方式:
[root@BetaTWS1 ~]# rpm -qa gitlab-ce
gitlab-ce-12.3.5-ce.0.el7.x86_64


3,查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

4,检查gitlab状态
gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


5,#系统版本确认
[root@BetaTWS1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

6,#系统内存信息确认:
[root@BetaTWS1 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        2.9G        161M        206M        4.5G        4.2G
Swap:            0B          0B          0B

7,#内核版本确认
[root@BetaTWS1 ~]# uname -r
3.10.0-1127.el7.x86_64


8,服务停止前后端口检查(服务器上存在其他服务防止端口被占用问题)
[root@VM-16-13-centos packages]# netstat -nlpt #gitlab启动状态当前端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:28022           0.0.0.0:*               LISTEN      1533/sshd           
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      21774/grafana-serve 
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1506/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      21727/nginx: master 
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      21727/nginx: master 
tcp        0      0 127.0.0.1:9121          0.0.0.0:*               LISTEN      20748/redis_exporte 
tcp        0      0 127.0.0.1:9090          0.0.0.0:*               LISTEN      20714/prometheus    
tcp        0      0 127.0.0.1:9187          0.0.0.0:*               LISTEN      21756/postgres_expo 
tcp        0      0 127.0.0.1:9093          0.0.0.0:*               LISTEN      20600/alertmanager  
tcp        0      0 127.0.0.1:9100          0.0.0.0:*               LISTEN      20691/node_exporter 
tcp        0      0 127.0.0.1:9229          0.0.0.0:*               LISTEN      21715/gitlab-workho 
tcp        0      0 127.0.0.1:9168          0.0.0.0:*               LISTEN      21734/puma 4.3.3.gi 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      21727/nginx: master 
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      21819/unicorn maste 
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      21701/sidekiq 5.2.7 
tcp        0      0 127.0.0.1:9236          0.0.0.0:*               LISTEN      20619/gitaly        
tcp6       0      0 ::1:25                  :::*                    LISTEN      1506/master         
tcp6       0      0 :::9094                 :::*                    LISTEN      20600/alertmanager  
tcp6       0      0 ::1:9168                :::*                    LISTEN      21734/puma 4.3.3.gi 

[root@VM-16-13-centos packages]# gitlab-ctl stop 
ok: down: alertmanager: 1s, normally up
ok: down: gitaly: 0s, normally up
ok: down: gitlab-exporter: 0s, normally up
ok: down: gitlab-workhorse: 1s, normally up
ok: down: grafana: 0s, normally up
ok: down: logrotate: 1s, normally up
ok: down: nginx: 0s, normally up
ok: down: node-exporter: 1s, normally up
ok: down: postgres-exporter: 0s, normally up
ok: down: postgresql: 0s, normally up
ok: down: prometheus: 1s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 1s, normally up
ok: down: sidekiq: 1s, normally up
ok: down: unicorn: 0s, normally up

[root@VM-16-13-centos packages]# gitlab-ctl status
down: alertmanager: 19s, normally up; run: log: (pid 1564) 235301s
down: gitaly: 18s, normally up; run: log: (pid 1581) 235301s
down: gitlab-exporter: 18s, normally up; run: log: (pid 1563) 235301s
down: gitlab-workhorse: 18s, normally up; run: log: (pid 1562) 235301s
down: grafana: 17s, normally up; run: log: (pid 1574) 235301s
down: logrotate: 17s, normally up; run: log: (pid 1560) 235301s
down: nginx: 16s, normally up; run: log: (pid 1575) 235301s
down: node-exporter: 16s, normally up; run: log: (pid 1571) 235301s
down: postgres-exporter: 15s, normally up; run: log: (pid 1559) 235301s
down: postgresql: 15s, normally up; run: log: (pid 1587) 235301s
down: prometheus: 15s, normally up; run: log: (pid 1561) 235301s
down: redis: 14s, normally up; run: log: (pid 1598) 235301s
down: redis-exporter: 14s, normally up; run: log: (pid 1565) 235301s
down: sidekiq: 13s, normally up; run: log: (pid 1580) 235301s
down: unicorn: 11s, normally up; run: log: (pid 1586) 235301s

[root@VM-16-13-centos packages]# netstat -nlpt 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:28022           0.0.0.0:*               LISTEN      1533/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1506/master         
tcp6       0      0 ::1:25  



#gitlab认证文件
/etc/gitlab/gitlab-secrets.json
#gitlab配置文件
/etc/gitlab/gitlab.rb   

#默认情况下,GitLab 管理authorized_keys位于 git用户主目录中的文件。对于大多数安装,这将位于 下 /var/opt/gitlab/.ssh/authorized_keys,但您可以使用以下命令authorized_keys在您的系统上找到:
getent passwd git | cut -d: -f6 | awk '{print $1"/.ssh/authorized_keys"}'
该authorized_keys文件包含允许访问 GitLab 的用户的所有公共 SSH 密钥。但是,为了维护单一的事实来源,需要配置Geo以通过数据库查找执行 SSH 指纹查找。



https://docs.gitlab.com/ee/update/plan_your_upgrade.html
在升级之前和之后,立即执行升级前和升级后检查以确保 GitLab 的主要组件正常工作:
1.检查一般配置:
sudo gitlab-rake gitlab:check

2.确认可以解密加密的数据库值:
sudo gitlab-rake gitlab:doctor:secrets

3.在 GitLab UI 中,检查:
用户可以登录。
项目列表可见。
可以访问项目问题和合并请求。
用户可以从 GitLab 克隆存储库。
用户可以将提交推送到 GitLab



gitlab备份过程:
1,要求:
sudo yum install rsync

2,备份时间戳
备份存档保存在文件中backup_path指定的 中 config/gitlab.yml。文件名是[TIMESTAMP]_gitlab_backup.tar,其中TIMESTAMP标识每个备份的创建时间,以及 GitLab 版本。如果您需要恢复 GitLab 并且有多个备份可用,则需要时间戳。
例如,如果备份名称为1493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar,则时间戳为1493107454_2018_04_25_10.6.4-ce

3,备份 GitLab
GitLab 提供了一个命令行界面来备份整个实例,包括:
Database
Attachments
Git repositories data
CI/CD job output logs
CI/CD job artifacts
LFS objects
Container Registry images
GitLab Pages content
Snippets
Group wikis

备份不包括:
Terraform state files
Package registry files
Mattermost data

3.1
GitLab 不备份任何配置文件、SSL 证书或系统文件。强烈建议您阅读有关存储配置文件的内容。https://docs.gitlab.com/ee/raketasks/backup_restore.html#storing-configuration-files

4,根据您的 GitLab 版本,如果您使用 Omnibus 包安装了 GitLab,请使用以下命令:
GitLab 12.2 或更高版本:
sudo gitlab-backup create

GitLab 12.1 及更早版本:
gitlab-rake gitlab:backup:create

4.1备份策略选项
默认备份策略是使用 Linux 命令tar和gzip. 这在大多数情况下工作正常,但在数据快速变化时可能会导致问题。
当tar读取数据时数据发生变化,file changed as we read it可能会发生错误,并导致备份过程失败。为了解决这个问题,8.17 引入了一种名为copy. 该策略在调用tar和之前将数据文件复制到一个临时位置gzip,以避免错误。
一个副作用是备份过程需要额外占用 1 倍的磁盘空间。该过程会尽最大努力在每个阶段清理临时文件,这样问题就不会复杂化,但对于大型安装来说,这可能是一个相当大的变化。这就是为什么该copy策略在 8.17 中不是默认设置的原因。
要使用该copy策略而不是默认的流策略,请STRATEGY=copy在 Rake 任务命令中指定 。例如:
sudo gitlab-backup create STRATEGY=copy    #推荐备份方式

GitLab 12.1 及更早版本的用户应改用该命令:
gitlab-rake gitlab:backup:create。


4.2备份文件名
如果您使用自定义备份文件名,则无法 限制备份的生命周期。
默认情况下,备份文件是根据上一个备份时间戳部分中的规范创建的。但是,您可以[TIMESTAMP]通过设置BACKUP 环境变量来覆盖文件名的一部分。例如:
sudo gitlab-backup create BACKUP=dump

GitLab 12.1 及更早版本的用户应改用该命令gitlab-rake gitlab:backup:create。
生成的文件名为dump_gitlab_backup.tar. 这对于使用 rsync 和增量备份的系统很有用,并且可以显着提高传输速度。

4.2.1限制本地文件的备份生命周期(修剪旧备份)
如果您使用自定义文件名 进行备份,则本节中描述的过程将不起作用。
为防止定期备份使用所有磁盘空间,您可能需要为备份设置有限的生命周期。下次运行备份任务时,backup_keep_time会修剪早于 的备份。
此配置选项仅管理本地文件。GitLab 不会修剪存储在第三方对象存储中的旧文件, 因为用户可能没有列出和删除文件的权限。建议您为对象存储(例如AWS S3)配置适当的保留策略。
对于 Omnibus GitLab 软件包:
编辑/etc/gitlab/gitlab.rb:
## Limit backup lifetime to 7 days - 604800 seconds
gitlab_rails['backup_keep_time'] = 604800

4.2.2备份存档权限
GitLab ( 1393513186_2014_02_27_gitlab_backup.tar)创建的备份存档默认拥有 owner/group git/git和 0600 权限。这是为了避免其他系统用户读取 GitLab 数据。如果您需要备份存档具有不同的权限,则可以使用该archive_permissions 设置。
对于 Omnibus GitLab 软件包:
编辑/etc/gitlab/gitlab.rb:
gitlab_rails['backup_archive_permissions'] = 0644 # Makes the backup archives world-readable


4.2.3配置 cron 进行每日备份
以下 cron 作业不会备份您的 GitLab 配置文件 或SSH 主机密钥。
您可以安排一个 cron 作业来备份您的存储库和 GitLab 元数据。
对于 Omnibus GitLab 软件包:
为root用户编辑 crontab :
sudo su -
crontab -e
在那里,添加以下行以安排每天凌晨 2 点的备份:
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
CRON=1如果没有任何错误,环境设置会指示备份脚本隐藏所有进度输出。建议这样做以减少 cron 垃圾邮件。


4.3确认档案可以转移
为确保生成的存档可通过 rsync 传输,您可以设置该GZIP_RSYNCABLE=yes 选项。这会将--rsyncable选项设置为gzip,这仅在与设置备份文件名选项结合使用时才有用。
请注意,不能保证--rsyncablein 选项在gzip所有发行版上都可用。要验证它在您的发行版中是否可用,请运行 gzip --help或查阅手册页。
sudo gitlab-backup create BACKUP=dump GZIP_RSYNCABLE=yes

GitLab 12.1 及更早版本的用户应改用该命令:
gitlab-rake gitlab:backup:create。



4.4从备份中排除特定目录
您可以通过添加环境变量从备份中排除特定目录SKIP,其值是以下选项的逗号分隔列表:
db (数据库)
uploads (附件)
builds (CI 作业输出日志)
artifacts (CI 作业工件)
lfs (LFS 对象)
registry (容器注册表镜像)
pages (页面内容)
repositories (Git 存储库数据)
所有维基都作为repositories组的一部分进行备份。备份期间将跳过不存在的 wiki。
当备份和恢复头盔图表,有一个附加选项packages,它是指由GitLab管理的任何套餐包注册表。有关详细信息,请参阅命令行参数。
所有维基都作为repositories组的一部分进行备份。备份期间将跳过不存在的 wiki。
对于 Omnibus GitLab 软件包:
sudo gitlab-backup create SKIP=db,uploads


备份相关文件目录

/var/opt/gitlab/.ssh/authorized_keys
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json

+++++++++++++++++++++++++++++++++++++
https://docs.gitlab.com/omnibus/update/convert_to_omnibus.html
升级方式:

gitlab-ctl reconfigure  #加载配置
如果迁移了/home/git/gitlab-shell/.gitlab_shell_secret,还需要重启 Gitaly:
sudo gitlab-ctl restart gitaly


gitlab-ctl start# 启动所有 gitlab 组件
gitlab-ctl stop # 停止所有 gitlab 组件
## 配置GitLab 
gitlab-ctl reconfigure 
## 启动所有 gitlab 组件 
gitlab-ctl start 
## 停止所有 gitlab 组件 
gitlab-ctl stop 
## 重启所有 gitlab 组件 
gitlab-ctl restart 
## 查看服务状态 
gitlab-ctl status 
## 检查GitLab 
gitlab-rake gitlab:check SANITIZE=true --trace 
## 查看日志 
gitlab-ctl tail 


#添加yum源:
vi /etc/yum.repos.d/gitlab-ce.repo 
//添加如下内容 
[gitlab-ce] 
name=Gitlab CE Repository 
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ 
gpgcheck=0 
enabled=1 

## 更新本地yum缓存
yum makecache fast 


yum --showduplicates list gitlab-ce



当前gitlab版本号:12.3.5
 12.1.17 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> latest 13.12.Z -> latest 14.0.Z -> latest 14.Y.Z
sudo yum install gitlab-ce-12.10.14-ce.0.el7.x86_64
sudo yum install gitlab-ce-13.0.14-ce.0.el7.x86_64
sudo yum install gitlab-ce-13.1.11-ce.0.el7.x86_64
sudo yum install gitlab-ce-13.8.8-ce.0.el7.x86_64

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


+++++++++++++++++++++++++++++++++++++++++++++++++++++++
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore-gitlab
gitlab安装恢复过程:

恢复先决条件:
1,在执行还原之前,您需要有一个有效的 GitLab 安装
2,要恢复备份,您必须恢复/etc/gitlab/gitlab-secrets.json (对于 Omnibus 包)或/home/git/gitlab/.secret(对于从源安装)。此文件包含数据库加密密钥、 CI/CD 变量和用于双因素身份验证的变量。


#不同主机时需要恢复 TLS 密钥、证书或 SSH 主机密钥
3,你可以通过打开你的sshd_config文件来找到你的主机密钥(在我的 Ubuntu 12.04 盒子上/etc/ssh/sshd_config)。在配置文件中查找HostKey条目。这些条目将告诉您主机密钥文件所在的位置。您应该能够将这些文件复制到新服务器并更新新服务器sshd_config以指向复制的密钥(或者只是覆盖新服务器上已经存在的文件)。
	默认/etc/ssh/ssh_host_key用于协议版本 
		1、和 /etc/ssh/ssh_host_dsa_key、/etc/ssh/ssh_host_ecdsa_key以及/etc/ssh/ssh_host_rsa_key协议版本 
		2。请注意,如果文件是组/世界可访问的,sshd(8) 将拒绝使用该文件。可以有多个主机密钥文件。“rsa1”密钥用于版本 1,“dsa”、“ecdsa”或“rsa”用于 SSH 协议的版本 2。


gitlab备份恢复:
1,此过程假设:
您已经安装了与创建备份完全相同的 GitLab Omnibus版本和类型 (CE/EE)。
你sudo gitlab-ctl reconfigure至少跑过一次。
GitLab 正在运行。如果没有,请使用sudo gitlab-ctl start.


2,首先确保您的备份 tar 文件位于gitlab.rb配置中描述的备份目录中 gitlab_rails['backup_path']。默认值为 /var/opt/gitlab/backups. 它需要归git用户所有。
sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/
sudo chown git.git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar

3,停止连接到数据库的进程。让 GitLab 的其余部分保持运行:
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

4,# Verify
sudo gitlab-ctl status

5,接下来,恢复备份,指定要恢复的备份的时间戳:
# This command will overwrite the contents of your GitLab database!
sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce

6,注意事项
GitLab 12.1 及更早版本的用户应改用该命令gitlab-rake gitlab:backup:restore。
gitlab-rake gitlab:backup:restore没有在您的注册表目录上设置正确的文件系统权限。这是一个已知问题。在 GitLab 12.2 或更高版本中,您可以使用gitlab-backup restore来避免此问题。
如果您的备份 tar 文件和已安装的 GitLab 版本之间存在 GitLab 版本不匹配,则恢复命令将中止并显示错误消息。安装正确的 GitLab 版本,然后重试。
当您的安装使用 PgBouncer 时,restore 命令需要额外的参数,无论是出于性能原因还是与 Patroni 集群一起使用时。

7,接下来,/etc/gitlab/gitlab-secrets.json如有必要,恢复, 如前所述。
重新配置、重启并检查 GitLab:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

8,在 GitLab 13.1 及更高版本中,检查数据库值可以被解密, 尤其是/etc/gitlab/gitlab-secrets.json在恢复时,或者如果不同的服务器是恢复的目标。
sudo gitlab-rake gitlab:doctor:secrets

3. 同主机低版本升级到最新版本方法:

3.1 当前版本信息收集:

1,腾讯云主机,本地原主机gitlab版本升级。

2,确认安装方式:
[root@BetaTWS1 ~]# rpm -qa gitlab-ce
gitlab-ce-12.3.5-ce.0.el7.x86_64


3,查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

4,检查gitlab状态
gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


5,#系统版本确认
[root@BetaTWS1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

6,#系统内存信息确认:
[root@BetaTWS1 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           7.6G        2.9G        161M        206M        4.5G        4.2G
Swap:            0B          0B          0B

7,#内核版本确认
[root@BetaTWS1 ~]# uname -r
3.10.0-1127.el7.x86_64


8,服务停止前后端口检查(服务器上存在其他服务防止端口被占用问题)
[root@VM-16-13-centos packages]# netstat -nlpt #gitlab启动状态当前端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:28022           0.0.0.0:*               LISTEN      1533/sshd           
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      21774/grafana-serve 
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1506/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      21727/nginx: master 
tcp        0      0 0.0.0.0:8060            0.0.0.0:*               LISTEN      21727/nginx: master 
tcp        0      0 127.0.0.1:9121          0.0.0.0:*               LISTEN      20748/redis_exporte 
tcp        0      0 127.0.0.1:9090          0.0.0.0:*               LISTEN      20714/prometheus    
tcp        0      0 127.0.0.1:9187          0.0.0.0:*               LISTEN      21756/postgres_expo 
tcp        0      0 127.0.0.1:9093          0.0.0.0:*               LISTEN      20600/alertmanager  
tcp        0      0 127.0.0.1:9100          0.0.0.0:*               LISTEN      20691/node_exporter 
tcp        0      0 127.0.0.1:9229          0.0.0.0:*               LISTEN      21715/gitlab-workho 
tcp        0      0 127.0.0.1:9168          0.0.0.0:*               LISTEN      21734/puma 4.3.3.gi 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      21727/nginx: master 
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      21819/unicorn maste 
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      21701/sidekiq 5.2.7 
tcp        0      0 127.0.0.1:9236          0.0.0.0:*               LISTEN      20619/gitaly        
tcp6       0      0 ::1:25                  :::*                    LISTEN      1506/master         
tcp6       0      0 :::9094                 :::*                    LISTEN      20600/alertmanager  
tcp6       0      0 ::1:9168                :::*                    LISTEN      21734/puma 4.3.3.gi 

[root@VM-16-13-centos packages]# gitlab-ctl stop 
ok: down: alertmanager: 1s, normally up
ok: down: gitaly: 0s, normally up
ok: down: gitlab-exporter: 0s, normally up
ok: down: gitlab-workhorse: 1s, normally up
ok: down: grafana: 0s, normally up
ok: down: logrotate: 1s, normally up
ok: down: nginx: 0s, normally up
ok: down: node-exporter: 1s, normally up
ok: down: postgres-exporter: 0s, normally up
ok: down: postgresql: 0s, normally up
ok: down: prometheus: 1s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 1s, normally up
ok: down: sidekiq: 1s, normally up
ok: down: unicorn: 0s, normally up

[root@VM-16-13-centos packages]# gitlab-ctl status
down: alertmanager: 19s, normally up; run: log: (pid 1564) 235301s
down: gitaly: 18s, normally up; run: log: (pid 1581) 235301s
down: gitlab-exporter: 18s, normally up; run: log: (pid 1563) 235301s
down: gitlab-workhorse: 18s, normally up; run: log: (pid 1562) 235301s
down: grafana: 17s, normally up; run: log: (pid 1574) 235301s
down: logrotate: 17s, normally up; run: log: (pid 1560) 235301s
down: nginx: 16s, normally up; run: log: (pid 1575) 235301s
down: node-exporter: 16s, normally up; run: log: (pid 1571) 235301s
down: postgres-exporter: 15s, normally up; run: log: (pid 1559) 235301s
down: postgresql: 15s, normally up; run: log: (pid 1587) 235301s
down: prometheus: 15s, normally up; run: log: (pid 1561) 235301s
down: redis: 14s, normally up; run: log: (pid 1598) 235301s
down: redis-exporter: 14s, normally up; run: log: (pid 1565) 235301s
down: sidekiq: 13s, normally up; run: log: (pid 1580) 235301s
down: unicorn: 11s, normally up; run: log: (pid 1586) 235301s

[root@VM-16-13-centos packages]# netstat -nlpt 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:28022           0.0.0.0:*               LISTEN      1533/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1506/master         
tcp6       0      0 ::1:25  

3.2 本机升级理论只需要rpm安装后即可,不牵扯恢复,为了安全期间,还是需要备份。

由于网络原因只能采用离线方式安装:
[root@VM-16-13-centos packages]# ll
total 3942368
-rw-r--r-- 1 root root 797740292 Nov  8 18:25 gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 728656981 Nov  8 18:25 gitlab-ce-13.0.14-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 736750197 Nov  8 18:29 gitlab-ce-13.1.11-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 867568698 Nov  8 18:30 gitlab-ce-13.8.8-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 906240064 Nov  8 18:32 gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 911634590 Nov  9 16:35 gitlab-ce-14.0.12-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 954527068 Nov  9 16:36 gitlab-ce-14.4.2-ce.0.el7.x86_64.rpm

#md5校验
[root@VM-16-13-centos packages]# md5sum gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm 
78a9eb82f598c516676b45e567d3b478  gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm

#备份数据:
gitlab-backup create STRATEGY=copy 
#默认备份目录:
/var/opt/gitlab/backups/

备份相关文件目录
/var/opt/gitlab/.ssh/authorized_keys
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
#在线安装添加yum源:
vi /etc/yum.repos.d/gitlab-ce.repo 
//添加如下内容 
[gitlab-ce] 
name=Gitlab CE Repository 
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ 
gpgcheck=0 
enabled=1 

# 更新本地yum缓存
yum makecache fast 
yum --showduplicates list gitlab-ce

#离线安装:
官方下载地址:
https://packages.gitlab.com/app/gitlab/gitlab-ce/search?q=10.1.4

#每次升级后确认配置文件内容存在,如果不存在替换之前的备份文件:
]# egrep -v "^$|^#" /etc/gitlab/gitlab.rb

#单个服务问题排查思路
grep "postgres\|pg" /etc/gitlab/gitlab.rb  #过滤关于postgres配置信息
gitlab-ctl restart postgresql    #单独重启postgresql
gitlab-ctl tail postgresql       #单独查看postgresql日志

# 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true

当前gitlab版本号:12.3.5
官方路线:
12.1.17-> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> latest 13.12.Z -> latest 14.0.Z -> latest 14.Y.Z
我的路线
12.3.5 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.15 -> 14.0.12 -> 14.4.2

3.3 12.3.5 -> 12.10.14升级

升级前检查:
gitlab-ctl reconfigure
gitlab-ctl stop 
gitlab-ctl status


[root@BetaTWS1 ~]# rpm -qa gitlab-ce
gitlab-ce-12.3.5-ce.0.el7.x86_64

[root@BetaTWS1 ~]# rpm -evh `rpm -qa gitlab-ce`

#安装完成后,不管成功或者失败,一定要淡定,慢慢解决问题,不要着急。
[root@BetaTWS1 ~]# rpm -ivh gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm 

确认配置文件内容存在,如果不存在替换之前的备份文件:
]# cd /etc/gitlab/
]# egrep -v "^$|^#" gitlab.rb


gitlab-ctl start
gitlab-ctl status

gitlab-ctl reconfigure

安装后可能会有部分服务启动失败,等待5分钟后,执行如下命令:
gitlab-ctl restart
全部启动启动成功


#确认当前版本及服务状态:
[root@VM-16-13-centos gitlab]# rpm -qa gitlab-ce
gitlab-ce-12.10.14-ce.0.el7.x86_64
[root@VM-16-13-centos gitlab]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.10.14
[root@VM-16-13-centos gitlab]# gitlab-ctl status 
run: alertmanager: (pid 20600) 623s; run: log: (pid 1564) 234492s
run: gitaly: (pid 20610) 622s; run: log: (pid 1581) 234492s
run: gitlab-exporter: (pid 21734) 517s; run: log: (pid 1563) 234492s
run: gitlab-workhorse: (pid 21715) 518s; run: log: (pid 1562) 234492s
run: grafana: (pid 21774) 515s; run: log: (pid 1574) 234492s
run: logrotate: (pid 20667) 621s; run: log: (pid 1560) 234492s
run: nginx: (pid 21727) 518s; run: log: (pid 1575) 234492s
run: node-exporter: (pid 20691) 620s; run: log: (pid 1571) 234492s
run: postgres-exporter: (pid 21756) 515s; run: log: (pid 1559) 234492s
run: postgresql: (pid 20712) 619s; run: log: (pid 1587) 234492s
run: prometheus: (pid 20714) 618s; run: log: (pid 1561) 234492s
run: redis: (pid 20743) 618s; run: log: (pid 1598) 234492s
run: redis-exporter: (pid 20748) 618s; run: log: (pid 1565) 234492s
run: sidekiq: (pid 21701) 520s; run: log: (pid 1580) 234492s
run: unicorn: (pid 22994) 354s; run: log: (pid 1586) 234492s


页面访问验证ok
xxxx.gitlab.com

3.4.1 当前版本需要执行如下命令否则升级到下一版本会报数据库版本兼容问题。(踩坑后回滚回来执行如下操作后重新升级解决)

https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server

]# gitlab-ctl pg-upgrade
]# gitlab-psql -c "SELECT relname, last_analyze, last_autoanalyze FROM pg_stat_user_tables WHERE last_analyze IS NULL AND last_autoanalyze IS NULL;"
]# sudo gitlab-psql -c 'SET statement_timeout = 0; ANALYZE VERBOSE;'

3.5 12.10.14 -> 13.0.14 升级:

升级前检查:

[root@VM-16-13-centos gitlab]# rpm -qa gitlab-ce
gitlab-ce-12.10.14-ce.0.el7.x86_64
## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载旧包
[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-12.10.14-ce.0.el7.x86_64

[root@VM-16-13-centos packages]# rpm -e `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-12.10.14-ce.0.el7      ################################# [100%]


#安装过程时间较长,耐心等待:
packages]# rpm -ivh gitlab-ce-13.0.14-ce.0.el7.x86_64.rpm

#部分服务启动失败,等待5分钟后执行如下命令:
[root@VM-16-13-centos packages]# gitlab-ctl restart 
ok: run: alertmanager: (pid 29869) 0s
ok: run: gitaly: (pid 29881) 0s
ok: run: gitlab-exporter: (pid 29889) 0s
ok: run: gitlab-workhorse: (pid 29901) 1s
ok: run: grafana: (pid 29915) 0s
ok: run: logrotate: (pid 29933) 0s
ok: run: nginx: (pid 29939) 1s
ok: run: node-exporter: (pid 29943) 0s
ok: run: postgres-exporter: (pid 29953) 1s
timeout: down: postgresql: 0s, normally up, want up
ok: run: prometheus: (pid 30153) 0s
ok: run: redis: (pid 30165) 0s
ok: run: redis-exporter: (pid 30170) 1s
ok: run: sidekiq: (pid 30177) 0s
ok: run: unicorn: (pid 30183) 1s

#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

 5分钟后postgresql依然启动失败:
 gitlab-ctl tail postgresql

#看日志版本问题导致
 [root@VM-16-13-centos gitlab]# gitlab-ctl tail postgresql
==> /var/log/gitlab/postgresql/current <==
2021-11-09_02:43:48.27844 FATAL:  database files are incompatible with server
2021-11-09_02:43:48.27846 DETAIL:  The data directory was initialized by PostgreSQL version 10, which is not compatible with this version 11.7.
2021-11-09_02:43:49.31173 FATAL:  database files are incompatible with server
2021-11-09_02:43:49.31175 DETAIL:  The data directory was initialized by PostgreSQL version 10, which is not compatible with this version 11.7.

]# cat /var/opt/gitlab/postgresql/data/PG_VERSION
10
]#  /opt/gitlab/embedded/bin/pg_ctl --version
pg_ctl (PostgreSQL) 11.7
]#  /opt/gitlab/embedded/bin/psql --version
psql (PostgreSQL) 11.7

 grep "postgres\|pg" /etc/gitlab/gitlab.rb

postgresql命令详解:
https://www.postgresql.org/docs/11/app-initdb.html

postgresql升级方法:
https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server

gitlab-ctl restart postgresql

13.0.14 升级遇到了postgresql版本11.7不兼容问题,我的解决方法是回滚到上一个版本12.10.14确保回滚成功,服务启动,页面访问正常。
然后按照官方文档执行https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server:
gitlab-ctl pg-upgrade
gitlab-psql -c "SELECT relname, last_analyze, last_autoanalyze FROM pg_stat_user_tables WHERE last_analyze IS NULL AND last_autoanalyze IS NULL;"
sudo gitlab-psql -c 'SET statement_timeout = 0; ANALYZE VERBOSE;'

然后再升级13.0.14 后启动成功:
[root@VM-16-13-centos packages]#  gitlab-ctl status
run: alertmanager: (pid 11690) 475s; run: log: (pid 1564) 250062s
run: gitaly: (pid 11705) 474s; run: log: (pid 1581) 250062s
run: gitlab-exporter: (pid 11721) 474s; run: log: (pid 1563) 250062s
run: gitlab-workhorse: (pid 11725) 474s; run: log: (pid 1562) 250062s
run: grafana: (pid 11742) 473s; run: log: (pid 1574) 250062s
run: logrotate: (pid 11755) 473s; run: log: (pid 1560) 250062s
run: nginx: (pid 11762) 472s; run: log: (pid 1575) 250062s
run: node-exporter: (pid 11767) 472s; run: log: (pid 1571) 250062s
run: postgres-exporter: (pid 11781) 472s; run: log: (pid 1559) 250062s
run: postgresql: (pid 11791) 471s; run: log: (pid 1587) 250062s
run: prometheus: (pid 11793) 471s; run: log: (pid 1561) 250062s
run: puma: (pid 11894) 470s; run: log: (pid 10587) 688s
run: redis: (pid 11899) 470s; run: log: (pid 1598) 250062s
run: redis-exporter: (pid 11904) 469s; run: log: (pid 1565) 250062s
run: sidekiq: (pid 11911) 469s; run: log: (pid 1580) 250062s

[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-13.0.14-ce.0.el7.x86_64
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.0.14

页面访问验证ok
xxxx.gitlab.com

3.6 13.0.14 -> 13.1.11 升级

升级前检查:

[root@VM-16-13-centos gitlab]# rpm -qa gitlab-ce
gitlab-ce-12.10.14-ce.0.el7.x86_64
## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载旧包
[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-13.0.14-ce.0.el7.x86_64

[root@VM-16-13-centos packages]# rpm -evh `rpm -qa gitlab-ce`


#安装过程时间较长,耐心等待:
packages]# rpm -ivh gitlab-ce-13.1.11-ce.0.el7.x86_64.rpm
...
中间内容忽略
...
Running handlers:
Running handlers complete
Chef Client finished, 100/1131 resources updated in 53 seconds
gitlab Reconfigured!
Restarting previously running GitLab services

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).

[root@VM-16-13-centos packages]# gitlab-ctl status
down: alertmanager: 262s, normally up; run: log: (pid 15949) 52s
run: gitaly: (pid 15988) 49s; run: log: (pid 15566) 93s
down: gitlab-exporter: 260s, normally up; run: log: (pid 15934) 54s
run: gitlab-workhorse: (pid 15965) 51s; run: log: (pid 15907) 56s
down: grafana: 259s, normally up; run: log: (pid 15955) 51s
down: logrotate: 259s, normally up; run: log: (pid 15926) 55s
down: nginx: 259s, normally up; run: log: (pid 15923) 56s
down: node-exporter: 258s, normally up; run: log: (pid 15930) 55s
down: postgres-exporter: 258s, normally up; run: log: (pid 15952) 52s
run: postgresql: (pid 15024) 108s; run: log: (pid 15592) 92s
down: prometheus: 257s, normally up; run: log: (pid 15945) 53s
down: puma: 256s, normally up; run: log: (pid 15901) 57s
run: redis: (pid 15033) 108s; run: log: (pid 15546) 94s
down: redis-exporter: 256s, normally up; run: log: (pid 15942) 54s
down: sidekiq: 252s, normally up; run: log: (pid 15904) 57s


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

#13.1.11这个版本很顺利
[root@VM-16-13-centos packages]# gitlab-ctl restart 
ok: run: alertmanager: (pid 16511) 0s
ok: run: gitaly: (pid 16524) 0s
ok: run: gitlab-exporter: (pid 16539) 0s
ok: run: gitlab-workhorse: (pid 16549) 1s
ok: run: grafana: (pid 16561) 0s
ok: run: logrotate: (pid 16581) 1s
ok: run: nginx: (pid 16587) 0s
ok: run: node-exporter: (pid 16594) 0s
ok: run: postgres-exporter: (pid 16600) 0s
ok: run: postgresql: (pid 16626) 0s
ok: run: prometheus: (pid 16628) 1s
ok: run: puma: (pid 16722) 0s
ok: run: redis: (pid 16727) 1s
ok: run: redis-exporter: (pid 16732) 0s
ok: run: sidekiq: (pid 16741) 1s

 [root@VM-16-13-centos packages]# gitlab-ctl status
run: alertmanager: (pid 16511) 27s; run: log: (pid 15949) 194s
run: gitaly: (pid 16524) 26s; run: log: (pid 15566) 235s
run: gitlab-exporter: (pid 16539) 26s; run: log: (pid 15934) 196s
run: gitlab-workhorse: (pid 16549) 26s; run: log: (pid 15907) 198s
run: grafana: (pid 16561) 25s; run: log: (pid 15955) 193s
run: logrotate: (pid 16581) 25s; run: log: (pid 15926) 197s
run: nginx: (pid 16587) 24s; run: log: (pid 15923) 198s
run: node-exporter: (pid 16594) 24s; run: log: (pid 15930) 197s
run: postgres-exporter: (pid 16600) 23s; run: log: (pid 15952) 194s
run: postgresql: (pid 16626) 23s; run: log: (pid 15592) 234s
run: prometheus: (pid 16628) 23s; run: log: (pid 15945) 195s
run: puma: (pid 16722) 22s; run: log: (pid 15901) 199s
run: redis: (pid 16727) 22s; run: log: (pid 15546) 236s
run: redis-exporter: (pid 16732) 21s; run: log: (pid 15942) 196s
run: sidekiq: (pid 16741) 21s; run: log: (pid 15904) 199s

#版本确认:
[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-13.1.11-ce.0.el7.x86_64
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.1.11

使用/help页面确认版本 ok:
https://git-test.betawm.com/help

3.7 13.1.11 -> 13.8.8 升级:

升级前检查:

[root@VM-16-13-centos gitlab]# rpm -qa gitlab-ce
gitlab-ce-12.10.14-ce.0.el7.x86_64
## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status


[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-13.1.11-ce.0.el7.x86_64

#安装过程时间较长,耐心等待:
[root@VM-16-13-centos packages]# rpm -evh `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-13.1.11-ce.0.el7       ################################# [100%]
[root@VM-16-13-centos packages]# rpm -ivh gitlab-ce-13.8.8-ce.0.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-13.8.8-ce.0.el7        ################################# [100%]
Checking PostgreSQL executables:
...
中间内容忽略
...
== 20200527211605 AddLockedToCiPipelines: migrating ===========================
-- add_column(:ci_pipelines, :locked, :integer, {:limit=>2, :null=>false, :default=>0})
   -> 0.0010s
== 20200527211605 AddLockedToCiPipelines: migrated (0.0022s) ==================

== 20200601120434 MigrateAllMergeRequestUserMentionsToDb: migrating ===========
STDERR: 
---- End output of "bash"  "/tmp/chef-script20211109-20450-1ppno70" ----
Ran "bash"  "/tmp/chef-script20211109-20450-1ppno70" returned 1

Running handlers complete
Chef Infra Client failed. 29 resources updated in 26 seconds
Running reconfigure: NOT OK
== Fatal error ==
Something went wrong during final reconfiguration, please check the output
== Reverting ==
ok: down: postgresql: 0s, normally up
Symlink correct version of binaries: OK
ok: run: postgresql: (pid 20999) 0s
== Reverted ==
== Reverted to 11.11. Please check output for what went wrong ==
Toggling deploy page:rm -f /opt/gitlab/embedded/service/gitlab-rails/public/index.html
Toggling deploy page: OK
Toggling services:ok: run: alertmanager: (pid 21017) 1s
ok: run: gitaly: (pid 21025) 0s
ok: run: gitlab-exporter: (pid 21040) 0s
ok: run: grafana: (pid 21056) 1s
ok: run: logrotate: (pid 21066) 0s
ok: run: node-exporter: (pid 21074) 1s
ok: run: postgres-exporter: (pid 21079) 0s
ok: run: prometheus: (pid 21089) 1s
ok: run: redis-exporter: (pid 21096) 0s
ok: run: sidekiq: (pid 21103) 1s
Toggling services: OK
Checking if a newer PostgreSQL version is available and attempting automatic upgrade to it: NOT OK
Error ensuring PostgreSQL is updated. Please check the logs
warning: %posttrans(gitlab-ce-13.8.8-ce.0.el7.x86_64) scriptlet failed, exit status 1
#看输出有点恐慌呀!!!


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 


#重启后服务顺利启动
[root@VM-16-13-centos packages]# gitlab-ctl restart 
ok: run: alertmanager: (pid 21567) 1s
ok: run: gitaly: (pid 21577) 0s
ok: run: gitlab-exporter: (pid 21600) 1s
ok: run: gitlab-workhorse: (pid 21603) 0s
ok: run: grafana: (pid 21627) 1s
ok: run: logrotate: (pid 21640) 0s
ok: run: nginx: (pid 21652) 1s
ok: run: node-exporter: (pid 21658) 0s
ok: run: postgres-exporter: (pid 21663) 0s
ok: run: postgresql: (pid 21710) 0s
ok: run: prometheus: (pid 21713) 0s
ok: run: puma: (pid 21735) 1s
ok: run: redis: (pid 21770) 0s
ok: run: redis-exporter: (pid 21780) 1s
ok: run: sidekiq: (pid 21788) 0s



#版本确认:
[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-13.8.8-ce.0.el7.x86_64
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.8.8

使用/help页面确认版本 ok:
https://git-test.betawm.com/help

3.8.1 13.8.8需要注意postgresql需要手动升级:

GitLab 13.3 及更高版本
从 GitLab 13.3 开始,PostgreSQL 11.7 和 12.3 都随 Omnibus 一起提供。在包升级过程中,数据库不会升级到 PostgreSQL 12。如果你想升级到 PostgreSQL 12,你必须手动进行:
sudo gitlab-ctl pg-upgrade -V 12

GitLab 13.7 及更高版本
从 GitLab 13.7 开始,新安装将默认为 PostgreSQL 12。
现有实例可以通过以下方式手动更新:
sudo gitlab-ctl pg-upgrade -V 12

GitLab 13.8 及更高版本
默认的 PostgreSQL 版本设置为 12.x,对于不使用 repmgr 或 Geo 的安装,会在软件包升级时自动完成数据库升级。
手动升级
]# gitlab-ctl pg-upgrade -V 12
...
Toggling services:ok: run: alertmanager: (pid 3212) 0s
ok: run: gitaly: (pid 3221) 1s
ok: run: gitlab-exporter: (pid 3246) 0s
ok: run: grafana: (pid 3258) 1s
ok: run: logrotate: (pid 3271) 0s
ok: run: node-exporter: (pid 3278) 0s
ok: run: postgres-exporter: (pid 3284) 1s
ok: run: prometheus: (pid 3291) 0s
ok: run: redis-exporter: (pid 3305) 1s
ok: run: sidekiq: (pid 3311) 0s
Toggling services: OK
==== Upgrade has completed ====
Please verify everything is working and run the following if so
sudo rm -rf /var/opt/gitlab/postgresql/data.11
sudo rm -f /var/opt/gitlab/postgresql-version.old

]# sudo gitlab-psql -c "SELECT relname, last_analyze, last_autoanalyze FROM pg_stat_user_tables WHERE last_analyze IS NULL AND last_autoanalyze IS NULL;"
]# sudo gitlab-psql -c 'SET statement_timeout = 0; ANALYZE VERBOSE;'
]# sudo rm -rf /var/opt/gitlab/postgresql/data.11
]# sudo rm -f /var/opt/gitlab/postgresql-version.old

3.9 13.8.8 -> latest 13.12.15 升级:

升级前检查:

[root@VM-16-13-centos gitlab]# rpm -qa gitlab-ce
gitlab-ce-13.8.8-ce.0.el7.x86_64
## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status


[root@VM-16-13-centos gitlab]# rpm -qa gitlab-ce
gitlab-ce-13.8.8-ce.0.el7.x86_64

#安装过程时间较长,耐心等待:
[root@VM-16-13-centos packages]#  rpm -evh `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-13.8.8-ce.0.el7        ################################# [100%]

[root@VM-16-13-centos packages]# rpm -ivh gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-13.12.15-ce.0.el7      ################################# [100%]
Checking PostgreSQL executables:Starting Chef Infra Client, version 15.14.0
resolving cookbooks for run list: ["gitlab::config", "postgresql::bin"]
Synchronizing Cookbooks:
  - gitlab (0.0.1)
  - postgresql (0.1.0)
...
中间内容忽略
...
Running handlers:
Running handlers complete
Chef Infra Client finished, 65/810 resources updated in 01 minutes 15 seconds
gitlab Reconfigured!
Restarting previously running GitLab services

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

 #很顺利全部服务run
 [root@VM-16-13-centos packages]# gitlab-ctl status
run: alertmanager: (pid 962) 14s; run: log: (pid 15949) 5237s
run: gitaly: (pid 970) 13s; run: log: (pid 15566) 5278s
run: gitlab-exporter: (pid 988) 13s; run: log: (pid 15934) 5239s
run: gitlab-workhorse: (pid 990) 12s; run: log: (pid 15907) 5241s
run: grafana: (pid 1014) 12s; run: log: (pid 15955) 5236s
run: logrotate: (pid 1022) 11s; run: log: (pid 15926) 5240s
run: nginx: (pid 1031) 11s; run: log: (pid 15923) 5241s
run: node-exporter: (pid 1041) 10s; run: log: (pid 15930) 5240s
run: postgres-exporter: (pid 1046) 10s; run: log: (pid 15952) 5237s
run: postgresql: (pid 1067) 9s; run: log: (pid 15592) 5277s
run: prometheus: (pid 1069) 9s; run: log: (pid 15945) 5238s
run: puma: (pid 1167) 9s; run: log: (pid 15901) 5242s
run: redis: (pid 1172) 8s; run: log: (pid 15546) 5279s
run: redis-exporter: (pid 1179) 8s; run: log: (pid 15942) 5239s
run: sidekiq: (pid 1185) 7s; run: log: (pid 15904) 5242s


#版本确认:
[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-13.12.15-ce.0.el7.x86_64
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.12.15

使用/help页面确认版本 ok:
https://git-test.betawm.com/help

3.10 13.12.15 -> 14.0.12 升级:

升级前检查:

[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-13.12.15-ce.0.el7.x86_64
## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载
[root@VM-16-13-centos gitlab]# rpm -qa gitlab-ce
gitlab-ce-13.12.15-ce.0.el7.x86_64

[root@VM-16-13-centos packages]# rpm -evh `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-13.12.15-ce.0.el7      ################################# [100%]

#安装过程时间较长,耐心等待:
[root@VM-16-13-centos packages]# rpm -ihv gitlab-ce-14.0.12-ce.0.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-14.0.12-ce.0.el7       ################################# [100%]
Checking PostgreSQL executables:Starting Chef Infra Client, version 15.14.0
resolving cookbooks for run list: ["gitlab::config", "postgresql::bin"]
....
Running handlers:
Running handlers complete
Chef Infra Client finished, 25/769 resources updated in 01 minutes 02 seconds
gitlab Reconfigured!
Restarting previously running GitLab services

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).
#看输出挺顺利!


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

 #很顺利全部服务run
 [root@VM-16-13-centos packages]# gitlab-ctl status
run: alertmanager: (pid 13488) 28s; run: log: (pid 15949) 8052s
run: gitaly: (pid 13498) 27s; run: log: (pid 15566) 8093s
run: gitlab-exporter: (pid 13511) 27s; run: log: (pid 15934) 8054s
run: gitlab-workhorse: (pid 13517) 26s; run: log: (pid 15907) 8056s
run: grafana: (pid 13531) 26s; run: log: (pid 15955) 8051s
run: logrotate: (pid 13543) 25s; run: log: (pid 15926) 8055s
run: nginx: (pid 13550) 25s; run: log: (pid 15923) 8056s
run: node-exporter: (pid 13555) 25s; run: log: (pid 15930) 8055s
run: postgres-exporter: (pid 13564) 24s; run: log: (pid 15952) 8052s
run: postgresql: (pid 13615) 23s; run: log: (pid 15592) 8092s
run: prometheus: (pid 13662) 23s; run: log: (pid 15945) 8053s
run: puma: (pid 13672) 23s; run: log: (pid 15901) 8057s
run: redis: (pid 13677) 22s; run: log: (pid 15546) 8094s
run: redis-exporter: (pid 13683) 22s; run: log: (pid 15942) 8054s
run: sidekiq: (pid 13689) 22s; run: log: (pid 15904) 8057s


#版本确认:
[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-14.0.12-ce.0.el7.x86_64
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
14.0.12

使用/help页面确认版本 ok:
https://git-test.betawm.com/help

3.11 当前版本需要执行如下,我当时忘记执行,直接升级下一版本

首先,检查您是否遵循了14.2 版本特定的升级说明。如果有,您可以手动完成批量后台迁移。如果还没有,请选择以下方法之一:
在更新到 14.2+ 之前回滚和升级所需的版本之一。
前滚,保持当前版本并手动确保批量迁移成功完成
gitlab-rake db:migrate

#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart

3.12 14.0.12 -> 14.4.2 升级:

升级前检查:

[root@VM-16-13-centos packages]# rpm -qa gitlab-ce
gitlab-ce-14.0.12-ce.0.el7.x86_64
## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载
[root@VM-16-13-centos gitlab]# rpm -qa gitlab-ce
gitlab-ce-14.0.12-ce.0.el7.x86_64

[root@VM-16-13-centos packages]# rpm -evh `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-14.0.12-ce.0.el7       ################################# [100%]

#安装过程时间较长,耐心等待:
[root@VM-16-13-centos packages]# rpm -ivh gitlab-ce-14.4.2-ce.0.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-14.4.2-ce.0.el7        ################################# [100%]
Checking PostgreSQL executables:Starting Chef Infra Client, version 15.17.4
resolving cookbooks for run list: ["gitlab::config", "postgresql::bin"]
....
Running handlers complete
Chef Infra Client failed. 29 resources updated in 46 seconds
===
There was an error running gitlab-ctl reconfigure. Please check the output above for more
details.
===

warning: %posttrans(gitlab-ce-14.4.2-ce.0.el7.x86_64) scriptlet failed, exit status 1
#不太顺利最后报异常!


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

3.13 加载配置后依然报错,官方有说明:


官方解决方法:
https://docs.gitlab.com/ee/user/admin_area/monitoring/background_migrations.html#database-migrations-failing-because-of-batched-background-migration-not-finished

我当时手动执行了报错提示的两条命令后执行加载配置命令后仍然报错,然后我就回滚到上一个版本,服务正常,页面访问500,然后执行:

sudo gitlab-rake db:migrate
sudo gitlab-ctl reconfigure
gitlab-ctl restart 
gitlab-ctl stastu  #服务状态全部run,正常,页面访问500,然后直接升级下一版本14.4.2顺利成功,页面访问ok

3.14 生产环境gitlab版本12.3.5升级到14.4.2过程总结

点击查看代码


由于网络原因只能采用离线方式安装:
[root@VM-16-13-centos packages]# ll
total 3942368
-rw-r--r-- 1 root root 797740292 Nov  8 18:25 gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 728656981 Nov  8 18:25 gitlab-ce-13.0.14-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 736750197 Nov  8 18:29 gitlab-ce-13.1.11-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 867568698 Nov  8 18:30 gitlab-ce-13.8.8-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 906240064 Nov  8 18:32 gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 911634590 Nov  9 16:35 gitlab-ce-14.0.12-ce.0.el7.x86_64.rpm
-rw-r--r-- 1 root root 954527068 Nov  9 16:36 gitlab-ce-14.4.2-ce.0.el7.x86_64.rpm

#备份数据:
# gitlab-backup create STRATEGY=copy 


当前gitlab版本号:12.3.5
官方路线:
12.1.17-> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> latest 13.12.Z -> latest 14.0.Z -> latest 14.Y.Z
我的路线
12.3.5 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.8.8 -> 13.12.15 -> 14.0.12 -> 14.4.2

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12.3.5 -> 12.10.14升级:

升级前检查:
[root@BetaTWS1 ~]# rpm -qa gitlab-ce
gitlab-ce-12.3.5-ce.0.el7.x86_64

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true

## 查看服务状态 
gitlab-ctl status 

rpm -evh `rpm -qa gitlab-ce`

#安装过程时间较长,耐心等待:
rpm -ivh gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm 


gitlab-ctl start
gitlab-ctl status

gitlab-ctl reconfigure


安装后可能会有部分服务启动失败,等待5分钟后,执行如下命令:
gitlab-ctl restart
全部启动启动成功


#确认当前版本:
[root@VM-16-13-centos gitlab]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.10.14

页面访问验证ok
xxxx.gitlab.com


#执行如下命令升级数据库解决兼容问题
gitlab-ctl pg-upgrade
gitlab-psql -c "SELECT relname, last_analyze, last_autoanalyze FROM pg_stat_user_tables WHERE last_analyze IS NULL AND last_autoanalyze IS NULL;"
sudo gitlab-psql -c 'SET statement_timeout = 0; ANALYZE VERBOSE;'


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12.10.14 -> 13.0.14 升级:

升级前检查:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.10.14

## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载旧包
[root@VM-16-13-centos packages]# rpm -e `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-12.10.14-ce.0.el7      ################################# [100%]


#安装过程时间较长,耐心等待:
packages]# rpm -ivh gitlab-ce-13.0.14-ce.0.el7.x86_64.rpm


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

 
[root@VM-16-13-centos packages]#  gitlab-ctl status
run: alertmanager: (pid 11690) 475s; run: log: (pid 1564) 250062s
run: gitaly: (pid 11705) 474s; run: log: (pid 1581) 250062s
run: gitlab-exporter: (pid 11721) 474s; run: log: (pid 1563) 250062s
run: gitlab-workhorse: (pid 11725) 474s; run: log: (pid 1562) 250062s
run: grafana: (pid 11742) 473s; run: log: (pid 1574) 250062s
run: logrotate: (pid 11755) 473s; run: log: (pid 1560) 250062s
run: nginx: (pid 11762) 472s; run: log: (pid 1575) 250062s
run: node-exporter: (pid 11767) 472s; run: log: (pid 1571) 250062s
run: postgres-exporter: (pid 11781) 472s; run: log: (pid 1559) 250062s
run: postgresql: (pid 11791) 471s; run: log: (pid 1587) 250062s
run: prometheus: (pid 11793) 471s; run: log: (pid 1561) 250062s
run: puma: (pid 11894) 470s; run: log: (pid 10587) 688s
run: redis: (pid 11899) 470s; run: log: (pid 1598) 250062s
run: redis-exporter: (pid 11904) 469s; run: log: (pid 1565) 250062s
run: sidekiq: (pid 11911) 469s; run: log: (pid 1580) 250062s

#版本验证
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.0.14

页面访问验证ok
xxxx.gitlab.com


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13.0.14 -> 13.1.11 升级


升级前检查:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.0.14

## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载旧包
[root@VM-16-13-centos packages]# rpm -evh `rpm -qa gitlab-ce`


#安装过程时间较长,耐心等待:
packages]# rpm -ivh gitlab-ce-13.1.11-ce.0.el7.x86_64.rpm
...
中间内容忽略
...
Running handlers:
Running handlers complete
Chef Client finished, 100/1131 resources updated in 53 seconds
gitlab Reconfigured!
Restarting previously running GitLab services

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).

[root@VM-16-13-centos packages]# gitlab-ctl status
down: alertmanager: 262s, normally up; run: log: (pid 15949) 52s
run: gitaly: (pid 15988) 49s; run: log: (pid 15566) 93s
down: gitlab-exporter: 260s, normally up; run: log: (pid 15934) 54s
run: gitlab-workhorse: (pid 15965) 51s; run: log: (pid 15907) 56s
down: grafana: 259s, normally up; run: log: (pid 15955) 51s
down: logrotate: 259s, normally up; run: log: (pid 15926) 55s
down: nginx: 259s, normally up; run: log: (pid 15923) 56s
down: node-exporter: 258s, normally up; run: log: (pid 15930) 55s
down: postgres-exporter: 258s, normally up; run: log: (pid 15952) 52s
run: postgresql: (pid 15024) 108s; run: log: (pid 15592) 92s
down: prometheus: 257s, normally up; run: log: (pid 15945) 53s
down: puma: 256s, normally up; run: log: (pid 15901) 57s
run: redis: (pid 15033) 108s; run: log: (pid 15546) 94s
down: redis-exporter: 256s, normally up; run: log: (pid 15942) 54s
down: sidekiq: 252s, normally up; run: log: (pid 15904) 57s


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

#13.1.11这个版本很顺利
[root@VM-16-13-centos packages]# gitlab-ctl restart 
ok: run: alertmanager: (pid 16511) 0s
ok: run: gitaly: (pid 16524) 0s
ok: run: gitlab-exporter: (pid 16539) 0s
ok: run: gitlab-workhorse: (pid 16549) 1s
ok: run: grafana: (pid 16561) 0s
ok: run: logrotate: (pid 16581) 1s
ok: run: nginx: (pid 16587) 0s
ok: run: node-exporter: (pid 16594) 0s
ok: run: postgres-exporter: (pid 16600) 0s
ok: run: postgresql: (pid 16626) 0s
ok: run: prometheus: (pid 16628) 1s
ok: run: puma: (pid 16722) 0s
ok: run: redis: (pid 16727) 1s
ok: run: redis-exporter: (pid 16732) 0s
ok: run: sidekiq: (pid 16741) 1s

 [root@VM-16-13-centos packages]# gitlab-ctl status
run: alertmanager: (pid 16511) 27s; run: log: (pid 15949) 194s
run: gitaly: (pid 16524) 26s; run: log: (pid 15566) 235s
run: gitlab-exporter: (pid 16539) 26s; run: log: (pid 15934) 196s
run: gitlab-workhorse: (pid 16549) 26s; run: log: (pid 15907) 198s
run: grafana: (pid 16561) 25s; run: log: (pid 15955) 193s
run: logrotate: (pid 16581) 25s; run: log: (pid 15926) 197s
run: nginx: (pid 16587) 24s; run: log: (pid 15923) 198s
run: node-exporter: (pid 16594) 24s; run: log: (pid 15930) 197s
run: postgres-exporter: (pid 16600) 23s; run: log: (pid 15952) 194s
run: postgresql: (pid 16626) 23s; run: log: (pid 15592) 234s
run: prometheus: (pid 16628) 23s; run: log: (pid 15945) 195s
run: puma: (pid 16722) 22s; run: log: (pid 15901) 199s
run: redis: (pid 16727) 22s; run: log: (pid 15546) 236s
run: redis-exporter: (pid 16732) 21s; run: log: (pid 15942) 196s
run: sidekiq: (pid 16741) 21s; run: log: (pid 15904) 199s

#版本确认:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.1.11

使用/help页面确认版本 ok:
https://git-test.betawm.com/help


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13.1.11 -> 13.8.8 升级:


升级前检查:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.1.11

## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status


#卸载:
[root@VM-16-13-centos packages]# rpm -evh `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-13.1.11-ce.0.el7       ################################# [100%]

#安装过程时间较长,耐心等待:
[root@VM-16-13-centos packages]# rpm -ivh gitlab-ce-13.8.8-ce.0.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-13.8.8-ce.0.el7        ################################# [100%]
Checking PostgreSQL executables:
...
中间内容忽略
...
== 20200527211605 AddLockedToCiPipelines: migrating ===========================
-- add_column(:ci_pipelines, :locked, :integer, {:limit=>2, :null=>false, :default=>0})
   -> 0.0010s
== 20200527211605 AddLockedToCiPipelines: migrated (0.0022s) ==================

== 20200601120434 MigrateAllMergeRequestUserMentionsToDb: migrating ===========
STDERR: 
---- End output of "bash"  "/tmp/chef-script20211109-20450-1ppno70" ----
Ran "bash"  "/tmp/chef-script20211109-20450-1ppno70" returned 1

Running handlers complete
Chef Infra Client failed. 29 resources updated in 26 seconds
Running reconfigure: NOT OK
== Fatal error ==
Something went wrong during final reconfiguration, please check the output
== Reverting ==
ok: down: postgresql: 0s, normally up
Symlink correct version of binaries: OK
ok: run: postgresql: (pid 20999) 0s
== Reverted ==
== Reverted to 11.11. Please check output for what went wrong ==
Toggling deploy page:rm -f /opt/gitlab/embedded/service/gitlab-rails/public/index.html
Toggling deploy page: OK
Toggling services:ok: run: alertmanager: (pid 21017) 1s
ok: run: gitaly: (pid 21025) 0s
ok: run: gitlab-exporter: (pid 21040) 0s
ok: run: grafana: (pid 21056) 1s
ok: run: logrotate: (pid 21066) 0s
ok: run: node-exporter: (pid 21074) 1s
ok: run: postgres-exporter: (pid 21079) 0s
ok: run: prometheus: (pid 21089) 1s
ok: run: redis-exporter: (pid 21096) 0s
ok: run: sidekiq: (pid 21103) 1s
Toggling services: OK
Checking if a newer PostgreSQL version is available and attempting automatic upgrade to it: NOT OK
Error ensuring PostgreSQL is updated. Please check the logs
warning: %posttrans(gitlab-ce-13.8.8-ce.0.el7.x86_64) scriptlet failed, exit status 1

#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

#重启后服务顺利启动
[root@VM-16-13-centos packages]# gitlab-ctl restart 
ok: run: alertmanager: (pid 21567) 1s
ok: run: gitaly: (pid 21577) 0s
ok: run: gitlab-exporter: (pid 21600) 1s
ok: run: gitlab-workhorse: (pid 21603) 0s
ok: run: grafana: (pid 21627) 1s
ok: run: logrotate: (pid 21640) 0s
ok: run: nginx: (pid 21652) 1s
ok: run: node-exporter: (pid 21658) 0s
ok: run: postgres-exporter: (pid 21663) 0s
ok: run: postgresql: (pid 21710) 0s
ok: run: prometheus: (pid 21713) 0s
ok: run: puma: (pid 21735) 1s
ok: run: redis: (pid 21770) 0s
ok: run: redis-exporter: (pid 21780) 1s
ok: run: sidekiq: (pid 21788) 0s


#版本确认:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.8.8

使用/help页面确认版本 ok:
https://git-test.betawm.com/help


13.8.8版本需要注意postgresql需要手动升级:

GitLab 13.8 及更高版本
默认的 PostgreSQL 版本设置为 12.x,对于不使用 repmgr 或 Geo 的安装,会在软件包升级时自动完成数据库升级。
手动升级
]# gitlab-ctl pg-upgrade -V 12
...
Toggling services:ok: run: alertmanager: (pid 3212) 0s
ok: run: gitaly: (pid 3221) 1s
ok: run: gitlab-exporter: (pid 3246) 0s
ok: run: grafana: (pid 3258) 1s
ok: run: logrotate: (pid 3271) 0s
ok: run: node-exporter: (pid 3278) 0s
ok: run: postgres-exporter: (pid 3284) 1s
ok: run: prometheus: (pid 3291) 0s
ok: run: redis-exporter: (pid 3305) 1s
ok: run: sidekiq: (pid 3311) 0s
Toggling services: OK
==== Upgrade has completed ====
Please verify everything is working and run the following if so
sudo rm -rf /var/opt/gitlab/postgresql/data.11
sudo rm -f /var/opt/gitlab/postgresql-version.old

]# sudo gitlab-psql -c "SELECT relname, last_analyze, last_autoanalyze FROM pg_stat_user_tables WHERE last_analyze IS NULL AND last_autoanalyze IS NULL;"
]# sudo gitlab-psql -c 'SET statement_timeout = 0; ANALYZE VERBOSE;'
]# sudo rm -rf /var/opt/gitlab/postgresql/data.11
]# sudo rm -f /var/opt/gitlab/postgresql-version.old


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 


+++++++++++++++++++++++++++++++++++++
 13.8.8 -> latest 13.12.15 升级:

升级前检查:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.8.8

## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载
[root@VM-16-13-centos packages]#  rpm -evh `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-13.8.8-ce.0.el7        ################################# [100%]

#安装过程时间较长,耐心等待:
[root@VM-16-13-centos packages]# rpm -ivh gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-13.12.15-ce.0.el7      ################################# [100%]
Checking PostgreSQL executables:Starting Chef Infra Client, version 15.14.0
resolving cookbooks for run list: ["gitlab::config", "postgresql::bin"]
Synchronizing Cookbooks:
  - gitlab (0.0.1)
  - postgresql (0.1.0)
...
中间内容忽略
...
Running handlers:
Running handlers complete
Chef Infra Client finished, 65/810 resources updated in 01 minutes 15 seconds
gitlab Reconfigured!
Restarting previously running GitLab services

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

 #很顺利全部服务run
 [root@VM-16-13-centos packages]# gitlab-ctl status
run: alertmanager: (pid 962) 14s; run: log: (pid 15949) 5237s
run: gitaly: (pid 970) 13s; run: log: (pid 15566) 5278s
run: gitlab-exporter: (pid 988) 13s; run: log: (pid 15934) 5239s
run: gitlab-workhorse: (pid 990) 12s; run: log: (pid 15907) 5241s
run: grafana: (pid 1014) 12s; run: log: (pid 15955) 5236s
run: logrotate: (pid 1022) 11s; run: log: (pid 15926) 5240s
run: nginx: (pid 1031) 11s; run: log: (pid 15923) 5241s
run: node-exporter: (pid 1041) 10s; run: log: (pid 15930) 5240s
run: postgres-exporter: (pid 1046) 10s; run: log: (pid 15952) 5237s
run: postgresql: (pid 1067) 9s; run: log: (pid 15592) 5277s
run: prometheus: (pid 1069) 9s; run: log: (pid 15945) 5238s
run: puma: (pid 1167) 9s; run: log: (pid 15901) 5242s
run: redis: (pid 1172) 8s; run: log: (pid 15546) 5279s
run: redis-exporter: (pid 1179) 8s; run: log: (pid 15942) 5239s
run: sidekiq: (pid 1185) 7s; run: log: (pid 15904) 5242s


#版本确认:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.12.15

使用/help页面确认版本 ok:
https://git-test.betawm.com/help


++++++++++++++++++++++++++++++++++++
13.12.15 -> 14.0.12 升级:

升级前检查:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
13.12.15

## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载
[root@VM-16-13-centos packages]# rpm -evh `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-13.12.15-ce.0.el7      ################################# [100%]

#安装过程时间较长,耐心等待:
[root@VM-16-13-centos packages]# rpm -ihv gitlab-ce-14.0.12-ce.0.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-14.0.12-ce.0.el7       ################################# [100%]
Checking PostgreSQL executables:Starting Chef Infra Client, version 15.14.0
resolving cookbooks for run list: ["gitlab::config", "postgresql::bin"]
....
Running handlers:
Running handlers complete
Chef Infra Client finished, 25/769 resources updated in 01 minutes 02 seconds
gitlab Reconfigured!
Restarting previously running GitLab services

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Upgrade complete! If your GitLab server is misbehaving try running
  sudo gitlab-ctl restart
before anything else.
If you need to roll back to the previous version you can use the database
backup made during the upgrade (scroll up for the filename).



#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 

 #很顺利全部服务run
 [root@VM-16-13-centos packages]# gitlab-ctl status
run: alertmanager: (pid 13488) 28s; run: log: (pid 15949) 8052s
run: gitaly: (pid 13498) 27s; run: log: (pid 15566) 8093s
run: gitlab-exporter: (pid 13511) 27s; run: log: (pid 15934) 8054s
run: gitlab-workhorse: (pid 13517) 26s; run: log: (pid 15907) 8056s
run: grafana: (pid 13531) 26s; run: log: (pid 15955) 8051s
run: logrotate: (pid 13543) 25s; run: log: (pid 15926) 8055s
run: nginx: (pid 13550) 25s; run: log: (pid 15923) 8056s
run: node-exporter: (pid 13555) 25s; run: log: (pid 15930) 8055s
run: postgres-exporter: (pid 13564) 24s; run: log: (pid 15952) 8052s
run: postgresql: (pid 13615) 23s; run: log: (pid 15592) 8092s
run: prometheus: (pid 13662) 23s; run: log: (pid 15945) 8053s
run: puma: (pid 13672) 23s; run: log: (pid 15901) 8057s
run: redis: (pid 13677) 22s; run: log: (pid 15546) 8094s
run: redis-exporter: (pid 13683) 22s; run: log: (pid 15942) 8054s
run: sidekiq: (pid 13689) 22s; run: log: (pid 15904) 8057s


#版本确认:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
14.0.12

使用/help页面确认版本 ok:
https://git-test.betawm.com/help


首先,检查您是否遵循了14.2 版本特定的升级说明。如果有,您可以手动完成批量后台迁移。如果还没有,请选择以下方法之一:
在更新到 14.2+ 之前回滚和升级所需的版本之一。
前滚,保持当前版本并手动确保批量迁移成功完成
gitlab-rake db:migrate

#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart


++++++++++++++++++++++++++++++++++++
14.0.12 -> 14.4.2 升级:

升级前检查:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
14.0.12

## 查看服务状态 
gitlab-ctl status 

gitlab-rake gitlab:check SANITIZE=true --trace
gitlab-rake gitlab:check
gitlab-rake gitlab:check SANITIZE=true


#停止服务及确认服务状态
gitlab-ctl stop
gitlab-ctl status

#卸载
[root@VM-16-13-centos packages]# rpm -evh `rpm -qa gitlab-ce`
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:gitlab-ce-14.0.12-ce.0.el7       ################################# [100%]

#安装过程时间较长,耐心等待:
[root@VM-16-13-centos packages]# rpm -ivh gitlab-ce-14.4.2-ce.0.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-14.4.2-ce.0.el7        ################################# [100%]
Checking PostgreSQL executables:Starting Chef Infra Client, version 15.17.4
resolving cookbooks for run list: ["gitlab::config", "postgresql::bin"]
....
Running handlers complete
Chef Infra Client failed. 29 resources updated in 46 seconds
===
There was an error running gitlab-ctl reconfigure. Please check the output above for more
details.
===

warning: %posttrans(gitlab-ce-14.4.2-ce.0.el7.x86_64) scriptlet failed, exit status 1


#加载配置:
gitlab-ctl reconfigure

再执行:
 gitlab-ctl status
 gitlab-ctl restart 


#版本确认:
[root@VM-16-13-centos packages]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
14.4.2

使用/help页面确认版本 ok:
https://git-test.betawm.com/help


#升级完成!
posted @ 2021-11-10 09:38  农夫运维  阅读(3731)  评论(0编辑  收藏  举报