don't stop believing

[GitLab] Backup & Restore 본문

Tools/Git & GitLab

[GitLab] Backup & Restore

Tongchun 2017. 9. 4. 17:34

데이터가 쌓이는 곳이니 backup과 restore도 확인해 보면 좋겠다.

우선 Backup 설정을 해보자.


Backup 설정은 gitlab.yml파일에 있다. vim 으로 gitlab.yml 파일을 열어서 Backup settings 부분을 확인하다.

$ sudo vim /var/opt/gitlab/gitlab-rails/etc/gitlab.yml

vi 또는 vim으로 열었다면 :/backup 으로 파일 내용을 검색할 수 있다.

Backup setting 부분을 찾았다면 Backup 경로를 확인한다. 그리고 Backup 이후 오래된 버전을 자동으로 지우려면 keep_time 부분을 설정하면 된다. 설정은 초 단위이며 604800초면 7일이 된다. 

Backup 이후 일주일 이전의 Backup 파일은 삭제하게 된다.

## Backup settings
backup:
  path: "/var/opt/gitlab/backups"   # Relative paths are relative to Rails.root (default: tmp/backups/)
  archive_permissions:  # Permissions for the resulting backup.tar file (default: 0600)
  keep_time: 604800    # default: 0 (forever) (in seconds)
  pg_schema:           # default: nil, it means that all schemas will be backed up
  upload:
    # Fog storage connection settings, see http://fog.io/storage/ .
    connection:
    # The remote 'directory' to store your backups. For S3, this would be the bucket name.
    remote_directory:
    multipart_chunk_size:
    encryption:
    storage_class:

Backup을 하게되면 Backup 파일은 "/var/opt/gitlab/backups"에 쌓이게 된다.

Backup 실행은 아래 명령으로 할수 있다.

$ sudo gitlab-rake gitlab:backup:create

이제 Backup 경로에 가서 Backup 파일을 확인할 수 있다.

권한을 root로 변경하려면 sudo su 명령으로 가능하다.

$ sudo su
$ cd /var/opt/gitlab/backups/

Backup 파일명은 <timestamp>_<백업날짜>_<버전>_gitlab_backup.tar로 된다.

내 경우 1504512523_2017_09_04_9.5.2_gitlab_backup.tar로 되어 있다.


이걸 주기적으로 Backup이 진행되도록 cron에 등록한다.

$ sudo su
$ crontab -e

매일 새벽 2시에 Backup이 수행되도록 하려면 아래와 같이 추가한다.

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

몇일 뒤 백업이 잘 되는지 확인해 봤다.


Backup된 파일로 복원을 하려면 동일한 버전의 GitLab이 설치되어 있어야 한다.

그리고 gitlab.yml 파일을 확인해 backup 경로가 "/var/opt/gitlab/backups"로 동일한지 확인한다.

복원하려는 Backup 파일을 backup 경로에 복사한다.

$ sudo cp 1504512523_2017_09_04_9.5.2_gitlab_backup.tar /var/opt/gitlab/backups/

GitLab 프로세스들을 정지시키고 상태를 확인한다.

$ sudo gitlab-ctl stop unicorn
$ sudo gitlab-ctl stop sidekiq
$ sudo gitlab-ctl status

GitLab이 정지되어 있다면 아래 명령으로 복원한다.

$ sudo gitlab-rake gitlab:backup:restore BACKUP=1504512523_2017_09_04_9.5.2

GitLab을 시작하고 확인한다.

$ sudo gitlab-ctl start
$ sudo gitlab-rake gitlab:check SANITIZE=true

브라우저를 열고 GitLab에 접속해 복원된 것을 확인한다.


'Tools > Git & GitLab' 카테고리의 다른 글

git 기본 명령  (0) 2018.06.11
ssh key 생성하고 적용하기  (1) 2017.12.26
Gitlab 프로젝트 만들고 사용해 보기  (0) 2017.11.09
[GitLab] 도메인 변경  (0) 2017.09.04
[GitLab] Ubuntu에 GitLab 설치  (0) 2017.08.30
Comments