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에서 도입 됨)
- 짧은 발췌
- 그룹 위키
백업에는 다음이 포함되지 않는다.
- 중요한 데이터
- Redis(따라서 Sidekiq 작업)
실행방법
- 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
참고
728x90
반응형