서버 인프라/DB

RDS Postgresql 로컬에서 실행하기

트리맨스 2022. 9. 27. 01:41
반응형

 

RDS에 있는 데이터를 가져와야 하는데, 여러가지 제한 사항 때문에 시간이 많이 걸리는 쿼리를 10억회 이상 날릴 일이 생겼다. 그래서 쿼리 속도 향상을 위해 DB 전체를 로컬로 가져와서, localhost로 쿼리를 날리는 방법을 선택했다. 이를 위해 RDS에 있는 데이터를 로컬에서 처리하기 위한 방법을 기록해 볼려고 한다. 여기서는 pg_dump 명령어를 사용할 것이다. 

 

덤프란?

덤프는 .sql 형식의 파일이며, 데이터베이스의 데이터를 sql 구문으로 출력된 파일을 덤프라고 한다. 이걸 이용해서 데이터를 백업하거나 파일로 저장, 복구할 수 있다. Mac 환경 기준, brew install postgresql 명령어를 통해 psql을 미리 설치해두자.

 

데이터 가져오기


pg_dump -h [주소] -p [포트] -U [유저네임] -f [추출된 파일이름.sql] [DB이름]

위 구문을 입력하게 되면 덤프 파일이 생성된다. 입력 이후에는 비밀번호를 입력하라고 하는데, 그냥 DB 비밀번호 임력하면 된다. 나의 경우에는 11GB정도 나왔는데, 덤프 파일을 뽑는 데는 시간이 좀 걸리니 커피 한잔 하도록 하자.

 

데이터 입력 후 실행


로컬의 특정 DB에 적용시켜 실행할 것인데, 이 때 DB는 새 것으로 만들어 두자. 

 

psql -U [유저이름] -d [DB이름] -f [덤프파일이름.sql]

 

로컬에서 확인하기 전에, psql 프로세스가 잘 돌아가는지 확인해보자. 나는 이거 때문에 시간을 좀 잡아먹었다. 

homebrew로 설치했을 경우

brew services list

brew로 설치한 패키지 중 현재 서비스로 실행되는 프로세스의 리스트를 본다. 이 때 뭔가 postgresql과 연관이 있는 거 같으면 성공, 없으면 수동으로 실행해 줘야 한다.

brew services restart postgresql@14

 

postgresql 서비스가 실행이 되어야지 local에 있는 db에 접속할 수 있다.

 

 

참고자료


 

https://gist.github.com/syafiqfaiz/5273cd41df6f08fdedeb96e12af70e3b

 

How to copy production database on AWS RDS(postgresql) to local development database.

How to copy production database on AWS RDS(postgresql) to local development database. - how-to-copy-aws-rds-to-local.md

gist.github.com

https://seulcode.tistory.com/311

 

RDS에서 로컬로 postgres pg_dump해서 데이터 가져오기

데이터 가져오기 이전에 한번 RDS에서 postgres 데이터를 가져오는 법을 정리한 적이 있는데, 이번에 한 번 더 해보니 잘 되지 않아서 다시한번 트러블슈팅을 기록해둔다. 우선 이 명령어로 postgres

seulcode.tistory.com

 

반응형