다른 PostgreSQL 인스턴스로 GitLab 데이터베이스 이동

Tier: Free, Premium, Ultimate Offering: Self-managed

가끔은 데이터베이스를 한 PostgreSQL 인스턴스에서 다른 인스턴스로 이동해야 할 때가 있습니다. 예를 들어 AWS Aurora를 사용하고 데이터베이스 로드 밸런싱을 활성화하기 위해 데이터베이스를 RDS for PostgreSQL로 이동해야 할 수 있습니다.

다음과 같이 한 인스턴스에서 데이터베이스를 다른 인스턴스로 이동할 수 있습니다:

  1. 소스 및 대상 PostgreSQL 엔드포인트 정보 수집:

    SRC_PGHOST=<소스 PostgreSQL 호스트>
    SRC_PGUSER=<소스 PostgreSQL 사용자>
    
    DST_PGHOST=<대상 PostgreSQL 호스트>
    DST_PGUSER=<대상 PostgreSQL 사용자>
    
  2. GitLab을 중지합니다:

    sudo gitlab-ctl stop
    
  3. 소스에서 데이터베이스 덤프:

    /opt/gitlab/embedded/bin/pg_dump -h $SRC_PGHOST -U $SRC_PGUSER -c -C -f gitlabhq_production.sql gitlabhq_production
    /opt/gitlab/embedded/bin/pg_dump -h $SRC_PGHOST -U $SRC_PGUSER -c -C -f praefect_production.sql praefect_production
    
  4. 대상에 데이터베이스를 복원합니다 (동일한 이름의 기존 데이터베이스를 덮어씁니다):

    /opt/gitlab/embedded/bin/psql -h $DST_PGHOST -U $DST_PGUSER -f praefect_production.sql postgres
    /opt/gitlab/embedded/bin/psql -h $DST_PGHOST -U $DST_PGUSER -f gitlabhq_production.sql postgres
    
  5. GitLab 애플리케이션 서버를 설정하여 /etc/gitlab/gitlab.rb 파일에서 대상 PostgreSQL 인스턴스에 대한 적절한 연결 세부 정보를 설정합니다:

    gitlab_rails['db_host'] = '<대상 PostgreSQL 호스트>'
    

    GitLab 멀티 노드 설정에 대한 자세한 내용은 참조 아키텍처를 확인하세요.

  6. 변경 사항이 적용되도록 Reconfigure:

    sudo gitlab-ctl reconfigure
    
  7. GitLab을 재시작합니다:

    sudo gitlab-ctl start