Info-Tech

MySQL 서버를 AWS Aurora로 이전 (마이그레이션) 하기 본문

서버이야기/AWS

MySQL 서버를 AWS Aurora로 이전 (마이그레이션) 하기

개발 로그를 쌓고 싶은 블로거 2019. 3. 3. 18:02
EC2 m4 인스턴스에서 사용중인 mysql 디비서버를 RDS로 옮기는 과정을 적어봤습니다.
서버이전은 AWS에서 제공하는 Data Migration Service(DMS)를 이용하여 이전작업을 진행했습니다.

DMS는 데이터를 AWS로 빠르고 나름 안전하게(?) 그리고 프로덕션을 무중단 상태로 운영하면서 마이그레이션을 도와줍니다.

동종 마이그레이션뿐 아니라 Oracle 또는 Microsoft SQL Server에서 Amazon Aurora로의 마이그레이션과 같은 이기종 데이터베이스 플랫폼 간의 마이그레이션도 지원합니다

준비단계
  1. RDS 인스턴스 생성
  2. DMS 인스턴스 생성
  3. DMS의 엔드포인트 생성

1 RDS 인스턴스 생성
  • 원본 데이터베이스에서 데이터를 마이그레이션 할 인스턴스를 생성합니다.
  • 저희 회사에서는 엔진옵션으로 Aurora를 이용했습니다.
  • 다음으로 세부 인스턴스의 정보를 입력합니다.
  • 최종적으로 원하는 스펙을 생성합니다.

2 DMS 인스턴스 생성
  • 원본 -> 타겟으로 마이그레이션을 도와줄 인스턴스를 생성합니다.
  • 크기에 알맞게 DMS 인스턴스를 생성합니다.

3 DMS의 엔드포인트 생성
  • 원본(EC2 mysql)의 엔드포인트 생성을 합니다.
  • 원본/타겟 엔드포인트 식별자는 source/target’와 같은 인식이 가능하게 단어로 입력합니다.
  • 소스엔진은 mysql’(해당 사용하고 있는 것과 맞게 끔)을 선택합니다
  • 서버이름은 해당 퍼블릭 주소를 입력해줍니다.
  • 포트는 3306 혹은 사용하고 계신 포트를 입력하시면 됩니다.
  • 그다음 계정 / 비밀번호를 입력하고 테스트 연결을 해줍니다.
  • 테스트 연결이 되어 있지않다면 계정에 대한 grant와 같은 옵션을 확인해 줍니다.
  • 타겟 엔드포인트도 위와 같은 설정으로 진행합니다.

*주의사항*
DMS는 원본 데이터베이스의 인덱스나 외래키정보도 같이 넘겨주지 않습니다 ㅠㅠ 이부분에서 엄청 삽질 했다는..
만약 현재의 인덱스나 외래키 설정을 그대로 가져가고 싶다면 AWS에서 지원해주는 Schema convert tool을 이용하거나 (저같은 경우에는 맥을 사용하는데 오류가 심해서 설치만 하고 안씀)
아래와 같은 명령어를 통해 dump를 통해 스키마를 빼내는 방법이 있습니다.

mysqldump -u root -p --no-data dbname > schema.sql

그 다음 해당 Aurora 인스턴스에 저 스키마를 미리 import 하는 방법이 있습니다.

그 후 엔드포인트의 Aurora의 고급설정에서 외래키 점검을 비활성화 해줍니다.
initstmt=SET FOREIGN_KEY_CHECKS=0(외래키 점검 비활성화)

작업단계
  1. DMS 작업 생성
  2. DMS 작업 설정
  3. DMS 테이블 매핑

1 DMS 작업생성
  • 작업이름 : 해당 사용할 작업이름을 적습니다.
  • 복제인스턴스 : 아까 생성한 DMS 인스턴스 선택합니다.
  • 소스 엔드포인트 : 아까 만든 소스의 엔드포인트를 적습니다.
  • 타겟 엔드포인트 : 아까 만든 타겟의 엔드포인트를 적습니다.
  • 마이그레이션 유형:
    • 기존데이터 마이그레이션 : 현재 시작지점까지의 데이터를 마이그레이션 해줍니다 (만약 소스 디비상태가 shutdown 상태인 경우 유리)
    • 기존데이터 마이그레이션 및 지속적인 변경사항 복제 : 무중단 상태의 마이그레이션을 보장해줍니다.
    • 데이터 변경사항 복제 : 현재 시작시점으로 부터 쌓이는 데이터의 마이그레이션 입니다.

2 DMS 작업 설정
  • 대상 테이블 준비 모드:
    • 아무 작업 안함 : 타겟 데이터베이스의 테이블을 건드리지 않고 데이터를 복제합니다. 
    • 대상 테이블에서 삭제 : 만약 대상테이블이 존재하면 삭제되고 새롭게 쓰입니다. (*주의 : 만약 이걸로 하면 위에서 dump떠서 적용한 스키마가 다 날라감 주의)
    • 자르기 : 테이블의 메타정보를 보존한 상태로 데이터만 잘라줍니다
  • 복제에 LOB 열 포함:
    • 해당 설정에 맞게 LOB열을 포함 할지 말지 정해주시면 됩니다.
  • 검증 활성화 : 데이터 마이그레이션이 다 수행 된후 무결성을 체크(?) 해주는 부분인데 만약 테이블 크기가 크다면 이 작업이 엄청 오래 걸릴 수 있습니다.. (저는 체크 안했습니다)
  • 로깅 활성화 : CloudWatch를 볼수 있게 기능을 활성화 할 수 있습니다. (마이그레이션 작업시 오류가 어디서 났는 지 확인 가능)
  • 고급설정 : 고급설정 탭을 통해 마이그레이션의 병렬노드할 테이블 수나 속도 커밋을 제어 할 수 있습니다.

3 테이블 매핑
  • 스키마 이름 : 복제할 스키마를 선택합니다.
  • 테이블 이름 형식
    • % : 모든 테이블 복사
    • Member이런식으로 마이그레이션 할 테이블 이름 지정 가능
  • 작업
    • 포함 : 해당 작업을 포함 시킵니다.
    • 제외 : 해당 테이블의 작업을 제외시킵니다.

위 설정을 마친 후 작업 생성을 클릭하면 작업이 시작 됩니다.


Comments