RDS 리전 간 데이터 이행하는 방법

2022.10.31

안녕하세요, 임채정입니다.
이번에는 RDS 데이터베이스를 다른 리전으로 이동시키고 싶을 때 할 수 있는 방법에 대해 정리했습니다.

아젠다

  1. 이행 방법 정리
  2. 백업을 취득해서 이행하기
  3. Read Replica(읽기 전용 복제본) 사용해서 이행하기
  4. 마무리

1. 이동 방법 정리

방법은 크게 두 개로 나뉠 것같습니다.
- 백업을 취득해서 이행하기
- Read Replica(읽기 전용 복제본) 사용해서 이행하기

그리고 각 이동 방법의 절차는 다음과 같습니다.

백업을 취득해서 이행하기

-1. 기존 리전에서 백업 취득하기
-2. 백업을 이행할 리전에 복사
-3. 이행할 리전에 복사한 백업을 복구
-4. 데이터가 잘 이행되었는지 확인하기
-5. 기존 리전의 RDB와 백업 삭제하기

Read Replica(읽기 전용 복제본) 사용해서 이행하기

-1. 이행할 리전에 Read Replica 작성하기
-2. 작성한 Read Replica를 마스터로 승격시키기
-3. 기존 리전의 RDS 삭제하기

2. 백업을 취득해서 이행하기

이번에는 실제로 백업을 취득해서 이행하는 방법을 정리하겠습니다.
이번 블로그에서는 한국 리전에 있는 백업을 일본 리전으로 옮기겠습니다.

실제로 옮겨보기 전에 일단 일부 데이터를 넣어놓고 확인하겠습니다.

0) 리존 RDS에 데이터 넣고 확인하기

이하의 방법으로 간단하게 데이터를 입력합니다.

# 데이터베이스 생성
CREATE DATABASE testDB;
# 테이블 생성
CREATE TABLE student
(
     _id CHAR(9),
     name VARCHAR(48) NOT NULL,
     belong VARCHAR(5),
     phone VARCHAR(11),
     status INT DEFAULT 0
);
# 데이터 입력
INSERT INTO student VALUES('20090101', 'A', 'IDE', '01112345678', 1);
INSERT INTO student VALUES('20100102', 'B', 'CSE', '01123435343', 4);
INSERT INTO student VALUES('20110103', 'C', 'MSE', '01121342443', 1);
INSERT INTO student VALUES('20100204', 'D', 'ESE', '01123424343', 2);
INSERT INTO student VALUES('20110106', 'E', 'IME', '01134343222', 0);
INSERT INTO student VALUES('20080104', 'F', 'IDE', '01123432432', 6);
INSERT INTO student VALUES('20090105', 'G', 'CSE', '01112342433', 8);
INSERT INTO student VALUES('20090301', 'H', 'ESE', '01132424244', 5);
INSERT INTO student VALUES('20090302', 'I', 'IDE', '01112321313', 3);
INSERT INTO student VALUES('20100505', 'J', 'CSE', '01123534644', 2);
INSERT INTO student VALUES('20110506', 'K', 'MSE', '01121334525', 8);
INSERT INTO student VALUES('20100507', 'L', 'ESE', '01123423623', 0);
INSERT INTO student VALUES('20110502', 'M', 'IME', '01134332634', 1);
INSERT INTO student VALUES('20080501', 'N', 'IDE', '01123436346', 2);
INSERT INTO student VALUES('20090503', 'O', 'CSE', '01113634645', 3);
INSERT INTO student VALUES('20090509', 'P', 'ESE', '01132427535', 0);
# 데이터 출력
SELECT * FROM student;

출력된 결과를 확인해보면 다음과 같이 데이터가 들어있습니다.

1) 기존 리전에서 백업 취득하기

먼저 기존 리전의 RDS의 백업을 취득하겠습니다.
백업을 취득할 RDS에서 [작업]->[스냅샷 생성]을 클릭합니다.

임의의 스냅샷 이름을 입력해서 백업을 생성합니다.

그러면 스냅샷이 이렇게 생성됩니다.

2) 백업을 이행할 리전에 복사

이번에는 취득한 백업을 도쿄 리전으로 복사하겠습니다.
복사할 백업의 세부 페이지에서 [작업]->[스냅샷 복사]를 클릭합니다.

대상 리전을 도쿄(Tokyo) 리전으로 선택하고 스냅샷 식별자를 임의로 입력해서 스냅샷을 복사합니다.

3) 이행할 리전에 복사한 백업을 복구

이번에는 도쿄 리전으로 가서 백업을 복구하겠습니다.
먼저 도쿄 리전으로 이동합니다.

복사된 스냅샷을 확인하고 [작업]->[스냅샷 복원]을 클릭해서 스냅샷을 복원합니다.

그럼 다음과 같은 RDS가 복원됩니다.

4) 데이터가 잘 이동되었는지 확인하기

이제 복원된 RDS에 데이터가 잘 이행되었는지 확인해보면 다음과 같이 잘 이행되었습니다.

5) 기존 리전의 RDS와 백업 삭제하기

마지막으로 기존 리전에 있는 RDS와 백업을 삭제합니다

기존 리전에 있는 백업 삭제

기존 리전에 있는 RDS 삭제

3. Read Replica(읽기 전용 복제본) 사용해서 이행하기

이번에는 Read Replica(읽기 전용 복제본)를 사용해서 이행하는 방법을 정리해보겠습니다.

0) 리존 RDS에 데이터 넣고 확인하기

이번에도 백업을 사용한 방법과 같이 먼저 데이터를 확인해줍니다.

1) 이행할 리전에 Read Replica 작성하기

이번에는 이행할 리전에 Read Replica를 작성해주겠습니다.
RDS 상세 페이지에서 [작업]->[읽기 전용 복사본 생성]을 클릭합니다.

DB인스턴스 식별자와 Read Replica를 작성할 리전을 입력, 선택해줍니다.

그러면 다음과 같이 도쿄 리전에 Read Replica가 작성되었습니다.

2) 작성한 Read Replica를 마스터로 승격시키기

그러면 도쿄 리전에 작성한 Read Replica를 마스터로 승격시켜주겠습니다.
[작업]->[승격]을 클릭합니다.

그럼 다음과 같이 도쿄 리전의 Read Replica가 마스터가 된 걸 확인할 수 있습니다.

3) 기존 리전의 RDS 삭제하기

다음으로 기존 리전에 있는 RDS와 백업을 삭제합니다

기존 리전에 있는 RDS 삭제

4) 데이터가 잘 출력되는지 확인하기

마지막으로 데이터가 잘 출력되는지 확인해보겠습니다.
다음과 같이 잘 출력되는 걸 확인 할 수 있습니다.

4. 마무리

백업과 Read Replica를 사용하는 두 방법 모두 데이터베이스를 사용하지 않는 시간을 잘 골라서 이행하는 게 좋을 것같습니다.
(백업은 취득 시 데이터를 쓰거나 하면 제대로 이행되지 않을 가능성이 있고, Read Replica의 경우에는 승격시킬 때 재부팅이 되기 때문에)

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !