

# Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션
<a name="AuroraMySQL.Migrating"></a>

기존 데이터베이스에서 Amazon Aurora MySQL DB 클러스터로 데이터를 마이그레이션하기 위한 여러 가지 옵션이 있습니다. 마이그레이션할 데이터베이스와 데이터 크기에 따라서도 마이그레이션 옵션이 달라집니다.

마이그레이션에는 물리적 마이그레이션과 논리적 마이그레이션이라는 두 가지 유형이 있습니다. 물리적 마이그레이션이란 데이터베이스 파일의 물리적 사본을 사용하여 데이터베이스를 마이그레이션함을 뜻합니다. 논리적 마이그레이션은 삽입, 업데이트, 삭제 같은 논리적인 데이터베이스 변경을 적용하여 마이그레이션이 이루어짐을 뜻합니다.

물리적 마이그레이션의 장점은 다음과 같습니다.
+ 물리적 마이그레이션은 특히 대규모 데이터베이스의 경우, 논리적 마이그레이션보다 빠릅니다.
+ 물리적 마이그레이션을 위해 백업을 생성할 때 데이터베이스 성능이 저하되지 않습니다.
+ 물리적 마이그레이션은 복잡한 데이터베이스 구성 요소를 포함하여 원본 데이터베이스의 모든 것을 마이그레이션할 수 있습니다.

물리적 마이그레이션의 제한은 다음과 같습니다.
+ `innodb_page_size` 파라미터를 기본값(`16KB`)으로 설정해야 합니다.
+ `innodb_data_file_path` 파라미터는 기본 데이터 파일 이름 `"ibdata1:12M:autoextend"`를 사용하는 데이터 파일 하나만 사용하여 구성해야 합니다. 두 개의 데이터 파일이 있거나 다른 이름의 데이터 파일이 있는 데이터베이스는 이 방법을 사용하여 마이그레이션할 수 없습니다.

  다음은 허용되지 않는 파일 이름의 예입니다. `"innodb_data_file_path=ibdata1:50M; ibdata2:50M:autoextend"` 및 `"innodb_data_file_path=ibdata01:50M:autoextend"`.
+ `innodb_log_files_in_group` 파라미터를 기본값(`2`)으로 설정해야 합니다.

논리적 마이그레이션의 장점은 다음과 같습니다.
+ 특정 테이블이나 테이블의 일부와 같은 데이터베이스 하위 집합을 마이그레이션할 수 있습니다.
+ 물리적 스토리지 구조에 상관없이 데이터를 마이그레이션할 수 있습니다.

논리적 마이그레이션의 제한은 다음과 같습니다.
+ 논리적 마이그레이션은 일반적으로 물리적 마이그레이션보다 느립니다.
+ 복잡한 데이터베이스 구성 요소는 논리적 마이그레이션 프로세스의 속도를 늦출 수 있습니다. 경우에 따라 복잡한 데이터베이스 구성 요소가 논리적 마이그레이션을 차단할 수도 있습니다.

다음 표에서는 사용자의 옵션과 각 옵션에 따른 마이그레이션 유형을 설명합니다.


