Gitlab遷移小記

2021-07-15 19:57:32 字數 3281 閱讀 9933

本來用家裡退休的筆記本,利用ddns,搭建了乙個gitlab自己玩,最近剛好拿到乙個digitalocean的優惠,就把想把它遷移到digitalocean的機器上了(畢竟原本的功耗帶來的成本還是不低的,一天大概要跑一度電,也許更多,那乙個月下來也要30多的開銷了。。。不過好處就是效能相對vps來說,絕對算高階的了,6g記憶體,幾年前的筆記本)

在經過對do的各個機房測速後,似乎荷蘭的阿姆斯特丹機器延遲相對低一點,於是就選了那裡的vps。ps:選國外機器好處有兩個,一是自己隨便折騰個**啥的不用去備案;另乙個就是可以自己搭建科–學–上–網的伺服器,嘿嘿嘿~

this procedure assumes that:

即:相互遷移的兩個gitlab之間的版本必須完全一致;至少執行過一次sudo gitlab-ctl reconfigure;gitlab正在執行。

其中第二條在其他地方都沒見到提到過,需要注意一下(尤其是剛裝好就要恢復的gitlab,很容易遇到這種情況)。

接著執行(注意這裡的1393513186換成你的備份的字首,如1393513186_gitlab_backup.tar):

sudo gitlab-ctl stop unicorn

sudo gitlab-ctl stop sidekiq

sudo gitlab-rake gitlab:backup:restore backup=1393513186

gitlab version mismatch: your current gitlab version (8.10.1)

differs from the gitlab version in the backup! please switch to the

following version and try again: version: 8.2.3

hint: git checkout v8.2.3

其實這裡很好理解,就是前面規則裡的第一條,要求gitlab版本一致。但是這裡我腦袋抽了,居然沒想到把新的gitlab降級到8.2.3,而是直接想著把舊的gitlab公升級到8.10.1再重新生成乙個備份供新gitlab使用。。。也許是想著新的版本肯定更好用吧。。。

公升級完舊gitlab,並且生成新備份傳到新vps上,恢復的時候,一大堆資料庫異常,大概都是一些表約束無法刪除、表不存在之類的;然後再往下執行還有一些其他錯誤。最後,直接登入gitlab,發現好像東西都在,然而卻看不到git專案的檔案,估計是只恢復了資料庫,卻沒有恢復repository,在新的gitlab上執行備份,生成的備份檔案只有幾十k,而原來的備份檔案可是70+mb啊。。。顯然是恢復失敗了,後面折騰多了好幾次,還是同樣的結果——失敗。

終於,靈機一動,難道是新版本的問題?要不我把gitlab退回8.2.3,反正之前在8.2.3生成的備份檔案還在。說幹就幹,查了一下,用yum remove或者yum erase刪除(中間似乎有用過yum downgrade之類的,好像也失敗,是否用過不太清楚了),查了下,說yum erase會把配置檔案也一塊乾掉,於是選擇了它,然而事實是,用yum erase解除安裝後,至少在我所知的與gitlab有關的兩個路徑(/etc/gitlab//var/opt/gitlab/),東西都完整的在那,根本沒被刪掉。。。於是手動刪除,只保留backup資料夾。接著安裝8.2.3版本,只需要yum install gitlab-ce-8.2.3就行了。安裝完後,也把舊版本/etc/gitlab/下的內容替換到新機器的相同目錄下,然後立即執行

sudo gitlab-ctl reconfigure

sudo gitlab-ctl start

sudo gitlab-ctl stop unicorn

sudo gitlab-ctl stop sidekiq

sudo gitlab-rake gitlab:backup:restore backup=******xx

依舊是資料庫那裡一大堆錯誤提示,但是後面的其它東西都恢復成功了!懷著忐忑的心執行了gitlab-rake gitlab:backup:create生成新的備份,然後到/var/opt/gitlab/backupsll,結果是:

total 151124

-rw-r--r-- 1 root root 77373440 jul 28 20:06 1469520460_gitlab_backup.tar

-rw------- 1 git git 77373440 jul 28 13:38 1469684319_gitlab_backup.tar

竟然完全一樣!此時被興奮沖昏了頭腦,都忘了嚴謹思考了。雖說大小一樣,但只能說明該恢復的都恢復的差不多了,還是有可能不一樣的(比如某個配置預設值是1,而你的設定值是2,不管恢復成功與否,總檔案大小肯定還是一樣的),要驗證真的一樣,可能只能用md5了,或者利用git的版本管理來對比差異,還能定位到不一樣的地方在哪。這個後面看心情吧,可能懶得弄了,畢竟東西也不是很重要,自己玩玩而已,而且看到執行起來基本都沒問題。

最後總結一下:要遷移gitlab時,舊伺服器gitlab-rake gitlab:backup:create並拷到新伺服器的/var/opt/gitlab/backups;新伺服器裝上和舊伺服器一樣版本的gitlab(不建議公升級舊伺服器,萬一有問題了咋辦呢?新伺服器遷移完公升不公升級再決定),也把舊版本/etc/gitlab/下的內容替換到新機器的相同目錄下,然後

sudo gitlab-ctl reconfigure

sudo gitlab-ctl start

sudo gitlab-ctl stop unicorn

sudo gitlab-ctl stop sidekiq

sudo gitlab-rake gitlab:backup:restore backup=******xx

其中******xx就是你gitlab備份的數字字首。

到此應該就可以了,如果不行的話,就問度娘谷歌去吧,哈哈~

ps:感覺好像還是舊的版本8.2.3執行起來比較流暢,新版本8.10.1似乎比較卡一些,因為我的機器配置也比較低(512m記憶體,自己設定了2g的swap,不然根本跑不起來),跑舊的都夠吃力了,跑新的似乎容易掛掉,當然也可能是之前的都沒恢復成功引起的。

gitlab遷移公升級

一 遷移步驟 1.首先安裝最新版本gitlab gitlab7.2安裝 2.停止舊版本gitlab服務 3.將舊的專案檔案完整匯入新的gitlab bundle exec rake gitlab import repos rails env production bundle exec rake g...

gitlab倉庫遷移

遇到乙個情況,需要將兩個gitlab倉庫合併。好在都是使用的ldap賬戶登陸,使用者賬戶不需要遷移。實際的使用情況下,需要遷移的主要部分為分組及分組下專案。gitlab的api還是很給力的,能夠獲取所有這些資訊,並利用這些資訊進行新建。獲取資訊使用get方法,修改資訊使用put方法,新建使用post...

gitlab資料遷移

由於gitlab是預設安裝的,隨著公司 越來越多,導致gitlab資料目錄空間不足,出現無法訪問gitlab了。磁碟空間 home有1.8t的空間一直沒用上!現在打算將原有 目錄遷移到新目錄 gitlab 資料預設目錄 var opt gitlab git data repositories 在ho...