[PostgreSQL] 데이터베이스의 덤프와 복원

postgresql에서 DB 데이터를 뽑고 옮기는 방법을 간단히 정리한다.




SQL 덤프

가장 간편하게 데이터를 뽑아오는 방법은, SQL 덤프를 뜨는 것이다.
postgresql의 기본 보조도구인 pg_dump를 통해 가져올 수 있다.

pg_dump -U postgres --host 호스트 -d DB명 > dump.sql

이러면 출력 결과를 저 dump.sql이라는 파일에 저장할 것이다.


그렇다.




SQL 덤프 진행상황 모니터링하기

근데 저 dump 명령은 정말 기본적인 기능만 갖추고 있기 때문에, 덤프가 오랫동안 실행될 경우에도 진행상황 같은 걸 보여주는게 없다.
근데 수백기가 넘는 데이터셋을 덤프할 때는 뭐 되는지 안되는지를 좀 볼 수 있는게 중요하다.

이럴땐 pv라는 별도 도구를 이용하면 된다.

sudo apt-get install -y pv

그리고 실행할때 한 단계를 거치도록 구성하면 된다.
dump의 출력값을 중간에 pv가 가로채서 출력해주도록 했다.

pg_dump -U postgres --host 호스트 -d DB명 | pv -W > dump.sql

그럼 이렇게 예쁘게 뜰 것이다.




dump 집어넣기

우리는 덤프를 sql로 떴기 때문에 그냥 바로 실행하면 그대로 들어가게 되어있다.

psql -U postgres dump.sql

DB 버전이 맞더라도 EXTENSION 같은게 일치하지 않으면 실패할 수는 있다.
내 경우에는 그냥 데이터가 중요했기 때문에 무시했다.

에러가 떠도 나머지 쿼리들은 잘 실행된다.

실제 데이터셋은 COPY를 통해 들어간다.



참조
https://zoomadmin.com/HowToInstall/UbuntuPackage/pv