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
https://seulcode.tistory.com/311
'서버 인프라 > DB' 카테고리의 다른 글
Slow query 개선 경험기 (0) | 2024.10.30 |
---|---|
Postgres 자연어 검색하기 (1) | 2023.11.18 |
template database "template1" does not exist 에러 해결하기 (0) | 2022.11.21 |
[Prisma] Can't reach database server at `db` 에러 해결하기 (IN 연산 관련) (0) | 2022.02.26 |
Postgresql DB의 인덱싱 알고리즘 (0) | 2021.12.26 |