다른 PostgreSQL 인스턴스로 GitLab 데이터베이스 이동하기
가끔은 데이터베이스를 한 PostgreSQL 인스턴스에서 다른 인스턴스로 이동해야 할 필요가 있습니다. 예를 들어, AWS Aurora를 사용하고 있고 데이터베이스 로드 밸런싱을 준비 중이라면 데이터베이스를 RDS for PostgreSQL로 이동해야 합니다.
다른 인스턴스로 데이터베이스를 이동하려면:
-
소스 및 대상 PostgreSQL 엔드포인트 정보를 수집합니다:
SRC_PGHOST=<소스 postgresql 호스트> SRC_PGUSER=<소스 postgresql 사용자> DST_PGHOST=<대상 postgresql 호스트> DST_PGUSER=<대상 postgresql 사용자>
-
GitLab을 중지합니다:
sudo gitlab-ctl stop
-
소스에서 데이터베이스를 덤프합니다:
/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
참고: 드물게,
pg_dump
를 실행한 후에 데이터베이스 성능 문제가 발생할 수 있습니다. 이는pg_dump
에 쿼리 계획 결정에 사용되는 통계가 포함되지 않기 때문입니다. 복원 후에 성능이 저하되면 문제가 되는 쿼리를 찾고, 해당 쿼리에서 사용하는 테이블에 대해 ANALYZE를 실행하여 문제를 해결하십시오. -
대상으로 데이터베이스를 복원합니다 (동일한 이름을 가진 기존 데이터베이스를 덮어씁니다):
/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
- 선택 사항: PgBouncer를 사용하지 않는 데이터베이스에서 PgBouncer를 사용하는 데이터베이스로 마이그레이션 하는 경우, 응용 프로그램 데이터베이스(보통
gitlabhq_production
)에 수동으로pg_shadow_lookup
함수를 추가해야 합니다. -
/etc/gitlab/gitlab.rb
파일에서 대상 PostgreSQL 인스턴스의 적절한 연결 세부 정보로 GitLab 응용 프로그램 서버를 구성합니다:gitlab_rails['db_host'] = '<대상 postgresql 호스트>'
GitLab 다중 노드 설정에 대한 자세한 정보는 참조 아키텍처를 참조하세요.
-
변경 사항이 적용되려면 재구성합니다:
sudo gitlab-ctl reconfigure
-
GitLab을 다시 시작합니다:
sudo gitlab-ctl start