| 마이그레이션 원본 | [Migration type] | 솔루션 | 
| --- | --- | --- | 
| RDS for MySQL DB 인스턴스 | 물리적 |  먼저 MySQL DB 인스턴스의 Aurora MySQL 읽기 전용 복제본을 생성하여 RDS for MySQL DB 인스턴스에서 마이그레이션할 수 있습니다. MySQL DB 인스턴스와 Aurora MySQL 읽기 전용 복제본 간 복제 지연이 0이라면 클라이언트 애플리케이션이 Aurora 읽기 전용 복제본에서 데이터를 가져오다가 읽기 또는 쓰기 작업이 있을 때는 복제를 중단하고 Aurora MySQL 읽기 전용 복제본을 독립형 Aurora MySQL DB 클러스터로 사용하도록 지정할 수 있습니다. 자세한 내용은 단원을 참조하십시오[Aurora 읽기 전용 복제본을 사용하여 RDS for MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션](AuroraMySQL.Migrating.RDSMySQL.Replica.md)  | 
| RDS for MySQL DB 스냅샷 | 물리적 |  RDS for MySQL DB 스냅샷의 데이터를 Amazon Aurora MySQL DB 클러스터로 직접 마이그레이션할 수 있습니다. 세부 정보는 [RDS for MySQL 스냅샷을 Aurora로 마이그레이션](AuroraMySQL.Migrating.RDSMySQL.Snapshot.md)을 참조하세요.  | 
| Amazon RDS 외부의 MySQL 데이터베이스 | 논리적 |  `mysqldump` 유틸리티로 데이터 덤프를 생성하고 해당 데이터를 기존 Amazon Aurora MySQL DB 클러스터로 가져올 수 있습니다. 세부 정보는 [mysqldump를 사용하여 MySQL에서 Amazon Aurora MySQL로 논리적 마이그레이션](AuroraMySQL.Migrating.ExtMySQL.mysqldump.md)을 참조하세요. 외부 MySQL 데이터베이스에서 마이그레이션하는 동안 데이터베이스 사용자의 메타데이터를 내보내려면 `mysqldump` 대신 MySQL Shell 명령도 사용할 수 있습니다. 자세한 내용은 [Instance Dump Utility, Schema Dump Utility, and Table Dump Utility](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html#mysql-shell-utilities-dump-about)를 참조하세요.  [mysqlpump](https://dev.mysql.com/doc/refman/8.0/en/mysqlpump.html) 유틸리티는 MySQL 8.0.34부터 더 이상 사용되지 않습니다.   | 
| Amazon RDS 외부의 MySQL 데이터베이스 | 물리적 |  데이터베이스에서 Amazon Simple Storage Service(Amazon S3) 버킷으로 백업 파일을 복사한 후 해당 파일에서 Amazon Aurora MySQL DB 클러스터를 복원할 수 있습니다. `mysqldump`를 사용하여 데이터를 마이그레이션하는 것보다 이 방법이 훨씬 더 빠를 것입니다. 자세한 내용은 단원을 참조하십시오[Percona XtraBackup과 Amazon S3를 사용하여 MySQL에서 물리적으로 마이그레이션](AuroraMySQL.Migrating.ExtMySQL.S3.md)  | 
| Amazon RDS 외부의 MySQL 데이터베이스 | 논리적 |  데이터베이스의 데이터를 텍스트 파일로 저장하고 해당 파일을 Amazon S3 버킷에 복사할 수 있습니다. 그런 다음 `LOAD DATA FROM S3` MySQL 명령을 사용하여 기존 Aurora MySQL DB 클러스터에 해당 데이터를 로드할 수 있습니다. 자세한 내용은 [Amazon S3 버킷의 텍스트 파일에서 Amazon Aurora MySQL DB 클러스터로 데이터 로드](AuroraMySQL.Integrating.LoadFromS3.md) 단원을 참조하십시오.  | 
| MySQL과 호환되지 않는 데이터베이스 | 논리적 |  AWS Database Migration Service(AWS DMS)을 사용하여 MySQL 비호환성 데이터베이스의 데이터를 마이그레이션할 수 있습니다. AWS DMS에 대한 자세한 내용은 [AWS Database Migration Service란 무엇입니까?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)를 참조하세요. | 

**참고**  
Amazon RDS 외부의 MySQL 데이터베이스를 마이그레이션하는 경우, 표에 설명된 마이그레이션 옵션은 데이터베이스가 InnoDB 또는 MyISAM 테이블스페이스를 지원하는 경우에만 지원됩니다.  
Aurora MySQL로 마이그레이션하는 MySQL 데이터베이스가 `memcached`를 사용하는 경우 마이그레이션 전에 `memcached`를 제거하세요.  
8.0.11, 8.0.13 및 8.0.15 등의 일부 이전 MySQL 8.0 버전에서는 Aurora MySQL 버전 3.05 이상으로 마이그레이션할 수 없습니다. 마이그레이션하기 전에 MySQL 버전 8.0.28로 업그레이드하는 것이 좋습니다.