

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# MySQL 호환 데이터베이스를의 대상으로 사용 AWS Database Migration Service
<a name="CHAP_Target.MySQL"></a>

가 AWS DMS 지원하는 소스 데이터 엔진 AWS DMS에서를 사용하여 모든 MySQL 호환 데이터베이스로 데이터를 마이그레이션할 수 있습니다. 온프레미스 MySQL 호환 데이터베이스로 마이그레이션하는 경우 AWS DMS 에서는 소스 엔진이 AWS 에코시스템 내에 있어야 합니다. 엔진은 Amazon RDS, Amazon Aurora 또는 Amazon S3와 같은 AWS관리형 서비스에 있을 수 있습니다. 또는 Amazon EC2의 자체 관리형 데이터베이스에 있을 수도 있습니다.

SSL을 사용하여 MySQL 호환 엔드포인트와 복제 인스턴스 간의 연결을 암호화할 수 있습니다. MySQL 호환 엔드포인트에서 SSL 사용에 관한 자세한 내용은 [에서 SSL 사용 AWS Database Migration Service](CHAP_Security.SSL.md) 섹션을 참조하세요.

가 대상으로 AWS DMS 지원하는 MySQL 버전에 대한 자세한 내용은 섹션을 참조하세요[의 대상 AWS DMS](CHAP_Introduction.Targets.md).

다음 MySQL 호환 데이터베이스를 대상으로 사용할 수 있습니다 AWS DMS.
+ MySQL Community Edition
+ MySQL Standard Edition
+ MySQL Enterprise Edition
+ MySQL Cluster Carrier Grade Edition
+ MariaDB Community Edition
+ MariaDB Enterprise Edition
+ MariaDB Column Store
+ Amazon Aurora MySQL

**참고**  
소스 스토리지 엔진(MyISAM, MEMORY 등)에 상관없이 AWS DMS 는 기본적으로 MySQL 호환 대상 테이블을 InnoDB 테이블로서 생성합니다.  
InnoDB 이외에 스토리지 엔진에 테이블이 있어야 하는 경우, MySQL 호환 대상에서 테이블을 수동으로 생성하고 **아무 작업 안 함** 옵션을 사용하여 테이블을 마이그레이션할 수 있습니다. 자세한 내용은 [전체 로드 작업 설정](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md) 단원을 참조하십시오.

MySQL 호환 데이터베이스를 AWS DMS의 대상으로 사용하여 작업하는 방법에 관한 자세한 내용은 다음 섹션을 참조하세요.

