DevOps와 Infra/AWS / / 2023. 9. 23. 03:40

Postgresql Migration (from EC2 to Aurora) - 3/3편

AWS DMS

지난 글의 AWS DMS(Data Migration Service) 방법은 실패했다.

Database가 연결된 Sprint Boot를 빌드하고 실행하는데 에러가 났다.

에러는 DB의 Function과 Sequence 때문에 나는 에러.

AWS DMS는 Tables과 Indexes만 복사를 했던 것이었다.

 

 

노가다로 Functions와 Sequences를 복사하는 방법이 있지만 더 쉬운 방법을 선택하기로 하였다.

 

pg_dump

우선 Target DB (Aurora)에 있는 database를 전부 삭제해서 비어있는 database로 되돌려놨다.

 

1. 내 맥북에 postgresql client 설치하기

설치된 psql이 있는지 확인해봅니다.

psql --version

없으면 설치

brew install libpq

설치된 libpq를 PATH에 추가

echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

설치 확인

$ psql --version
psql (PostgreSQL) 16.0

 

2. Source DB (EC2에 설치된 DB)의 db를 pg_dump

$ where psql
/opt/homebrew/bin/psql

$ cd /opt/homebrew/bin/

$ ./pg_dump -U venus_drmc -W -F p -d venus_drmc -h [source db 주소] > ./venus_drmc.sql

option 설명

-U : user

-W : 연결할 때 패스워드 프롬프트 하라는 뜻

-F p : format는 plain text로

-d : database 이름

-h : host 주소

(Windows의 경우는 저 슬래쉬가 역슬래쉬)

 

20Gb정도 크기의 DB인데 받는데 20~30분 쯤 걸렸다.

 

3. Target DB에 restore

./psql -U venus_drmc -W -d venus_drmc_prd -f ./venus_drmc.sql -h [target db 주소]

option 설명

-f : filename이라는 뜻

 

이것도 약 20분쯤 소요되었다.

 

DBeaver나 pgadmin 4에서 db를 접속해 Functions와 Sequences도 제대로 복사되었는지 확인한다.

용량이나 table 숫자를 확인하려면 DBeaver에서 sql을 날려도 되지만

직접 접속해서도 확인 가능하다. 접속 방법

$ psql -U venus_drmc -h [db주소]

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유