1、停止gitlab
gitlab-ctl stop
2、卸载gitlab(注意这里写的是gitlab-ce)
rpm -e gitlab-ce
3、查看gitlab进程
ps aux | grep gitlab
![在这里插入图片描述]()
4、杀掉第一个进程(就是带有好多…的进程)
杀掉后,在ps aux | grep gitlab确认一遍,还有没有gitlab的进程。若还存在,可以把它的主要组件的进程也杀一边。
run: alertmanager: (pid 100019) 13376s; run: log: (pid 82025) 86211s
run: gitaly: (pid 100032) 13376s; run: log: (pid 82041) 86211s
run: gitlab-monitor: (pid 100047) 13375s; run: log: (pid 82047) 86211s
run: gitlab-workhorse: (pid 100054) 13375s; run: log: (pid 82031) 86211s
run: logrotate: (pid 121160) 2574s; run: log: (pid 82039) 86211s
run: nginx: (pid 100070) 13374s; run: log: (pid 82037) 86211s
run: node-exporter: (pid 100077) 13374s; run: log: (pid 82027) 86211s
run: postgres-exporter: (pid 100082) 13373s; run: log: (pid 82023) 86211s
run: postgresql: (pid 100097) 13372s; run: log: (pid 82035) 86211s
run: prometheus: (pid 100100) 13372s; run: log: (pid 82021) 86211s
run: redis: (pid 100114) 13372s; run: log: (pid 82033) 86211s
run: redis-exporter: (pid 100118) 13371s; run: log: (pid 82043) 86211s
run: sidekiq: (pid 100124) 13370s; run: log: (pid 82029) 86211s
run: unicorn: (pid 100136) 13369s; run: log: (pid 82045) 86211s
日志的进程不用管。
5、删除所有包含gitlab文件
find / -name gitlab | xargs rm -rf
当然若你没有全杀权限。那么可以可以把这三个目录给干掉也可以:
rm -rf /opt/gitlab
rm -rf /etc/gitlab
rm -rf /var/log/gitlab
6、重新安装制定版本命令
sudo yum install gitlab-ce-x.x.x #安装指定版本
sudo yum install gitlab-ce-11.4.8
7、修改配置网址和重定向仓库目录
sudo vim /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure命令的时候,卡死在下面的情况的处理。
Recipe: gitlab::gitlab-rails
* execute[clear the gitlab-rails cache] action run
卡死不动了, 狂敲回车都没反应。

解决方案:
1.按住CTRL+C强制结束;
2.运行:sudo systemctl restart gitlab-runsvdir;
3.再次执行:sudo gitlab-ctl reconfigure
8、刷新配置后需要重启。
若用命令sudo gitlab-ctl status查看服务状态是停止就执行启动命令:
sudo gitlab-ctl start
若用命令sudo gitlab-ctl status
查看服务状态是运行状态就执行重启命令sudo gitlab-ctl restart
;也可以先停止sudo gitlab-ctl stop
,再启动sudo gitlab-ctl start
。
9、导出与备份
通过导出当日备份的方法保留备份文件,然后新建虚拟机把新的备份文件拷贝过去解决。
导出命令:
gitlab-rake gitlab:backup:create
执行后如下:


备份好的文件在
/var/opt/gitlab/backups
文件名字类似于
1556242886_2019_04_26_gitlab_backup.tar
Gitlab迁移
1.复制老服务器上面的备份文件到新服务器
2.确保新Gitlab服务器和老Gitlab服务器版本相同
查看gitlab版本号
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
执行的结果如下

用Winscp或者scp命令拷贝备份文件到新gitlab的/var/opt/gitlab/backups目录,如果你改了,这里要写成你修改过的目录,具体不再赘述。
更改权限为777 避免因权限不构造成的错误(可能有)
chmod 777 1502357536_2017_08_10_9.4.3_gitlab_backup.tar
#
停止相关进程
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
执行结果如下

恢复备份文件的命令
#gitlab-rake gitlab:backup:restore BACKUP=1556242886_2019_04_26 #
不要照抄,改成你的文件名
我的文件名是1556242886_2019_04_26_gitlab_backup.tar 如果你的文件名是其他的,需要更改。
5.31新增
注意:有时会报目录找不到,这时你可以
gitlab-ctl reconfigure
敲完之后会有一段时间的等待

然后提示你正在解压压缩包,完成后会遇到一个提示,大意是如果你点是就开始恢复了,里面已经存在的数据可能会丢失之类的,是否要继续?这里选yes


这里选择Yes,他问你是否要重新构建Authorized文件,你将要丢失一些文件。
Put GitLab hooks in repositories dirs [DONE]
done
Restoring uploads …
done
Restoring builds …
done
Restoring artifacts …
done
Restoring pages …
done
Restoring lfs objects …
done
This will rebuild an authorized_keys file.
You will lose any data stored in authorized_keys file.
Do you want to continue (yes/no)?
执行命令从备份文件中恢复Gitlab
最后,启动Gitlab
完事~
sudo gitlab-ctl start