MySQL 互換データベースの AWS Database Migration Serviceのターゲットとしての使用 - AWS データベース移行サービス

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

MySQL 互換データベースの AWS Database Migration Serviceのターゲットとしての使用

が 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」をご参照ください。

がターゲットとして AWS DMS サポートする MySQL のバージョンについては、「」を参照してくださいのターゲット AWS DMS

のターゲットとして、次の 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 互換のターゲットで作成し、[何もしない] オプションを使用して移行できます。詳細については、「全ロードタスク設定」をご参照ください。

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

のターゲットとしての MySQL 互換データベースの使用 AWS Database Migration Service

MySQL 互換データベースを AWS DMSのターゲットとして使用し始める前に、次の前提条件を満たしていることを確認してください。

  • MySQL 互換データベースへの AWS DMS 読み取り/書き込み権限を持つユーザーアカウントを に提供します。 MySQL 必要なアクセス権限を作成するには、以下のコマンドを実行します。

    CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT 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 互換データベースを使用する場合の制限 AWS Database Migration Service

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 の使用」を参照してください。

  • AWS DMS は、インスタンスが書き込み可能モード、つまり read_onlyおよび innodb_read_onlyパラメータが または に設定されていない限り、Aurora 0または Amazon RDS のリーダーエンドポイントの使用をサポートしていませんOFF。Amazon RDS と Aurora をターゲットとして使用する方法の詳細については、次を参照してください。

のターゲットとして MySQL 互換データベースを使用する場合のエンドポイント設定 AWS DMS

エンドポイントの設定を使用して、追加の接続属性の使用する場合と同様に、ターゲットの MySQL 互換データベースを設定できます。 AWS DMS コンソールを使用するか、--my-sql-settings '{"EndpointSetting": "value", ...}'JSON 構文で の create-endpoint コマンドを使用してAWS CLI、ターゲットエンドポイントを作成するときに設定を指定します。

次の表は、MySQL をターゲットとして使用できるエンドポイント設定を説明しています。

名前 説明

TargetDbType

ソーステーブルを移行するターゲット上の場所 (1 つのデータベースか複数のデータベースか) を指定します。を指定する場合はSPECIFIC_DATABASE、 AWS CLI または を使用するときに、データベース名を指定する必要があります AWS Management Console。

デフォルト値: MULTIPLE_DATABASES

有効な値: {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

例: --my-sql-settings '{"TargetDbType": "MULTIPLE_DATABASES"}'

ParallelLoadThreads

データを MySQL 互換ターゲットデータベースにロードする際のパフォーマンスが向上します。データを MySQL 互換ターゲットデータベースにロードする際に使用するスレッドの数を指定します。スレッドごとに別個の接続が必要になるため、スレッド数を大きく設定するとデータベースのパフォーマンスに悪影響を生じる場合があります。

デフォルト値: 1

有効な値: 1〜5

例: --my-sql-settings '{"ParallelLoadThreads": 1}'

AfterConnectScript

AWS DMS がエンドポイントに接続した直後に実行するスクリプトを指定します。

例えば、MySQL 互換のターゲットが受信するステートメントをデータベースのデフォルトのコンパイル済み文字セットである latin1 文字セットに変換するように指定できる。このパラメータでは通常、UTF8 クライアントからの変換時にパフォーマンスが向上します。

例: --my-sql-settings '{"AfterConnectScript": "SET character_set_connection='latin1'"}'

MaxFileSize

MySQL 互換データベースへのデータ転送に使用される .csv ファイルの最大サイズ (KB 単位) を指定します。

デフォルト値: 32768 KB (32 MB)

有効な値: 1~1,048,576

--my-sql-settings '{"MaxFileSize": 512}'

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

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

名前 説明

Initstmt=SET FOREIGN_KEY_CHECKS=0;

外部キーチェックを無効にします。

例: --extra-connection-attributes "Initstmt=SET FOREIGN_KEY_CHECKS=0;"

Initstmt=SET time_zone

ターゲット MySQL 互換データベースのタイムゾーンを指定します。

デフォルト値: UTC

有効値:ターゲットの MySQL データベースで使用可能なタイムゾーン名。

例: --extra-connection-attributes "Initstmt=SET time_zone=US/Pacific;"

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

MySQL のターゲットデータ型

次の表は、 の使用時にサポートされる MySQL データベースターゲットデータ型 AWS DMS と、 AWS DMS データ型からのデフォルトのマッピングを示しています。

AWS DMS データ型の詳細については、「」を参照してくださいAWS Database Migration Service のデータ型

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 を完全にサポート) を使用します。