天天看點

Gitlab資料遷移

    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,如需轉載請自行聯系原作者