天天看點

gitlab 遷移_Gitlab備份和遷移

2018年6月份時基于Docker搭建了一個Gitlab,最近由于機器更新,需要遷移到新機器。那麼問題來了?

  • Gitlab如何備份?
  • Gitlab如何完整的遷移?

廢話不多說,直接上指令吧:(假設運作Gitlab的的Docker容器名字為

gitlab

Gitlab備份

都說雲主機很安全,但是總覺得沒個備份心裡不踏實。之前Gitlab的運作指令如下:

sudo docker run --detach     --hostname gitlab.xxx.com     --publish 443:443 --publish 80:80 --publish 1024:1024     --name gitlab     --restart always     --volume /srv/gitlab/config:/etc/gitlab     --volume /srv/gitlab/logs:/var/log/gitlab     --volume /srv/gitlab/data:/var/opt/gitlab     docker.io/gitlab/gitlab-ce:latest
           

資料挂載在

/srv/gitlab

目錄下。

備份指令:

docker exec -t gitlab gitlab-rake gitlab:backup:create
           

建立Gitlab的備份,備份檔案位于

/srv/gitlab/data/backups

目錄下,生成的檔案名如

1548648399_2019_01_28_11.0.1_gitlab_backup.tar

,其中

11.0.1

是目前gitlab的版本号,恢複時使用的gitlab必須是同樣的版本号,否則沒法進行恢複。該檔案裡面包含了所有user、group、git repository資料。

Gitlab遷移

1> 準備好新機器、安裝docker

2> 拉相應版本的gitlab-ce鏡像

docker pull gitlab/gitlab-ce:11.0.1-ce.0
           

3> 運作全新Gitlab容器

sudo docker run --detach     --hostname gitlab.xxx.com     --publish 443:443 --publish 80:80 --publish 1024:1024     --name gitlab     --restart always     --volume /srv/gitlab/config:/etc/gitlab     --volume /srv/gitlab/logs:/var/log/gitlab     --volume /srv/gitlab/data:/var/opt/gitlab     docker.io/gitlab/gitlab-ce:11.0.1-ce.0
           

4> 複制備份檔案到backups目錄

# 停掉gitlab容器
docker stop gitlab

# 複制備份檔案
cp 1548648399_2019_01_28_11.0.1_gitlab_backup.tar /srv/gitlab/data/backups/

# 重新開機gitlab容器
docker start gitlab
           

5> 進入gitlab容器,恢複Gitlab資料

# 進入GITLAB
docker exec -it gitlab /bin/bash

# 停止資料服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 檢查狀态
gitlab-ctl status

# 資料恢複
sudo gitlab-rake gitlab:backup:restore BACKUP=1548648399_2019_01_28_11.0.1

# 重新開機并驗證

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true
           

至此,完成資料遷移,恢複到和之前一模一樣。記錄一下遷移過程,以備後用!