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
至此,完成資料遷移,恢複到和之前一模一樣。記錄一下遷移過程,以備後用!