SU_DING_GI

[AWS] 기존 서버에서 새로운 서버로 마이그레이션 하기 - 1. RDS 생성 및 백업 본문

INFRA

[AWS] 기존 서버에서 새로운 서버로 마이그레이션 하기 - 1. RDS 생성 및 백업

Soonga00 2025. 2. 4. 14:15
728x90

기존에 운영하던 알고리즘 웹사이트 Aloc은 개인 계정으로 운용하고 있어서 비용 문제가 발생하기 시작했기에 잠시 중단했다가, 공동 계정으로 서버를 옮기게 되면서 과정을 기록하면 좋겠다~ 싶어서

1. RDS 복구하기

2. EC2 인스턴스 생성하기

3. 기존 CI/CD 코드에 변경 사항 적용해서 서버 키기

로 단계별로 구현해보려한다!

1. RDS 생성하기

DB 백업 파일을 스냅샷으로 받은게 아니라서 일단은! RDS 인스턴스부터 생성해보겠다

RDS에 들어가서 새로운 데이터베이스를 생성해주고,

기존에 PostgreSQL을 사용했어서 PostgreSQL 엔진을 선택해줬다

템플릿은 프리티어를 선택하여 추가로 내는 비용 없이 사용할 수 있도록 하는데, 이때 추후 엔진 버전을 활용해 파라미터 그룹을 만들어야하기 때문에 엔진 버전을 기억해준다.

그리고 식별자나 자격 증명은 기존에 사용했던대로 그대로 옮겨줬다

프리티어를 선택했기때문에 인스턴스나 스토리지 값은 기본값을 유지했고,

추가 과금이 되지 않도록 스토리지 자동 조정 활성화를 해제했다.

그 후에, 아직 EC2를 생성하지 않았기 때문에 EC2컴퓨팅 리소스에 연결하지 않고

EC2를 생성하기 전에 로컬에서 DB에 직접 연결해서 백업 데이터를 복구하고 로컬에서 잘 접속이 되는지 확인할 예정이기 때문에 퍼블릭 엑세스를 "예"로 바꿔주고 나머지는 기본 값을 유지해줬다.

그외에는 따로 손대지 않고 초기 데이터베이스 이름을 기존이름으로 설정하고, 백업기간을 3일정도로 설정하고, 다른 운영진 친구들이 사용할 때 괜히 복잡해질 수 있으니 암호화 활성화를 해제해줬다.

그 이후에 아래 데이터베이스 생성을 누르면,

이렇게 데이터베이스가 생성된다.

2. RDS 초기 필수 설정

우선, 새로운 파라미터그룹을 생성해야한다! 우측의 버튼을 눌러 새로운 파라미터 그룹을 생성하여

앞서, 기억해두었던 엔진 버전으로 새로운 파라미터 그룹을 생성한다

그후 생성한 파라미터를 선택하고 작업-편집을 누르고

timezone을 UTC -> UTC+9로 바꾼 후 변경사항저장을 눌러준다.

이제 다시 데이터 베이스로 돌아가

만든 데이터베이스를 선택하고 수정을 눌러준 후

추가 구성에서 방금 만든 새로운 파라미터 그룹으로 교체해준다.

이렇게 하면 초기 설정 끝!

3.  로컬 환경에서 RDS에 접속해 기존 데이터 백업 하기

EC2 - 보안그룹 - default로 들어가 인바운드 규칙을 편집해 내 로컬 PC에서도 데이터베이스에 접속할 수 있도록 규칙을 생성해주자!

규칙 추가 버튼을 누르고 PostgreSQL을 선택하고 내 IP를 추가한 후 규칙을 저장한다.

나는 인텔리제이의 데이터 베이스 연결 탭에서
host -> 엔드포인트

user -> 기존에 설정한 마스터 사용자 이름

password -> 기존에 설정한 마스터 사용자 이름
database -> 데이터베이스 이름

입력하고 테스트 connection을 눌렀을 때 잘 된다면 연결이 잘 되는 것이다.

이렇게 연결이 잘된다는 것을 확인했으면 로컬에서 백업파일을 전부 실행해 보자!

파일을 확인해보니 스키마 생성 코드(DML)은 없고 데이터 관련 코드(DDL)만 있는 상황이라 우선 Schema 파일부터 만들어주겠다!

기존에 로컬에서 사용하던 postgresql이 14버전이라 16버전으로 재설치 해준 후,

pg_dump -h localhost -U postgres -d aloc --schema-only > schema.sql

이 코드로 shcema 파일을 만들어줬다.

백업 파일들이 있는 폴더에 schema.sql 파일을 옮겨주고

psql -h <RDS_엔드포인트> -U <DB_사용자> -d <DB_이름> -f aloc_backup.sql

DML 코드를 실행 시켰고

잘 추가된 것을 확인할 수 있다!

마지막으로 이제 데이터만 복구하면 되는데... 코드르 잘보니 INSERT코드가 아니라 전부 UPDATE로만 이루어진 코드 였다.. 허허.. 

음 데이터쪽이라 망가지면.. 안되기 때문에.. 노가다를 조금 해보려고 한다

연관관계 고려해서 가장 말단 엔티티 코드를 GPT한테 insert 코드로 바꿔달라고 하고 하나씩 위에 코드로 실행시켜줬다

이마저도 너무 로우가 많은 테이블들은 할 수가 없어서 파이썬으로 코드 짜서 수정해줬다 ㅠ

짠~ 백업 성공~~