**Topics**
+ [MySQL 호환 데이터베이스를의 대상으로 사용 AWS Database Migration Service](#CHAP_Target.MySQL.Prerequisites)
+ [MySQL 호환 데이터베이스를의 대상으로 사용할 때의 제한 사항 AWS Database Migration Service](#CHAP_Target.MySQL.Limitations)
+ [MySQL 호환 데이터베이스를의 대상으로 사용 시 엔드포인트 설정 AWS DMS](#CHAP_Target.MySQL.ConnectionAttrib)
+ [MySQL용 대상 데이터 형식](#CHAP_Target.MySQL.DataTypes)

## MySQL 호환 데이터베이스를의 대상으로 사용 AWS Database Migration Service
<a name="CHAP_Target.MySQL.Prerequisites"></a>

 AWS DMS에서 MySQL 호환 데이터베이스를 대상으로 사용하기 전에 다음 사전 조건이 완료되어 있는지 확인해야 합니다.
+ MySQL 호환 데이터베이스에 대한 읽기/쓰기 권한이 AWS DMS 있는 사용자 계정을에 제공합니다. 필요한 권한을 생성하려면 다음 명령을 실행합니다.

  ```
  CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>';
  GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT, CREATE TEMPORARY TABLES  ON <schema>.* TO 
  '<user acct>'@'%';
  GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  ```
+ 전체 로드 마이그레이션 단계 중에 대상 테이블에 대해 외래 키를 비활성화해야 합니다. 전체 로드 중에 MySQL 호환 데이터베이스에서 외래 키 검사를 비활성화하려면 대상 엔드포인트에 대한 AWS DMS 콘솔의 **추가 연결 속성** 섹션에 다음 명령을 추가할 수 있습니다.

  ```
  Initstmt=SET FOREIGN_KEY_CHECKS=0;
  ```
+  AWS DMS 가 데이터를 대상 데이터베이스로 로드할 수 있도록 데이터베이스 파라미터 `local_infile = 1`을 설정합니다.
+ MySQL별 마이그레이션 전 평가를 사용하는 경우 다음 권한을 부여합니다.

  ```
  grant select on mysql.user to <dms_user>;
  grant select on mysql.db to <dms_user>;
  grant select on mysql.tables_priv to <dms_user>;
  grant select on mysql.role_edges to <dms_user>  #only for MySQL version 8.0.11 and higher
  ```

## MySQL 호환 데이터베이스를의 대상으로 사용할 때의 제한 사항 AWS Database Migration Service
<a name="CHAP_Target.MySQL.Limitations"></a>

MySQL 데이터베이스를 대상으로 사용하는 경우 AWS DMS 는 다음을 지원하지 않습니다.
+ 데이터 정의 언어(DDL) 문은 TRUNCATE PARTITION, DROP TABLE 및 CREATE TABLE 명령을 수행합니다.
+ `ALTER TABLE table_name ADD COLUMN column_name` 문을 사용하여 테이블의 시작이나 중간에 열을 추가합니다.
+ 전체 로드 작업에서 MySQL 호환 대상에 데이터를 로드할 때 AWS DMS 는 작업 로그의 제약으로 인해 발생한 오류를 보고하지 않습니다. 이로 인해 중복 키 오류가 발생하거나 레코드 수와 일치하지 않을 수 있습니다. 이러한 문제는 MySQL이 `LOAD DATA` 명령으로 로컬 데이터를 처리하는 방식 때문에 발생합니다. 전체 로드 단계에서 다음을 꼭 수행해야 합니다.
  + d제약 조건 비활성화
  +  AWS DMS 검증을 사용하여 데이터가 일치하는지 확인합니다.
+ 열의 값을 기존 값으로 업데이트하면 MySQL 호환 데이터베이스는 `0 rows affected` 경고를 반환합니다. 이 동작은 사실 오류는 아니지만 다른 데이터베이스 엔진이 이러한 상황을 처리하는 방식과는 다릅니다. 예를 들어, Oracle은 행 하나를 업데이트합니다. MySQL 호환 데이터베이스의 경우 awsdms\$1apply\$1exceptions 제어 테이블에 항목을 AWS DMS 생성하고 다음 경고를 기록합니다.

  ```
  Some changes from the source database had no impact when applied to
  the target database. See awsdms_apply_exceptions table for details.
  ```
+ MySQL 버전 5.7과 호환되는 Amazon Aurora 버전 2의 대상으로 Aurora Serverless를 사용할 수 있습니다. (MySQL 버전 5.7과 호환되는 Aurora Serverless를 사용할 수 있도록 Aurora MySQL 버전 2.07.1을 선택합니다.) Aurora Serverless에 관한 자세한 내용을 알아보려면 *Amazon Aurora 사용 설명서*의 [Aurora Serverless v2 사용](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html)을 참조하세요.
+ AWS DMS 는 인스턴스가 쓰기 가능 모드, 즉 `read_only` 및 `innodb_read_only` 파라미터가 `0` 또는 로 설정되어 있지 않은 한 Aurora 또는 Amazon RDS에 대한 리더 엔드포인트 사용을 지원하지 않습니다`OFF`. Amazon RDS 및 Aurora를 대상으로 사용하는 방법에 관한 자세한 내용은 다음을 참조하세요.
  +  [ 연결되어 있는 DB 인스턴스 확인](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.BestPractices.html#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection) 
  +  [ MySQL을 사용한 읽기 전용 복제본 업데이트](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MySQL.Replication.ReadReplicas.html#USER_MySQL.Replication.ReadReplicas.Updates) 
+ TIME 데이터 유형을 복제할 때 시간 값의 소수 부분은 복제되지 않습니다.
+ 추가 연결 속성를 사용하여 TIME 데이터 유형을 복제할 때 `loadUsingCSV=false`시간 값은 범위 `[00:00:00, 23:59:59]`로 제한됩니다.

## MySQL 호환 데이터베이스를의 대상으로 사용 시 엔드포인트 설정 AWS DMS
<a name="CHAP_Target.MySQL.ConnectionAttrib"></a>

추가 연결 속성을 사용하는 것과 비슷하게 엔드포인트 설정을 사용하여 MySQL 호환 대상 데이터베이스를 구성할 수 있습니다. AWS DMS 콘솔을 사용하거나의 `create-endpoint` 명령을 `--my-sql-settings '{"EndpointSetting": "value", ...}'` JSON 구문과 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)함께 사용하여 대상 엔드포인트를 생성할 때 설정을 지정합니다.

MySQL을 대상으로 사용할 수 있는 엔드포인트 설정이 다음 테이블에 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/dms/latest/userguide/CHAP_Target.MySQL.html)

또한 추가 연결 속성을 사용하여 MySQL 호환 대상을 구성할 수도 있습니다.

다음 표에는 MySQL을 대상으로 하여 사용할 수 있는 추가 연결 속성이 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/dms/latest/userguide/CHAP_Target.MySQL.html)

또는 `--my-sql-settings` 명령의 `AfterConnectScript` 파라미터를 사용하여 외래 키 점검을 비활성화하고 데이터베이스의 시간대를 지정할 j수 있습니다.

## MySQL용 대상 데이터 형식
<a name="CHAP_Target.MySQL.DataTypes"></a>

다음 표에는를 사용할 때 지원되는 MySQL 데이터베이스 대상 데이터 형식 AWS DMS 과 AWS DMS 데이터 형식의 기본 매핑이 나와 있습니다.

 AWS DMS 데이터 형식에 대한 자세한 내용은 섹션을 참조하세요[AWS Database Migration Service에서 사용되는 데이터 형식](CHAP_Reference.DataTypes.md).


|  AWS DMS 데이터 형식  |  MySQL 데이터 형식  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEAN  | 
|  BYTES  |  길이가 1\$165,535인 경우, VARBINARY(길이)를 사용합니다. 길이가 65,536\$12,147,483,647인 경우, LONGLOB를 사용합니다.  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP  |  "크기가 0 이상이고 6 이하인 경우: DATETIME(크기) 크기가 7 이상이고 9 이하인 경우: VARCHAR (37)"  | 
|  INT1  |  TINYINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  DECIMAL (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  |  DOUBLE PRECISION  | 
|  STRING  |  길이가 1\$121,845인 경우, VARCHAR(길이)를 사용합니다. 길이가 21,846\$12,147,483,647인 경우, LONGTEXT를 사용합니다.  | 
|  UINT1  |  UNSIGNED TINYINT  | 
|  UINT2  |  UNSIGNED SMALLINT  | 
|  UINT4  |  UNSIGNED INTEGER  | 
|  UINT8  |  UNSIGNED BIGINT  | 
|  WSTRING  |  길이가 1\$132,767인 경우, VARCHAR(길이)를 사용합니다. 길이가 32,768\$12,147,483,647인 경우, LONGTEXT를 사용합니다.  | 
|  BLOB  |  길이가 1\$165,535인 경우, BLOB를 사용합니다. 길이가 65,536\$12,147,483,647인 경우, LONGBLOB를 사용합니다. 길이가 0인 경우, LONGBLOB(전체 LOB 지원)를 사용합니다.  | 
|  NCLOB  |  길이가 1\$165,535인 경우, TEXT를 사용합니다. 길이가 65,536\$12,147,483,647인 경우, CHARACTER SET용 ucs2와 함께 LONGTEXT를 사용합니다. 길이가 0인 경우, CHARACTER SET용 ucs2와 함께 LONGTEXT(전체 LOB 지원)를 사용합니다.  | 
|  CLOB  |  길이가 1\$165,535인 경우, TEXT를 사용합니다. 길이가 65,536\$12,147,483,647인 경우, LONGTEXT를 사용합니다. 길이가 0인 경우, LONGTEXT(전체 LOB 지원)를 사용합니다.  | 