Gitlab資料遷移需在同版本之間進行。因為不同版本的gitlab之間,資料庫的庫表結構與程式的實作方式是有差異的。若需從伺服器A把gitlab的資料遷移至伺服器B,則伺服器B需部署與伺服器A同樣版本的gitlab方可。
可以使用gitlab備份與恢複的指令,實作資料的遷移。
備份:
1
<code>bundle </code><code>exec</code> <code>rake gitlab:backup:create RAILS_ENV=production</code>
該備份指令會備份本地gitlab的所有項目的倉庫以及mysql資料。
恢複:
<code>bundle </code><code>exec</code> <code>rake gitlab:backup:restore RAILS_ENV=production BACKUP=Timestamp</code>
該恢複指令會導入備份中的mysql資料和項目倉庫目錄,并可以根據需要,從mysql庫中的資料中重構~/.ssh/authorized_keys身份驗證檔案。
伺服器A:
2
3
<code>#su - git</code>
<code>$</code><code>cd</code> <code>gitlab</code>
<code>$ bundle </code><code>exec</code> <code>rake gitlab:backup:create RAILS_ENV=production</code>
若運作無錯誤,備份成功後,在備份目錄(預設為/home/git/gitlab/tmp/backups)下會生成一個備份tar包,裡面包含了gitlab項目倉庫以及mysql導出資料。
檔案格式如:1449731757_gitlab_backup.tar,其中“1449731757”為備份檔案的時間戳。
上傳備份檔案到伺服器B的備份目錄。
伺服器B:
4
<code>#chown git.git /home/git/gitlab/tmp/backups/1449731757_gitlab_backup.tar</code>
<code>$ bundle </code><code>exec</code> <code>rake gitlab:backup:restore RAILS_ENV=production BACKUP=1449731757</code>
注意這裡的“BACKUP=1449731757”,這裡需填寫想恢複檔案時間戳。
若運作無誤,則資料遷移完成。
注:gitlab的預設備份目錄,可以在/home/git/gitlab/config/gitlab.yml中修改:
<code>$</code><code>vi</code> <code>/home/git/gitlab/config/gitlab</code><code>.yml</code>
<code> </code><code>backup:</code>
<code> </code><code>path: </code><code>"tmp/backups"</code>
<code></code>
本文轉自 icenycmh 51CTO部落格,原文連結:http://blog.51cto.com/icenycmh/1723296,如需轉載請自行聯系原作者