

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# のターゲットとしての 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 によってデフォルトで InnoDB テーブルとして MySQL 互換のターゲットテーブルが作成されます。  
InnoDB 以外のストレージエンジンのテーブルが必要な場合は、手動でテーブルを MySQL 互換のターゲットで作成し、[**何もしない**] オプションを使用して移行できます。詳細については、「[全ロードタスク設定](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md)」をご参照ください。

 AWS DMSのターゲットとしての MySQL 互換データベースの使用の詳細については、以下のセクションをご参照ください。

**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>

MySQL 互換データベースを AWS DMSのターゲットとして使用し始める前に、次の前提条件を満たしていることを確認してください。
+ 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;
  ```
+ データベースパラメータ `local_infile = 1` を設定して、 AWS DMS がターゲットデータベースにデータをロードできるようにします。
+ 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、RENAME TABLE。
+ `ALTER TABLE table_name ADD COLUMN column_name` ステートメントを使用して、テーブルの先頭または中間に列を追加します。
+ 全ロードタスクで MySQL 互換ターゲットにデータをロードする場合、タスクログの制約によって発生したエラーはレポート AWS DMS されません。これにより、キーエラーが重複したり、レコード数が一致しない可能性があります。これは、MySQL `LOAD DATA` によるコマンドでのローカルデータの処理方法によるものです。フルロードフェーズ時は、必ず次を実行します。
  + Constraint を無効にする
  +  AWS DMS 検証を使用して、データが一貫していることを確認します。
+ 列の値を既存の値に更新すると、MySQL 互換データベースにより `0 rows affected` 警告が返されます。この動作は技術的にはエラーではありませんが、他のデータベースエンジンによって状況が処理される方法とは異なります。たとえば、Oracle は 1 行の更新を実行します。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 のデータ型をレプリケートする場合、時間値の小数部分はレプリケートされません。
+ 追加接続属性 `loadUsingCSV=false` を使用して TIME のデータ型をレプリケートする場合、時間値は `[00:00:00, 23:59:59]` の範囲に制限されます。

## のターゲットとして MySQL 互換データベースを使用する場合のエンドポイント設定 AWS DMS
<a name="CHAP_Target.MySQL.ConnectionAttrib"></a>

エンドポイントの設定を使用して、追加の接続属性の使用する場合と同様に、ターゲットの MySQL 互換データベースを設定できます。 AWS DMS コンソールを使用するか、`--my-sql-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[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/ja_jp/dms/latest/userguide/CHAP_Target.MySQL.html)

追加の接続属性を使用して、MySQL 互換のターゲットデータベースを設定することもできます。

次の表は、MySQL をターゲットとして使用できる追加の接続属性を説明しています。

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

別の方法として、`--my-sql-settings` コマンドの `AfterConnectScript` パラメータを使用して外部キーチェックを無効にし、データベースのタイムゾーンを指定することもできる。

## 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 〜 65,535 の場合、VARBINARY (長さ) を使用します。 長さが 65,536 〜 2,147,483,647 の場合、LONGLOB を使用します。  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  タイムスタンプ  |  "スケールが 0 以上、6 以下の場合: DATETIME (Scale) スケールが 7 以上、9 以下の場合: VARCHAR (37)"  | 
|  INT1  |  TINYINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  DECIMAL (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  |  DOUBLE PRECISION  | 
|  STRING  |  長さが 1 ～ 21,845 の場合、VARCHAR (長さ) を使用します。 長さが 21,846 ～ 2,147,483,647 の場合、LONGTEXT を使用します。  | 
|  UINT1  |  UNSIGNED TINYINT  | 
|  UINT2  |  UNSIGNED SMALLINT  | 
|  UINT4  |  UNSIGNED INTEGER  | 
|  UINT8  |  UNSIGNED BIGINT  | 
|  WSTRING  |  長さが 1 ～ 32,767 の場合、VARCHAR (長さ) を使用します。 長さが 32,768 ～ 2,147,483,647 の場合、LONGTEXT を使用します。  | 
|  BLOB  |  長さが 1 ～ 65,535 の場合、BLOB を使用します。 長さが 65,536 ～ 2,147,483,647 の場合、LONGBLOB を使用します。 長さが 0 の場合、LONGBLOB (LOB を完全にサポート) を使用します。  | 
|  NCLOB  |  長さが 1 ～ 65,535 の場合、TEXT を使用します。 長さが 65,536 ～ 2,147,483,647 の場合、CHARACTER SET が ucs2 の LONGTEXT を使用します。 長さが 0 の場合、ucs2 が CHARACTER SET の LONGTEXT (LOB を完全にサポート) を使用します。  | 
|  CLOB  |  長さが 1 ～ 65,535 の場合、TEXT を使用します。 長さが 65,536 ～ 2147483647 の場合、LONGTEXT を使用します。 長さが 0 の場合、LONGTEXT (LOB を完全にサポート) を使用します。  | 