===============================================
2017/10/20_第1次修改 ccb_warlock
===============================================
部署:http://www.cnblogs.com/straycats/p/7637373.html
升級:http://www.cnblogs.com/straycats/p/7707359.html
本地備份:http://www.cnblogs.com/straycats/p/7671204.html
遠程備份:http://www.cnblogs.com/straycats/p/7672692.html
通過之前的記錄,已經掌握了gitlab的本地備份(http://www.cnblogs.com/straycats/p/7671204.html)和遠程備份(http://www.cnblogs.com/straycats/p/7672692.html)。
但是獲取備份文件不是我們的目的,最終是為了通過備份文件實現遷移或恢復gitlab。本篇就是記錄如何通過備份文件在新的環境上去恢復/遷移gitlab。
一、環境准備
首先在新服務器(192.168.2.1)上搭建gitlab,部署過程可以參考http://www.cnblogs.com/straycats/p/7637373.html。
注意:通過備份文件恢復gitlab必須保證新的gitlab版本必須要和老的gitlab版本一致,否則會提示版本不匹配。
所以無非是兩種思路,一種將老的gitlab先升級到你要的gitlab版本,再遷移備份;另一種將gitlab安裝的版本和老gitlab一致,遷移完成后再進行升級。
我采取先保持一致后遷移,再進行升級。
二、配置新的gitlab
gitlab的配置文件(gitlab.rb)是不因備份恢復而恢復的,故要將老的gitlab的配置文件也取過來,否則就需要維護人員重新配置。
2.1 獲取gitlab.rb
在新服務器上,使用scp命令將老服務器(192.168.1.1)的備份文件復制到/etc/gitlab/目錄下。
scp root@192.168.1.1:/etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb
第一次連接時會詢問是否要繼續連接,輸入yes,回車。
接着輸入老服務器的root密碼后,回車。
接着就會看到備份文件傳輸的信息。
2.2 修改external_url
如果新gitlab服務器部署之后ip不改回老的ip(示例為192.168.1.1),故需要修改gitlab.rb的external_url參數,因為頁面上項目的http地址就是根據該參數拼接而成的。
以新gitlab服務器的ip為192.168.2.1為例,修改gitlab配置文件。
vim /etc/gitlab/gitlab.rb
修改external_url,wq保存。
external_url 'http://192.168.2.1'
2.3 重新配置gitlab
gitlab-ctl reconfigure
三、獲取備份文件
在新服務器上,使用scp命令將老服務器(192.168.1.1)的備份文件(1508412719_2017_10_19_10.0.2_gitlab_backup.tar)復制到/var/opt/gitlab/backups/目錄下。
scp root@192.168.1.1:/var/opt/gitlab/backups/1508412719_2017_10_19_10.0.2_gitlab_backup.tar /var/opt/gitlab/backups/
獲取到/var/opt/gitlab/backups/目錄下是因為我沒有特別更換gitlab的備份目錄,如果gitlab.rb有指定別的目錄,根據實際情況自行修改。
第一次連接時會詢問是否要繼續連接,輸入yes,回車。
接着輸入老服務器的root密碼后,回車。
接着就會看到備份文件傳輸的信息。
如果老服務器出現故障時,雲端有備份文件可以從雲端獲取,比如雲端192.168.1.2的/gitlab-backup目錄下有備份文件,可以從那獲取。
scp root@192.168.1.2:/gitlab-backup/1508412719_2017_10_19_10.0.2_gitlab_backup.tar /var/opt/gitlab/backups/
四、恢復/遷移gitlab數據
4.1 修改備份文件權限
將備份文件的權限改為777,否則恢復的時候會出現權限不夠導致解壓失敗的問題。
chmod 777 /var/opt/gitlab/backups/1508412719_2017_10_19_10.0.2_gitlab_backup.tar
4.2 停止相關數據連接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
4.3 恢復gitlab
使用“gitlab-rake gitlab:backup:restore BACKUP=備份文件編號”指令可以根據備份文件來恢復,因為示例中是使用1508412719_2017_10_19_10.0.2_gitlab_backup.tar來恢復,故備份文件編號為1508412719_2017_10_19_10.0.2。
gitlab-rake gitlab:backup:restore BACKUP=1508412719_2017_10_19_10.0.2
等待片刻后,由於新的gitlab還是處於初始狀態,直接輸入“yes”,回車。
然后就是等待恢復的結束。
到了下面的內容時,輸入“yes”,回車。
4.4 啟動gitlab
gitlab-ctl start
五、關於本地備份和遠程備份
由於這兩塊是額外配置的,如果新環境中也要有這一套備份機制,自然需要維護人員手動配一次。
本地備份參考:http://www.cnblogs.com/straycats/p/7671204.html
遠程備份參考:http://www.cnblogs.com/straycats/p/7672692.html
參考資料:
1. http://blog.csdn.net/ouyang_peng/article/details/77070977