gitlab 복원 방법

한 GitLab 인스턴스에서 만든 백업 파일을 다른 GitLab 서버에 복원(추가)할 수 있습니다.

다만 다음 조건과 제약이 있습니다.

버전 일치
복원할 대상 서버의 GitLab 패키지 버전이 백업을 만든 서버와 동일해야 합니다. 버전이 다르면 데이터베이스 구조가 달라져 복원에 실패하거나 손상될 수 있습니다.

전체 복원 방식
GitLab의 gitlab-backup은 “전체 인스턴스” 단위 백업/복원만 지원합니다. 즉, 한 서버에서 A 프로젝트만, B 프로젝트만 골라서 복원하거나 두 개의 백업을 병합해서 복원하는 기능은 없습니다.

  • 만약 특정 프로젝트만 옮기고 싶다면, 프로젝트 내보내기/가져오기(export/import) 기능을 쓰셔야 합니다.

전체 백업 복원 절차

아래 예시는 Omnibus 패키지(GitLab CE/EE) 환경을 기준으로 합니다.

  1. 백업 파일 복사
    • 원본 서버에서 /var/opt/gitlab/backups/ 디렉터리에 있는 TIMESTAMP_gitlab_backup.tar 파일을 대상 서버로 복사
scp /var/opt/gitlab/backups/1612345678_2025_04_22_14.0.0_gitlab_backup.tar root@new-server:/var/opt/gitlab/backups/
  1. 대상 서버 버전 확인 및 재설치
    • 대상 서버에 원본 서버와 동일한 GitLab 버전을 설치
# 예: GitLab EE 14.0.0 설치
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee=14.0.0-ee.0
  1. GitLab 서비스 중지
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
  1. 백업 복원 명령 실행
    • 복원 도중 데이터베이스 스키마 및 레디스 캐시가 덮어씌워집니다.
    • 복원 시 /etc/gitlab/gitlab.rb 설정은 보존되므로, 필요한 경우 미리 SSH 키, 레포지토리 경로, TLS 인증서 등을 확인해 두세요.
# 기본적으로 가장 최신 백업 파일을 복원합니다.
sudo gitlab-backup restore BACKUP=1612345678_2025_04_22_14.0.0
  1. 권한 및 설정 재적용
    복원이 끝나면
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

명령으로 설정을 재적용하고 서비스를 재시작합니다.

  1. 접근 테스트
    • 웹 브라우저로 접속해 프로젝트, 사용자, 그룹, CI/CD 파이프라인 등이 정상 동작하는지 확인합니다.

프로젝트 단위 데이터 이동 방법

  • 프로젝트 Export/Import
    • 프로젝트 단위로 이동하고 싶다면, 원본 서버에서 프로젝트 설정 → “Export project”
    • 내보낸 .tar.gz 파일을 대상 서버 프로젝트 생성 화면에서 “Import project”
    • 이 경우에는 백업 전체를 덮어쓰지 않고 특정 프로젝트만 선택적으로 가져올 수 있습니다.

요약

  • 가능: 전체 인스턴스 백업 → 다른 동일 버전 서버에 복원
  • 불가능: 서로 다른 백업을 합쳐서 복원하거나, A 백업 + B 백업 데이터 병합
  • 대안: 특정 프로젝트만 옮길 땐 GitLab의 Export/Import 기능 사용

이 절차대로 진행하시면 다른 GitLab 서버에 문제없이 백업 데이터를 복원하실 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다