Git

# docker 기반 Gitlab-CI 구축 4 - Backup & Restore

skysoo1111 2020. 3. 30. 10:46

지난 포스팅(# docker 기반 Gitlab-CI 구축 3 - Gitlab-runner 실행)에 이어 Gitlab 서버의 Backup과 Restore에 대해 정리했다.

 

Gitlab의 Backup은 Gitlab의 프로젝트, 이력, CI/CD 진행 내역 등 Gitlab 서버의 전반적인 내용을 모두 Backup 한다.

단, gitlab-ci.yml, gitlab-secrets.json파일은 민감 정보라고 하여 Backup 대상에서 제외된다.
따라서 위 정보가 필요하다면 수동으로 Backup 해줘야 한다.

 

Backup 기능은 주로 Gitlab 서버의 이전이나 프로젝트 관리를 위해 사용될 것이다.

 

1. Gitlab Backup

  Backup 하려는 Gitlab 기동 서버에서 아래 작업을 진행한다.

# 1. gitlab 설정 파일에서 Backup Setting 확인, 경로를 설정
$ sudo docker exec -it gitlab vim /etc/gitlab/gitlab.rb
   => gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

# 2. gitlab backup 수행
$ docker exec -t gitlab gitlab-rake gitlab:backup:create  # docker exec -t gitlab gitlab-backup create와 같은 명령이다.

# 3. backup 파일 경로로 이동하여 backup 파일을 확인
$  cd /srv/gitlab/data/backups
   => _gitlab_backup.tar 파일을 확인한다.

Gitlab Bacup 파일

2. Gitlab Restore

  1) 위에서 나온 Backup 파일을 Restore를 진행할 서버로 복사한다.

# gitlab을 복원시키려는 서버로 backup 파일 전송
$ scp 1585270462_2020_03_27_12.9.0_gitlab_backup.tar USER@192.168.10.X:/var/opt/gitlab/backups

  2) Restore 진행할 서버에서 gitlab을 실행한다.

# gitlab 복원 서버에서 gitlab 실행
$ sudo docker run --detach \
  --hostname 192.168.10.X \
  --publish 30443:443 --publish 80:80 --publish 30022:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:12.9.0-ce.0

2-2에서 기동한 gitlab은 Backup 파일이 아닌 단순 gitlab을 기동한 것이다. 따라서 웹서버로 접속하면 초기 gitlab 화면만 보일 것이다.

  3) Restore 준비

# 1. 위에서 복사한 backup 파일(_gitlab_backup.tar)을 gitlab 컨테이너의 gitlab 백업 경로로 복사
$ docker cp 1585270462_2020_03_27_12.9.0_gitlab_backup.tar fafb154128ef:/var/opt/gitlab/backups
  => docker cp <복사할 파일명> <컨테이너명>:<복사할 경로>

# 2. gitlab 컨테이너 진입
$ docker exec -it gitlab /bin/bash

# 3. gitlab 컨테이너 내부에서 백업 파일 확인
$ cd /var/opt/gitlab/backups

# 4. 백업 파일 권한 변경
$ chown -R git /var/opt/gitlab/backups

 

  4) Restore 실행

# 호스트 서버에서 gitlab restore를 수행
$ docker exec -it gitlab gitlab-rake gitlab:backup:restore

Restore 완료
Restore 진행 후 gitlab 접속 화면

2-4 진행 후에 Gitlab 서버에 접속해보면 Backup 당시의 프로젝트 목록이 그대로 저장되어 있는것을 확인할 수 있다.

 

※ Restore시 주의 사항은 Restore가 진행될 경로는 비어져있어야 한다는 것이다.

  • 단어장에 추가
     
    • 다음에 대한 단어 목록이 없습니다영어 -> 한국어...
       
    • 새로운 단어 목록 생성...
  • 복사