스테이징 환경으로 데이터베이스 덤프 가져오기

가끔은 테스트를 위해 프로덕션 환경의 데이터베이스를 스테이징 환경으로 가져오는 것이 유용할 수 있습니다. 아래 절차는 프로덕션 환경과 스테이징 가상 머신 모두에 SSH 및 sudo 액세스 권한이 있다고 가정합니다.

작업을 마치면 스테이징 VM을 삭제하십시오. 데이터 유출을 피하기 위해서 중요합니다.

스테이징 VM에서 대규모 데이터베이스 가져오기를 가속화하려면 /etc/gitlab/gitlab.rb에 다음 줄을 추가하십시오.

# 스테이징에서
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 덤프를 우리의 로컬 머신으로 스트리밍하고, 이 스트림을 스테이징 VM의 psql 클라이언트로 리디렉션합니다.

# 로컬 머신에서
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

디렉터리 구조 재생성

스테이징 서버에 일부 디렉터리 구조를 다시 만들어야 하는 경우 다음 절차를 사용할 수 있습니다.

먼저 프로덕션 서버에서 다시 만들고 싶은 디렉터리 디렉터리을 작성하십시오.

# 프로덕션에서
(umask 077; sudo find /var/opt/gitlab/git-data/repositories -maxdepth 1 -type d -print0 > directories.txt)

directories.txt를 스테이징 서버로 복사하고 해당 위치에 디렉터리를 만드십시오.

# 스테이징에서
sudo -u git xargs -0 mkdir -p < directories.txt