728x90
반응형
GitLab 백업/복원
📌 개요
GitLab은 개발자 협업에 필수적인 도구다.
하지만 운영 중 장애나 실수로 인해 데이터를 잃을 수 있기 때문에, 정기적인 백업과 정확한 복원 절차를 알아두는 것이 중요하다.
이 글에서는 Docker 기반 GitLab에서 전체 데이터를 백업하고 복원하는 방법을 기록한다.
🐳 환경 정보
운영 방식: Docker Compose
컨테이너 이름: gitlab-17.10.1-ce
GitLab 이미지: gitlab/gitlab-ce:17.10.1-ce.0
볼륨 경로:
/etc/gitlab → 설정
/var/opt/gitlab → 데이터
/var/log/gitlab → 로그
#docker-compose.yaml
services:
gitlab:
shm_size: '20gb' # 공유 메모리 크기 설정 (GitLab은 일부 프로세스에서 높은 shm 사용량이 필요함)
container_name: gitlab-17.10.1-ce # 컨테이너 이름
image: "gitlab/gitlab-ce:17.10.1-ce.0" # 사용할 GitLab CE 이미지
hostname: "limfra.co.kr" # GitLab 내부에서 사용할 호스트명
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://limfra.co.kr:6031' # GitLab이 외부에 서비스할 URL (포트 포함)
ports:
- '6031:6031' # GitLab 웹 인터페이스 포트 (HTTP)
- '6032:6032' # SSH 포트 (옵션, SSH over custom port 가능)
- '6033:6033' # 기타 서비스 포트 (예: 레지스트리용으로 사용 가능)
volumes:
- etc:/etc/gitlab # GitLab 설정 파일 저장소 (gitlab.rb 등)
- logs:/var/log/gitlab # GitLab 로그 저장소
- data:/var/opt/gitlab # GitLab 데이터 (레포지토리, DB, CI 등 모든 데이터 포함)
volumes:
etc: # 설정 파일을 영속적으로 유지하기 위한 볼륨
logs: # 로그 파일을 영속적으로 유지하기 위한 볼륨
data: # GitLab 핵심 데이터를 저장하는 주요 볼륨 (백업 시 가장 중요한 부분)
📦 GitLab 백업 대상 목록 (gitlab-backup create 기준)
| 구분 | 백업 대상 | 설명 |
|---|---|---|
| DB | PostgreSQL (기본 내장) | 이슈, Merge Request, 사용자, 프로젝트 설정 등 |
| Repository | 프로젝트 .git 리포지토리 | 각 프로젝트의 코드 (모든 브랜치/커밋 이력 포함) |
| Wiki 저장소 | 프로젝트 .wiki.git 리포지토리 | Git 기반 위키 (댓글 포함) |
| 업로드 파일 | /uploads/ | 이슈나 코멘트에 업로드된 첨부파일 |
| 사용자 아바타 | /uploads/-/system/user/avatar | 사용자 프로필 이미지 등 |
| CI/CD 아티팩트 | /artifacts/ | CI/CD 실행 결과물 (job artifacts) |
| CI 캐시 | /cache/ | GitLab Runner 빌드 캐시 |
| LFS 객체 | /lfs-objects/ | Git LFS로 저장된 대용량 파일 |
🧼 GitLab 전체 백업하기
GitLab은 모든 데이터(코드, DB, Wiki, 업로드 등)를 포함한 통합 백업을 제공한다.
1.백업 파일 생성하기
#백업
[root@]$ docker exec -t 컨테이너명 gitlab-backup create
#백업 파일 위치
#컨테이너 내부
/var/opt/gitlab/backups
#볼륨
/home/docker/volumes/gitlab_data/backups
#파일명(예시)
-rw-r--r-- 1 1000 1000 456089600 Jul 3 08:28 1751530921_2025_07_03_17.10.1_gitlab_backup.tar
🔄 GitLab 복원하기
1.서비스 정지
docker exec -it 컨테이너명 gitlab-ctl stop unicorn
docker exec -it 컨테이너명 gitlab-ctl stop sidekiq
2.복원
docker exec -it 컨테이너명 gitlab-backup restore
3.서비스 재시작
docker exec -it 컨테이너명 gitlab-ctl reconfigure
docker restart 컨테이너명
🧠 주의할 점
- GitLab 버전이 달라지면 복원 시 오류 발생할 수 있음 → 동일 버전 사용 권장
- 외부 DB(PostgreSQL)를 사용하는 경우 추가 설정 필요 (gitlab.rb)
- 도메인이 바뀔 경우 컨테이너를 새로 생성해야 함
📚 참고
GitLab 공식 문서: Backup and Restore
728x90
반응형
'오픈소스' 카테고리의 다른 글
| [오픈소스] 폐쇄망/내부망 Subversion 설치 (0) | 2025.10.22 |
|---|---|
| [오픈소스] 폐쇄망/내부망 Apache2.4 설치 (0) | 2025.09.25 |
| [오픈소스] 브라우저 터미널 직접 만들기: node-pty로 bash 연결하는 실시간 터미널 (0) | 2025.06.30 |
| [오픈소스] dependency-manager: ibraries.io 기반 라이브러리 자동 수집 도구 (0) | 2025.06.26 |
| [Nexus] Nexus 디스크 공간 정리 방법 (2) | 2025.05.16 |
댓글