Gitlab如何進行備份恢復與遷移

摘自:https://blog.csdn.net/ouyang_peng/article/details/77070977
前段時間,在某臺CenterOS服務器上搭建了Gitlab環境,并且大家陸陸續續的都把代碼從svn遷移到了gitlab,但是之前的CenterOS服務器并不是搭建在公司的機房環境,而是搭建在辦公室的某臺閑置的電腦上,因此為了保證數據安全性,領導要求為將之前的Gitlab數據全部重新遷移到公司機房的服務器上面去。

1、Gitlab 創建備份

1.1 創建備份文件

首先我們得把老服務器上的Gitlab整體備份,使用Gitlab一鍵安裝包安裝Gitlab非常簡單, 同樣的備份恢復與遷移也非常簡單. 使用一條命令即可創建完整的Gitlab備份。

gitlab-rake gitlab:backup:create

使用以上命令會在/var/opt/gitlab/backups目錄下創建一個名稱類似為1502357536_2017_08_10_9.4.3_gitlab_backup.tar的壓縮包, 這個壓縮包就是Gitlab整個的完整部分, 其中開頭的1502357536_2017_08_10_9.4.3是備份創建的日期

  • /etc/gitlab/gitlab.rb 配置文件須備份
  • /var/opt/gitlab/nginx/conf nginx配置文件
  • /etc/postfix/main.cfpostfix 郵件配置備份
    image.png

    生成完后,/var/opt/gitlab/backups目錄創建一個名稱類似為1502357536_2017_08_10_9.4.3_gitlab_backup.tar的壓縮包
這里寫圖片描述

1.1 更改Gitlab備份目錄

當然你也可以通過/etc/gitlab/gitlab.rb配置文件來修改默認存放備份文件的目錄

gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

/var/opt/gitlab/backups修改為你想存放備份的目錄即可,例如下面代碼將備份路徑修改為/mnt/backups

gitlab_rails['backup_path'] = '/mnt/backups'
這里寫圖片描述

修改完成之后使用下面命令重載配置文件即可.

gitlab-ctl reconfigure

1.2 Gitlab自動備份

1.2.1 定時自動備份

在crontab文件里面,每一行代表一項任務,每行的每個字段代表一項設置,它的格式共分為六個字段,前五段是時間設定段,第六段是要執行的命令段,每個字段之間用空格分割,沒用的段用*代替,格式如下:

m h dom mon dow user command

其中:

  • m: 表示分鐘,可以是從0到59之間的任何整數。
  • h:表示小時,可以是從0到23之間的任何整數。
  • dom:表示日期,可以是從1到31之間的任何整數。
  • mon:表示月份,可以是從1到12之間的任何整數。
  • dow:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
  • user : 表示執行的用戶。
  • command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件(如shell文件)。

實現每天凌晨2點進行一次自動備份:通過crontab使用備份命令實現,需重啟cron服務
方法1、在命令行輸入: crontab -e 然后添加相應的任務,wq存盤退出。

#輸入命令crontab -e
sudo crontab -e  
#輸入相應的任務
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  

方法2、直接編輯/etc/crontab 文件,即vi /etc/crontab,然后添加相應的任務

#編輯 /etc/crontab
vi /etc/crontab 

然后再編輯框內輸入相應的任務

# edited by ouyang 2017-8-11 添加定時任務,每天凌晨兩點,執行gitlab備份
0  2    * * *   root    /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  
這里寫圖片描述

或者直接定時執行一個腳本 auto_backup.sh ,腳本內容為

/opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

然后再 /etc/crontab中,添加相關任務定時執行 auto_backup.sh 腳本文件

sudo chmod +x auto_backup.sh
sudo vim auto_backup.sh
這里寫圖片描述

/etc/crontab 中添加執行腳本的定時任務,代碼如下:

#也可以按照如下所示的方法,定時執行 auto_backup.sh腳本,腳本內容就填寫: /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 

0 2    * * *   root    /data/gitlabData/backups/auto_backup.sh -D 1   

編寫完 /etc/crontab 文件之后,需要重新啟動cron服務

#重新加載cron配置文件
sudo /usr/sbin/service cron reload
#重啟cron服務
sudo /usr/sbin/service cron restart 

實際運行如下

