View a markdown version of this page

のターゲットとしての 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 読み取り/書き込み権限を持つユーザーアカウントを に提供します。必要なアクセス権限を作成するには、以下のコマンドを実行します。

    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

Aurora MySQL 8.4 ターゲットに関する考慮事項

Aurora MySQL 8.4 では、 AWS DMS ターゲットエンドポイントの接続に影響を与える可能性のあるセキュリティ変更が導入されています。Aurora MySQL ターゲットをバージョン 8.4 にアップグレードする前に、以下を確認してください。

TLS の適用

Aurora MySQL 8.4 ONはデフォルトで を require_secure_transportに設定します。つまり、すべての接続で TLS を使用する必要があります。 AWS DMS ターゲットエンドポイントが Aurora MySQL 8.4 に接続し、SSL モードが none に設定されている場合、接続は拒否されます。エンドポイント SSL モードが none に設定されている場合、 というエラーが表示されますMySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON。エンドポイントの SSL モードを verify-ca または verify-full に設定します。どちらのモードにも CA 証明書が必要です。または、Aurora クラスターパラメータグループOFFrequire_secure_transportを に設定して、暗号化されていない接続を許可します。

注記

Aurora MySQL 8.4 は、TLS 1.2 用の GCM 暗号スイートのみをサポートしています。すべての CBC モード暗号が削除されました。 は MySQL および Aurora MySQL エンドポイントに TLS 1.2 AWS DMS を使用し、サポートされている GCM 暗号を自動的にネゴシエートします。カスタム暗号設定がある場合は、サポートされている暗号のいずれかが含まれていることを確認します。ECDHE-RSA-AES128-GCM-SHA256、ECDHE-RSA-AES256-GCM-SHA384、ECDHE-ECDSA-AES128-GCM-SHA256、または ECDHE-ECDSA-AES256-GCM-SHA384。

注記

AWS DMS は MySQL エンドポイントの TLS 1.3 をサポートしていません。Aurora MySQL 8.4 は引き続き TLS 1.2 をサポートしているため、これは Aurora MySQL 8.4 への接続には影響しません。

認証 (Aurora MySQL および RDS for MySQL 8.4)

Aurora MySQL 8.4 はauthentication_policydefault_authentication_pluginパラメータを に置き換えます。デフォルトは です*:caching_sha2_password。既存のデータベースユーザーは、アップグレード後も現在の認証プラグインを保持します。アップグレード後に新しい AWS DMS エンドポイントユーザーを作成する場合、クラスターパラメータグループ*:mysql_native_passwordauthentication_policyを に設定しない限り、caching_sha2_passwordデフォルトで が使用されます。

マスターユーザーのパスワードのリセット

Aurora MySQL 8.4 にアップグレードした後、、CLI AWS マネジメントコンソール、または Secrets Manager ローテーションを使用してマスターユーザーのパスワードをリセットすると、マスターユーザーの認証プラグインは authentication_policyパラメータで定義されたデフォルトに設定されます。がデフォルト値 (*:caching_sha2_password) にauthentication_policy設定されている場合、マスターユーザーの認証プラグインは、次のパスワードリセットcaching_sha2_password時に から mysql_native_passwordに変わります。

AWS DMS ターゲットエンドポイントがマスターユーザーアカウントを使用している場合は、パスワードのリセット後に接続を確認します。認証プラグインの変更を回避するには、次のいずれかを実行します。

  • パスワードをリセットする前にクラスターパラメータグループ*:mysql_native_passwordで を authentication_policyに設定する、または

  • 明示的に指定された認証プラグインを使用して専用 AWS DMS エンドポイントユーザーを作成します (推奨)。例: CREATE USER 'dms_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Aurora MySQL 8.4 のセキュリティ変更の詳細については、「Amazon Aurora ユーザーガイド」の「Amazon Aurora MySQL によるセキュリティ」および「Amazon Aurora と Secrets Manager によるパスワード管理」を参照してください。 認証プラグインの既知の問題の詳細については、「Amazon RDS ユーザーガイド」の「認証プラグイン」を参照してください。

のターゲットとして 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パラメータが 0または に設定されていない限り、Aurora または Amazon RDS のリーダーエンドポイントの使用をサポートしていませんOFF。Amazon RDS と Aurora をターゲットとして使用する方法の詳細については、次を参照してください。

  • TIME のデータ型をレプリケートする場合、時間値の小数部分はレプリケートされません。

  • 追加接続属性 loadUsingCSV=false を使用して TIME のデータ型をレプリケートする場合、時間値は [00:00:00, 23:59:59] の範囲に制限されます。

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

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

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

名前 説明

ConnectionTimeout

この追加の接続属性 (ECA) を使用して、MySQL インスタンスのエンドポイント接続のタイムアウトを秒単位で設定する。デフォルト値は 10 秒です。ECA の例: ConnectionTimeout=30

TargetDbType

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

デフォルト値: 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 を完全にサポート) を使用します。