

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

# のターゲットとしての 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\_apply\_exceptions コントロールテーブルにエントリ 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 をターゲットとして使用できるエンドポイント設定を説明しています。


| 名前 | 説明 | 
| --- | --- | 
| `ConnectionTimeout` | この追加の接続属性 (ECA) を使用して、MySQL インスタンスのエンドポイント接続のタイムアウトを秒単位で設定する。デフォルト値は 10 秒です。ECA の例: `ConnectionTimeout=30`。 | 
| ` TargetDbType` | ソーステーブルを移行するターゲット上の場所 (1 つのデータベースか複数のデータベースか) を指定します。を指定する場合は`SPECIFIC_DATABASE`、 AWS CLI または を使用するときにデータベース名を指定する必要があります AWS マネジメントコンソール。<br />デフォルト値: `MULTIPLE_DATABASES`<br />有効な値: {`SPECIFIC_DATABASE`, `MULTIPLE_DATABASES`} <br />例: `--my-sql-settings '{"TargetDbType": "MULTIPLE_DATABASES"}'` | 
| `ParallelLoadThreads` | データを MySQL 互換ターゲットデータベースにロードする際のパフォーマンスが向上します。データを MySQL 互換ターゲットデータベースにロードする際に使用するスレッドの数を指定します。スレッドごとに別個の接続が必要になるため、スレッド数を大きく設定するとデータベースのパフォーマンスに悪影響を生じる場合があります。<br />デフォルト値： 1 <br />有効な値: 1〜5 <br />例: `--my-sql-settings '{"ParallelLoadThreads": 1}'` | 
| `AfterConnectScript` |  AWS DMS がエンドポイントに接続した直後に実行するスクリプトを指定します。<br />例えば、MySQL 互換のターゲットが受信するステートメントをデータベースのデフォルトのコンパイル済み文字セットである latin1 文字セットに変換するように指定できる。このパラメータでは通常、UTF8 クライアントからの変換時にパフォーマンスが向上します。<br />例: `--my-sql-settings '{"AfterConnectScript": "SET character_set_connection='latin1'"}'` | 
| `MaxFileSize` | MySQL 互換データベースへのデータ転送に使用される .csv ファイルの最大サイズ (KB 単位) を指定します。<br />デフォルト値: 32768 KB (32 MB)<br />有効な値: 1～1,048,576<br />`--my-sql-settings '{"MaxFileSize": 512}'` | 

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

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


| 名前 | 説明 | 
| --- | --- | 
| `Initstmt=SET FOREIGN_KEY_CHECKS=0;` | 外部キーチェックを無効にします。<br />例: `--extra-connection-attributes "Initstmt=SET FOREIGN_KEY_CHECKS=0;"` | 
| `Initstmt=SET time_zone` | ターゲット MySQL 互換データベースのタイムゾーンを指定します。<br />デフォルト値: UTC <br />有効値:ターゲットの MySQL データベースで使用可能なタイムゾーン名。<br />例: `--extra-connection-attributes "Initstmt=SET time_zone={{US/Pacific}};"` | 

別の方法として、`--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 (長さ) を使用します。<br />長さが 65,536 〜 2,147,483,647 の場合、LONGLOB を使用します。 | 
| DATE | DATE | 
| TIME | TIME | 
| タイムスタンプ | "スケールが 0 以上、6 以下の場合: DATETIME (Scale)<br />スケールが 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 (長さ) を使用します。<br />長さが 21,846 ～ 2,147,483,647 の場合、LONGTEXT を使用します。 | 
| UINT1 | UNSIGNED TINYINT | 
| UINT2 | UNSIGNED SMALLINT | 
| UINT4 | UNSIGNED INTEGER | 
| UINT8 | UNSIGNED BIGINT | 
| WSTRING | 長さが 1 ～ 32,767 の場合、VARCHAR (長さ) を使用します。<br />長さが 32,768 ～ 2,147,483,647 の場合、LONGTEXT を使用します。 | 
| BLOB | 長さが 1 ～ 65,535 の場合、BLOB を使用します。<br />長さが 65,536 ～ 2,147,483,647 の場合、LONGBLOB を使用します。<br />長さが 0 の場合、LONGBLOB (LOB を完全にサポート) を使用します。 | 
| NCLOB | 長さが 1 ～ 65,535 の場合、TEXT を使用します。<br />長さが 65,536 ～ 2,147,483,647 の場合、CHARACTER SET が ucs2 の LONGTEXT を使用します。<br />長さが 0 の場合、ucs2 が CHARACTER SET の LONGTEXT (LOB を完全にサポート) を使用します。 | 
| CLOB | 長さが 1 ～ 65,535 の場合、TEXT を使用します。<br />長さが 65,536 ～ 2147483647 の場合、LONGTEXT を使用します。<br />長さが 0 の場合、LONGTEXT (LOB を完全にサポート) を使用します。 | 