root@ubuntu4146:~# sudo /usr/sbin/service cron reload
root@ubuntu4146:~# sudo /usr/sbin/service cron restart 
cron stop/waiting
cron start/running, process 17738

關于Cron表達式可以參考鏈接:

關于gitlab備份可以參考鏈接:

關于如何將gitlab備份文件備份到遠程備份服務器,參考鏈接:

1.2.2 設置備份過期時間

設置只保存最近7天的備份,編輯 /etc/gitlab/gitlab.rb 配置文件,找到gitlab_rails[‘backup_keep_time’],設置為你想要設置的值,然后保存。

gitlab_rails['backup_keep_time'] = 604800  
這里寫圖片描述

2、 Gitlab遷移

2.1 copy老服務器上面的備份文件到新服務器

2.1.1 確保新Gitlab服務器和老Gitlab服務器版本相同

第一步,新服務器上的Gitlab的版本必須與創建備份時的Gitlab版本號相同. 比如新服務器安裝的是最新的9.4.3版本的Gitlab, 那么遷移之前, 最好將老服務器的Gitlab 升級為9.4.3再進行備份.

這里寫圖片描述

可以參考之前的博客:
git學習——>在CenterOS系統上安裝GitLab并自定義域名訪問GitLab管理頁面

2.1.2 copy老服務器上面的備份文件到新服務器

第二步,如果你沒修改過默認備份目錄的話,需要將老服務器上的備份文件目錄(/var/opt/gitlab/backups目錄)下的備份文件拷貝到新服務器上的/var/opt/gitlab/backups目錄。

使用scp命令從遠程服務器copy文件或者目錄到本地

scp 用戶名 @IP 地址 : 文件名 1 遠程用戶名 @IP 地址 : 文件名 2

[用戶名 @IP 地址 :] 可以不輸入 , 可能需要輸入遠程用戶名所對應的密碼 .

可能有用的幾個參數 :

  • -v 和大多數 linux 命令中的 -v 意思一樣 , 用來顯示進度 . 可以用來查看連接 , 認證 , 或是配置錯誤 .

  • -C 使能壓縮選項 .

  • -P 選擇端口 . 注意 -p 已經被 rcp 使用 .

  • -4 強行使用 IPV4 地址 .

  • -6 強行使用 IPV6 地址 .

例如我使用如下命令,從遠程服務器copy剛才的備份文件到了新服務器的/var/opt/gitlab/backups/ 目錄下

scp root@172.28.17.155:/var/opt/gitlab/backups/1502357536_2017_08_10_9.4.3_gitlab_backup.tar /var/opt/gitlab/backups/

copy完后,查看copy的文件如下

這里寫圖片描述

2.1.3 從備份文件中恢復gitlab

1、將備份文件權限修改為777

第一步,將備份文件權限修改為777,不然可能恢復的時候會出現權限不夠,不能解壓的問題

chmod 777 1502357536_2017_08_10_9.4.3_gitlab_backup.tar 

2、執行命令停止相關數據連接服務

第二步,執行命令停止相關數據連接服務

# 停止相關數據連接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

3、執行命令從備份文件中恢復Gitlab

第三步,執行命令從備份文件中恢復Gitlab

gitlab-rake gitlab:backup:restore BACKUP=備份文件編號

例如我們的備份文件的編號是1502357536_2017_08_10_9.4.3,因此執行下面的命令即可恢復gitlab

gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3

敲完命令后,出現第一個交互頁面,

root@ubuntu4146:/var/opt/gitlab/backups# gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3
Unpacking backup ... done
Before restoring the database we recommend removing all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.

Do you want to continue (yes/no)? 

輸入“yes”繼續。


這里寫圖片描述

恢復過程中。。。。。


這里寫圖片描述

出現第二個交互頁面,

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)? 

這里寫圖片描述

輸入“yes”繼續。

這里寫圖片描述

4、執行命令從備份文件中恢復Gitlab

第四步,啟動Gitlab

sudo gitlab-ctl start
這里寫圖片描述

3、打開遷移后的Gitlab,進行對比

老Gitlab服務器截圖

這里寫圖片描述

新Gitlab服務器截圖

這里寫圖片描述

對比,可以發現,除了兩臺服務器的ip地址不一樣之外,其他的內容完全一模一樣,遷移成功!

參考文檔

關于Cron表達式可以參考鏈接:

關于gitlab備份可以參考鏈接:

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容