DevOps/GitLab

GitLab 백업 및 복원 방법

yscho03 2022. 5. 10. 09:42
728x90
반응형

애플리케이션 데이터 백업은 데이터베이스, 모든 리포지토리 및 모든 첨부 파일을 포함하는 아카이브 파일을 생성한다.
백업을 생성한 GitLab의 버전 및 유형(CE/EE)과 정확히 동일한 버전 으로만 백업을 복원할 수 있다.

 

요구사항

# Debian/Ubuntu
sudo apt-get install rsync

# RHEL/CentOS
sudo yum install rsync

 

GitLab 백업

GitLab은 다음을 포함하여 전체 인스턴스를 백업하는 명령줄 인터페이스를 제공한다.

  • 데이터 베이스
  • 첨부 파일
  • Git 리포지토리 데이터
  • CI/CD 작업 출력 로그
  • CI/CD 작업 아티팩트
  • LFS 객체
  • Terraform 상태( GitLab 14.7에 도입 됨)
  • Container Registry 이미지
  • GitLab 페이지 콘텐츠
  • 패키지( GitLab 14.7에서 도입 됨)
  • 짧은 발췌
  • 그룹 위키

백업에는 다음이 포함되지 않는다.

실행방법

  • GitLab 12.2 이상:
sudo gitlab-backup create
  • GitLab 12.1 및 이전 버전:
gitlab-rake gitlab:backup:create

출력 예)

Dumping database tables:
- Dumping table events... [DONE]
- Dumping table issues... [DONE]
- Dumping table keys... [DONE]
- Dumping table merge_requests... [DONE]
- Dumping table milestones... [DONE]
- Dumping table namespaces... [DONE]
- Dumping table notes... [DONE]
- Dumping table projects... [DONE]
- Dumping table protected_branches... [DONE]
- Dumping table schema_migrations... [DONE]
- Dumping table services... [DONE]
- Dumping table snippets... [DONE]
- Dumping table taggings... [DONE]
- Dumping table tags... [DONE]
- Dumping table users... [DONE]
- Dumping table users_projects... [DONE]
- Dumping table web_hooks... [DONE]
- Dumping table wikis... [DONE]
Dumping repositories:
- Dumping repository abcd... [DONE]
Creating backup archive: $TIMESTAMP_gitlab_backup.tar [DONE]
Deleting tmp directories...[DONE]
Deleting old backups... [SKIPPING]

백업 경로

기본적으로 /var/opt/gitlab/backups에 저장하게 되어있다.

vi /etc/gitlab/gitlab.rb

# 581번째 라인
gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'

 

자동 백업 구성

1. root사용자 의 crontab을 편집한다.

sudo su -
crontab -e

2. 매일 오전 2시에 백업을 예약하려면 다음 줄을 추가한다.

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

 

수명주기 구성

다음과 같이 백업 작업이 실행될 때 이전보다 오래된 백업 backup_keep_time이 정리된다.

1. 설정 파일 변경

vi /etc/gitlab/gitlab.rb

# 590번째 라인
## Limit backup lifetime to 7 days - 604800 seconds
gitlab_rails['backup_keep_time'] = 604800

2. 재구성

GitLab을 재구성하고 재시작한다.

gitlab-ctl reconfigure
gitlab-ctl restart

 

 

GitLab 복구

1. 프로세스 중지

데이터베이스에 연결된 프로세스를 중지한다. 나머지 GitLab은 실행 상태로 둔다.

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
# Verify
sudo gitlab-ctl status

2. 복원 실행

그런 다음 복원하려는 백업의 타임스탬프를 지정하여 백업을 복원한다.

sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce

 

참고

https://docs.gitlab.com/ee/raketasks/backup_restore.html

728x90
반응형