데이터베이스 덤프를 스테이징 환경에 가져오기

때때로 프로덕션 환경의 데이터베이스를 스테이징 환경으로 가져와서 테스트하는 것이 유용할 수 있습니다.

아래 절차는 프로덕션 환경과 스테이징 VM 모두에 SSH 및 sudo 접근 권한이 있다고 가정합니다.

작업이 완료되면 스테이징 VM을 파괴하세요.

데이터 누출을 피하는 것이 중요합니다.

스테이징 VM에서 대규모 데이터베이스 가져오기를 가속화하기 위해 /etc/gitlab/gitlab.rb에 다음 줄을 추가하세요.

# On STAGING
echo "postgresql['checkpoint_segments'] = 64" | sudo tee -a /etc/gitlab/gitlab.rb
sudo touch /etc/gitlab/skip-auto-reconfigure
sudo gitlab-ctl reconfigure
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

다음으로, 프로덕션 환경에서 압축된 SQL 덤프를 SSH를 통해 로컬 머신으로 스트리밍하고, 이 스트림을 스테이징 VM의 psql 클라이언트로 리디렉션합니다.

# On LOCAL MACHINE
ssh -C gitlab.example.com sudo -u gitlab-psql /opt/gitlab/embedded/bin/pg_dump -Cc gitlabhq_production |\
  ssh -C staging-vm sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -d template1

디렉토리 구조 재생성

스테이징 서버에서 일부 디렉토리 구조를 재생성해야 하는 경우 다음 절차를 사용할 수 있습니다.

먼저, 프로덕션 서버에서 재생성하려는 디렉토리 목록을 만듭니다.

# On PRODUCTION
(umask 077; sudo find /var/opt/gitlab/git-data/repositories -maxdepth 1 -type d -print0 > directories.txt)

directories.txt를 스테이징 서버로 복사하고 그곳에서 디렉토리를 생성합니다.

# On STAGING
sudo -u git xargs -0 mkdir -p < directories.txt