原創做品,http://linuxerxy.blog.51cto.com/10707334/1865414 linux
1.Gitlab建立備份git
1
|
#gitlab-rake gitlab:backup:create
|
使用以上命令會在/var/opt/gitlab/backups目錄下建立一個名稱相似爲1393513186_gitlab_backup.tar的壓縮包,這個壓縮包就是Gitlab整個的完整部分, 其中開頭的1393513186是備份建立的日期。json
2.Gitlab恢復centos
1
2
3
4
5
6
7
8
9
|
# 中止相關數據鏈接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 從1393513186編號備份中恢復
gitlab-rake gitlab:backup:restore BACKUP=1393513186
# 啓動Gitlab
sudo
gitlab-ctl start
|
3.Gitlab遷移bash
遷移如同備份與恢復的步驟同樣, 只須要將老服務器/var/opt/gitlab/backups目錄下的備份文件拷貝到新服務器上的/var/opt/gitlab/backups便可(若是你沒修改過默認備份目錄的話)。可是須要注意的是新服務器上的Gitlab的版本必須與建立備份時的Gitlab版本號相同. 好比新服務器安裝的是最新的8.5版本的Gitlab, 那麼遷移以前, 最好將老服務器的Gitlab 升級爲8.5再進行備份。服務器
4.自動備份app
經過crontab使用備份命令實現自動備份:ide
1
2
|
sudo
su
-
crontab
-e
|
例如加入如下, 實現天天凌晨2點進行一次自動備份:gitlab
1
|
0 2 * * *
/opt/gitlab/bin/gitlab-rake
gitlab:backup:create
|
恢復過程當中遇到一個錯誤:url
1
2
3
4
5
6
7
8
9
10
11
12
|
Started GET
"/EagleEye/BMH.EagleEye"
for
127.0.0.1 at 2016-10-25 10:54:32 +0800
Processing by ProjectsController
#show as HTML
Parameters: {
"namespace_id"
=>
"EagleEye"
,
"id"
=>
"BMH.EagleEye"
}
Completed 500 Internal Server Error
in
215ms (ActiveRecord: 19.5ms)
OpenSSL::Cipher::CipherError (bad decrypt):
app
/models/project
.rb:383:
in
`import_url'
app
/models/project
.rb:413:
in
`external_import?'
app
/models/project
.rb:405:
in
`
import
?'
app
/models/project
.rb:421:
in
`import_in_progress?'
app
/controllers/projects_controller
.rb:93:
in
`show'
lib
/gitlab/middleware/go
.rb:16:
in
`call'
|
系統是centos 6.2的 ,gitlab是8.8.5遷移到另一臺服務器上的,其它頁面均可以正常顯示,可是一點擊項目就會顯示500,。查看/var/log/gitlab/gitlab-rails/production.log日誌,發現上述錯誤 。
經過搜索知道,這是gitlab數據遷移時的一個缺陷。解決方法:
一、覆蓋原來gitlab的 db_key_base 到新的gitlab
db_key_base 位置在 /etc/gitlab/gitlab-secrets.json
二、EE版本執行
sudo gitlab-rails runner "Project.where(mirror: false).where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
CE版本執行
sudo gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
重啓gitlab,發現500錯誤不見,項目能訪問到。