gitlab-backup-cli를 사용하여 GitLab 백업 및 복원하기

Tier: Free, Premium, Ultimate Offering: Self-Managed Status: Experiment

이 도구는 개발 중이며 궁극적으로는 GitLab을 백업하고 복원하는 데 사용되는 Rake 작업을 대체하기 위한 것입니다. 해당 도구의 개발은 이 에픽에서 확인할 수 있습니다: Next Gen Scalable Backup and Restore.

이 도구에 대한 피드백은 피드백 이슈에 환영합니다.

백업하기

현재 GitLab 설치를 백업하려면 다음을 실행하세요:

sudo gitlab-backup-cli backup all

백업 디렉터리 구조

예시 백업 디렉터리 구조:

backups
└── 1714053314_2024_04_25_17.0.0-pre
    ├── artifacts.tar.gz
    ├── backup_information.json
    ├── builds.tar.gz
    ├── ci_secure_files.tar.gz
    ├── db
    │   ├── ci_database.sql.gz
    │   └── database.sql.gz
    ├── lfs.tar.gz
    ├── packages.tar.gz
    ├── pages.tar.gz
    ├── registry.tar.gz
    ├── repositories
    │   ├── default
    │   │   ├── @hashed
    │   │   └── @snippets
    │   └── manifests
    │       └── default
    ├── terraform_state.tar.gz
    └── uploads.tar.gz

db 디렉터리는 pg_dump를 사용하여 GitLab PostgreSQL 데이터베이스를 백업하는 데 사용됩니다. pg_dump의 출력물은 압축된 SQL 파일을 만들기 위해 gzip로 파이핑됩니다.

repositories 디렉터리는 GitLab 데이터베이스에서 찾을 수 있는 Git 리포지터리를 백업하는 데 사용됩니다.

백업 ID

백업 ID는 개별 백업을 식별합니다. GitLab을 복원해야 하는 경우 여러 백업이 있는 경우 백업 아카이브의 백업 ID가 필요합니다.

백업은 config/gitlab.yml 파일에 지정된 backup_path 디렉터리에 저장됩니다.

  • 기본적으로 백업은 /var/opt/gitlab/backups에 저장됩니다.
  • 기본적으로 백업 디렉터리는 backup_id에 따라 이름이 지정되며, <backup-id>는 백업이 생성된 시간과 GitLab 버전을 나타냅니다.

예를 들어, 백업 디렉터리 이름이 1714053314_2024_04_25_17.0.0-pre이면, 생성 시간은 1714053314_2024_04_25로 나타내고 GitLab 버전은 17.0.0-pre입니다.

백업 메타데이터 파일 (backup_information.json)

  • 메타데이터 버전 2는 GitLab 16.11에서 도입되었습니다.

backup_information.json은 백업 디렉터리에 있으며, 백업에 대한 메타데이터를 저장합니다. 예를 들면:

{
  "metadata_version": 2,
  "backup_id": "1714053314_2024_04_25_17.0.0-pre",
  "created_at": "2024-04-25T13:55:14Z",
  "gitlab_version": "17.0.0-pre"
}

제한 사항

  • 이 도구는 1K 아키텍처에서만 테스트되었으며, 관련 환경에서만 사용하는 것을 권장합니다.
  • 초기 버전은 복사 전략을 사용하지 않으므로, 백업을 수행하는 동안 기존 파일에 변경이 없는 한 괜찮습니다.

    이유로 인해 GitLab 인스턴스를 유지 보수 모드로 전환하거나, 서버로의 트래픽을 제한하여 인스턴스가 사용되지 않도록 보장해야 합니다.

    복사 전략의 대안이 논의된 이슈 428520를 참조하세요.