簡介

上次安裝Gitlab大約將近一年前了,Gitlab也更新了很多功能,因此來著手進行一次升級,順便練習一下 recovery,以免意外發生時手忙腳亂.

目前版本:gitlab-ce-7.14.3-ce.1.el7.x86_64 預計更新版本:就更新到最新版吧目前是8.14.4

一開始傻傻的,想要把舊版本的backup檔,直接到8.X版本進行匯入, 很快的它就會告訴你版本不合了, 只好再用別的方式

後來我準備了兩台伺服器, 一台先安裝7.14.3 一台安裝最新版8.14.4

預計先將7.14.3的備份檔匯入第一台伺服器,之後進行升級, 然後因為個人有點龜毛,再用升級好機器備份出8.14.4版的備份檔, 來到全新的新版機器(8.14.4)再進行匯入

流程

舊機器 7.14.3 備份

1. 備份backup檔

在原本的機器上下指令備份gitlab資料

# gitlab-rake gitlab:backup:create

新機器版本 7.14.3

這台機器要先裝好 7.14.3,匯入備份檔,再用 yum 更新到 8.14.4。

1.安裝

我自己都用Omnibus 所以就先把Omnibus(gitlab-ce-7.14.3-ce.1.el7.x86_64)裝起來吧

gitlab 官網有美美的教學,自己來吧

其中有遇到一個問題是gitlab-ctl reconfigure時會停在[supervise_redis_sleep]

# sudo /opt/gitlab/embedded/bin/runsvdir-start &

# sudo gitlab-ctl reconfigure

Ref:

2. 匯入backup檔

我將backup檔copy到新伺服器的備份目錄下,執行recovery時,程序會自動將檔案recovery回去

mv to /var/opt/gitlab/backups/

3.開始前先停止相關數據服務連線

# gitlab-ctl stop unicorn

# gitlab-ctl stop sidekiq

4.從1393513186編號備份中復原(看你的檔案編號是啥鬼)

# gitlab-rake gitlab:backup:restore BACKUP=1393513186

5.啟動Gitlab

# gitlab-ctl start

6.執行檢查

# gitlab-rake gitlab:check SANITIZE=true

檢查時有出現一些問題

# gitlab-rake gitlab:satellites:create RAILS_ENV=production

再檢查一次

# gitlab-rake gitlab:check SANITIZE=true

7.版本升級

這邊是我的操作流程,有試過直接yum install gitlab-ce會有一點問題, 所以我前面加了一步gitlab-ctl upgrade很像就比較正常了

# gitlab-ctl upgrade

# yum install gitlab-ce

# gitlab-ctl reconfigure

# gitlab-ctl restart

8.匯出新版本(8.14.4)backup檔

# gitlab-rake gitlab:backup:create

新機器8.14.4

# gitlab-ctl stop unicorn

# gitlab-ctl stop sidekiq

# gitlab-rake gitlab:backup:restore BACKUP=14XXXXXXX

# gitlab-ctl start

# gitlab-rake gitlab:check SANITIZE=true

注意事項

為了避免更換伺服器與重新匯入備份檔時known_host失效

  1. 更換伺服器必須將舊伺服器/etc/ssh/ssh_host_*複製到新伺服器
  2. 匯入備份檔時rebuild keys file必須選yes

完成