본문 바로가기
서버구축 (WEB,DB)

GitLab 백업 및 복원, 도커전환, 다른서버로 이전 활용

by 날으는물고기 2023. 11. 12.

GitLab 백업 및 복원, 도커전환, 다른서버로 이전 활용

GitLab를 백업하고 Docker 버전으로 재설치한 다음 복원하는 과정을 다음과 같은 단계로 설명하겠습니다.

Take your GitLab backup everyday if it works in Docker

이 단계는 일반적인 시나리오를 기반으로 작성되었으며, 상황에 따라 몇 가지 수정이 필요할 수 있습니다.

중요 사항: 이러한 작업은 실제 서버에서 수행되므로 주의 깊게 실행해야 하며 데이터 유실을 방지하기 위해 백업을 항상 수행해야 합니다.

 

단계 1: 기존 GitLab 백업

1.1. GitLab 서버에 로그인합니다.

1.2. GitLab을 백업합니다. 다음 명령어를 사용하여 GitLab 데이터 백업을 생성합니다:

sudo gitlab-rake gitlab:backup:create

1.3. 백업 파일이 /var/opt/gitlab/backups 디렉토리에 생성됩니다. 이 디렉토리를 안전한 위치로 복사하거나 S3 버킷 또는 다른 원격 저장소에 백업 파일을 저장합니다.

 

단계 2: Docker를 사용하여 GitLab 설치

2.1. Docker를 설치하고 Docker Compose를 사용하여 GitLab을 실행합니다. GitLab Docker 이미지를 다운로드하고 Docker Compose 파일을 생성합니다.

# Docker Compose 파일 다운로드
curl -LO "https://docs.gitlab.com/charts/charts-2.0.1.tar.gz"
tar -xzf charts-2.0.1.tar.gz

# GitLab 환경 설정 파일 생성 및 편집
cp charts-2.0.1/examples/docker-compose/gitlab/docker-compose.yml .

2.2. docker-compose.yml 파일을 수정하여 GitLab 설정 및 데이터 볼륨을 정의합니다. 이 파일은 GitLab Docker 이미지를 사용하여 GitLab을 실행하며 설정을 지정합니다.

 

단계 3: GitLab 복원

3.1. Docker를 사용하여 새로 설치한 GitLab 컨테이너를 중지합니다.

docker-compose down

3.2. 백업 파일을 Docker 컨테이너로 복사합니다. 백업 파일을 Docker 컨테이너의 /var/opt/gitlab/backups 디렉토리로 복사합니다.

docker cp your_backup_file.tar gitlab:/var/opt/gitlab/backups/

3.3. Docker 컨테이너를 다시 시작하여 GitLab을 복원합니다.

docker-compose up -d

3.4. GitLab 컨테이너 내부로 들어가 백업을 복원합니다.

docker exec -it gitlab /bin/bash
gitlab-rake gitlab:backup:restore BACKUP=your_backup_file

3.5. GitLab 컨테이너를 다시 시작합니다.

docker-compose restart

이제 GitLab이 Docker 컨테이너로 복원되었습니다. 새로운 Docker 버전의 GitLab을 사용할 수 있습니다.

 

gitlab-rake gitlab:backup:create 명령은 GitLab 데이터와 리포지터리 데이터를 모두 백업합니다. 기본적으로 GitLab 백업은 PostgreSQL 데이터베이스와 리포지터리 데이터 모두를 포함하므로 시스템의 전체 상태를 복원할 수 있습니다. 이러한 백업은 일반적으로 /var/opt/gitlab/backups 디렉토리에 저장됩니다.

 

백업에는 다음과 같은 데이터가 포함됩니다.

  1. GitLab 데이터베이스: GitLab의 설정, 프로젝트, 이슈, 사용자, 그룹 및 모든 관련 데이터를 포함합니다. 이 데이터는 PostgreSQL 데이터베이스에 저장됩니다.
  2. 리포지터리 데이터: Git 저장소의 실제 파일과 데이터를 포함합니다. 이 데이터는 GitLab 서버의 파일 시스템에 저장됩니다.

따라서 gitlab-rake gitlab:backup:create 명령을 사용하면 GitLab의 전체 상태를 백업하게 됩니다. 이러한 백업을 사용하여 시스템 복원 또는 다른 서버로 이전할 때 GitLab의 모든 데이터를 복원할 수 있습니다.

 

그리고, 데이터를 주기적으로 백업을 위해 스크립트를 작성하고, 백업 결과를 Airtable에 기록하는 과정입니다.

1. Airtable API 키 생성

  1. Airtable 계정 만들기 또는 로그인하기
    Airtable 웹사이트에 가입하거나 로그인을 해야 합니다.
  2. API 키 생성
    • Airtable 대시보드에서 우측 상단에 있는 프로필 아이콘을 클릭한 후, "Account"를 선택해 설정 페이지로 이동합니다.
    • "Generate API key" 버튼을 찾아 API 키를 생성하고, 이 키를 안전한 곳에 저장해 둡니다.

2. 스크립트 작성 및 Airtable API 사용

스크립트 작성

백업 스크립트를 다음과 같이 작성합니다. 에디터를 열고 스크립트를 작성하여 저장합니다.

#!/bin/bash

# GitLab 서버에 SSH로 접속
ssh <your_username>@<your_gitlab_server_ip> << EOF

# GitLab 백업 명령 실행
backup_result=$(sudo gitlab-rake gitlab:backup:create)

# Airtable API 요청
curl -X POST \
-H "Authorization: Bearer YOUR_AIRTABLE_API_KEY" \
-H "Content-Type: application/json" \
--data '{
  "fields": {
    "BackupResult": "'"$backup_result"'"
  }
}' \
https://api.airtable.com/v0/YOUR_BASE_ID/YOUR_TABLE_NAME

EOF

여기서 YOUR_AIRTABLE_API_KEY, YOUR_BASE_ID, YOUR_TABLE_NAME을 각각 앞서 생성한 Airtable API 키, 베이스 ID, 테이블 이름으로 바꿔주어야 합니다.

 

스크립트 실행 권한 부여

chmod +x /path/to/your/script.sh

3. Airtable 설정

  1. Airtable 베이스 만들기
    • Airtable 웹사이트에 로그인한 후, "Add a base"를 선택하고 "Start from scratch"를 클릭해 새로운 베이스를 만듭니다.
  2. API 키 및 베이스 ID 확인
    • API 키와 베이스 ID는 Airtable 설정 페이지에서 확인 가능합니다.
  3. 테이블 만들기
    • 새로운 테이블을 생성하고 필요한 필드를 추가합니다. 최소한 "BackupResult" 필드가 있어야 합니다.

4. 크론 작업 수정

크론 작업을 수정해서 백업 스크립트가 주기적으로 실행되도록 만들어야 합니다. 앞서 크론 작업을 수정하는 단계에서 다음과 같이 작성합니다.

   0 0 * * * /path/to/your/script.sh

이제 설정이 모두 끝났습니다. 이렇게 하면 GitLab을 자동으로 백업하고 그 결과를 Airtable에 기록할 수 있습니다.

728x90

댓글