1. 程式人生 > 實用技巧 >Gitlab 備份 | 恢復 | 解除安裝 | 遷移 | 版本升級

Gitlab 備份 | 恢復 | 解除安裝 | 遷移 | 版本升級

由於公司之前使用的是 Gitlab 9.5.5 版本,有些新功能特性是沒有的,截至寫該文為止,Gitlab 的最新版本為:13.2.4,本文主要談談我是如何從 9.5.5 升級到最新版本的。

值得注意的是:Gitlab 跨大版本升級需要把當前版本升級為當前版本的最新版本才能升級下一版本。

在整個升級過程中踩了一些坑,這裡做個記錄。Gitlab 版本下載地址:

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

這裡使用的 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 版本,只需要在升級過程中加入該版本即可。