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주소]
'DevOps와 Infra > AWS' 카테고리의 다른 글
MacOS에서 EC2에 있는 파일 가져오기 (0) | 2024.03.20 |
---|---|
Postgresql Migration (from EC2 to Aurora) - 2/3편 (0) | 2023.09.21 |
Postgresql Migration (from EC2 to Aurora) - 1/3편 (0) | 2023.09.20 |