현재 운영중인 DB 데이터를 덤프파일로 받아와 테스트를 하기로 결정했다.
pg_dump를 하기 위해 DB 서버의 hostname과 user, database 의 정보가 필요하다.
powershell에서 아래 명령어를 통해 백업 파일을 생성한다.
pg_dump -h 호스트정보 -U 유저네임 -d 디비네임 -F c -f ",,.backup"
-f 뒤에 경로를 지정해주면 거기에 저장이 된다.
덤프 파일 저장 후 테스트 서버에 전송해준다.
scp "지정경로.backup" username@ip주소:/home/---- #지정경로
이렇게 명령어를 치면 해당 ip에 home/----아래에 생성이 되는 걸 확인할 수 있다.
여기까지는 괜찮았는데,, 권한 문제 user name이 다른 문제가 발생해서 restore이 제대로 진행되지 않았다.
권한 문제를 해결하기 위해 public 스키마의 CREATE 권한을 부여해주었다.
GRANT ALL ON SCHEMA public TO suhyeon_u;
GRANT USAGE ON SCHEMA public TO suhyeon_u;
GRANT CREATE ON SCHEMA public TO suhyeon_u;
추가로, db에 대한 권한도 추가해주었다.
GRANT CONNECT ON DATABASE ****_db TO ****_u;
GRANT TEMP ON DATABASE ****_db TO ****_u;
GRANT CREATE ON DATABASE ****_db TO ****_u;
user name의 문제는
예를들어, 운영 서버 db의 유저 이름은 suhyeon이라면 테스트 db의 유저 이름은 suhyeon_u였다.
이것을 무시하는 명령어를 통해 restore 해주었다.
pg_restore -U ****_u -d *****_t_db -F c --no-owner /home/****/*****.backup
이렇게 했더니 정상적으로 restore을 끝낼 수 있었다.
추가로, dump 파일을 생성한 psql과 restore할 psql의 버전이 맞아야 진행할 수 있다.