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 부분을 확인하다.

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
## 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:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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

1
$ sudo gitlab-rake gitlab:backup:create
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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

1
2
$ sudo su
$ cd /var/opt/gitlab/backups/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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


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

1
2
$ sudo su
$ crontab -e
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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

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


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

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

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

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

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

1
2
3
$ sudo gitlab-ctl stop unicorn
$ sudo gitlab-ctl stop sidekiq
$ sudo gitlab-ctl status
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

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

GitLab을 시작하고 확인한다.

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

브라우저를 열고 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