由於公司之前使用的是 Gitlab 9.5.5 版本,有些新功能特性是沒有的,截至寫該文為止,Gitlab 的最新版本為:13.2.4,本文主要談談我是如何從 9.5.5 升級到最新版本的。
值得注意的是:Gitlab 跨大版本升級需要把當前版本升級為當前版本的最新版本才能升級下一版本。
在整個升級過程中踩了一些坑,這里做個記錄。Gitlab 版本下載地址:
這里使用的 CentOS 7 的清華源,下載速度超級快,Gitlab 安裝包文件很大。
備份數據
備份的命令如下:
gitlab-rake gitlab:backup:create
此時,Gitlab 會在目錄 /var/opt/gitlab/backups 生成備份壓縮文件,如我這里的:1597372719_2020_08_14_9.5.5_gitlab_backup.tar
該文件包含備份的時間戳,備份的 Gitlab 版本,這些標識在我們恢復的時候會用到。
恢復數據
首先需要斷開數據連接服務:
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
恢復備份:
# 修改備份文件權限,否則會報錯權限不足 chmod 777 /var/opt/gitlab/backups/1597372719_2020_08_14_9.5.5_gitlab_backup.tar # 指定恢復的備份 gitlab-rake gitlab:backup:restore BACKUP=1597372719_2020_08_14_9.5.5
注意文件權限問題和恢復的版本,Gitlab 要求我們備份的 Gitlab 版本和恢復的 Gitlab 版本必須一直,否則無法恢復。
將備份文件復制到新的機器上面恢復就實現了 Gitlab 的遷移。
卸載服務
我在安裝的時候一開始以為大版本內部小版本可以直接數據恢復,於是在新的機器上直接安裝的該大版本的最新小版本,結果發現報錯無法恢復,於是需要卸載重新安裝 9.5.5 版本。
# 停止服務器 gitlab-ctl stop # 卸載服務 rpm -e gitlab-ce # 停止其它服務,通過 ps 可以看到還有 gitlab 進程殘余,就是那個很多 ........ 的,把它 kill 掉 ps -ef kill -9 xxx # 刪除數據目錄 rm -rf /opt/gitlab rm -rf /var/opt/gitlab
安裝服務
我們可以直接 yum 或者 rpm 安裝下載的 rpm 包完成服務的安裝:
yum install gitlab-ce-9.5.5-ce.0.el7.x86_64.rpm
安裝完成之后執行初始化命令
gitlab-ctl reconfigure
如果你是卸載之后再安裝的,可以會卡在:ruby_block[supervise_redis_sleep] action run
解決辦法: Ctrl + c 停止安裝,然后執行下面命令:
systemctl restart gitlab-runsvdir
gitlab-ctl reconfigure
此時就可以順利初始化完成!
版本升級
以我這里的升級為例,從 9.5.5 --> 13.2.4
升級思路:
1. 准備一台機器,安裝當前生產在用的 Gitlab 一樣的版本,這一步很重要,如果無法滿足,風險不可估量。
2. 備份當前生產的 Gitlab 的數據,傳輸一份到新的環境備用。
3. 准備整個升級的安裝包,以我這里為例:
gitlab-ce-9.5.5-ce.0.el7.x86_64.rpm gitlab-ce-9.5.9-ce.0.el7.x86_64.rpm gitlab-ce-10.8.7-ce.0.el7.x86_64.rpm gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm gitlab-ce-12.0.9-ce.0.el7.x86_64.rpm gitlab-ce-12.10.9-ce.0.el7.x86_64.rpm gitlab-ce-13.0.9-ce.0.el7.x86_64.rpm gitlab-ce-13.2.4-ce.0.el7.x86_64.rpm
可以發現,再 12 版本和 13 版本這里存在兩個版本,原因是它后一個版本必須要前一個小版本才能升級過去,否則無法跨大版本升級。
4. 在新准備的環境導入備份的數據,此時我們可以得到一個和現在生產環境一模一樣的 Gitlab,此時可以簡單的訪問測試。
5. 驗證沒問題后,開始升級,從先往后安裝即可,如:
yum install gitlab-ce-9.5.9-ce.0.el7.x86_64.rpm
此時系統會自動幫我們升級,在升級過程中可能會讓用戶輸入 yes 確認。
另外在升級之前 Gitlab 會進行一次自動的系統備份,如果你的數據量大,可能那一步會卡一段時間,等着就行。
以此內推,升級成功一個版本再升級下一個版本即可。升級完成后不用用戶手動重啟服務,服務可以照常訪問。
可以通過:
http://xxx.xxx.xxx.xxx/help
這個你自己的鏈接查看當前 Gitlab 的版本,比如我的:
當然,某些版本在升級之后可能會報錯 500+ 的問題無法訪問,此時需要重新執行下配置即可:
gitlab-ctl reconfigure
6. 整個升級完成之后建議重啟下 Gitlab,至此升級完成!
gitlab-ctl restart
總結:
1. 數據只需要在最初版本導入一次即可。
2. 如果出現無法訪問就執行:gitlab-ctl reconfigure
3. 如果報錯說升級某個版本需要至少 xxx 版本,只需要在升級過程中加入該版本即可。