MySQL の評価 - AWS Database Migration Service
バイナリログトランザクション圧縮が無効になっているかどうかを検証するDMS ユーザーにソースデータベースの REPLICATION CLIENT および REPLICATION SLAVE アクセス許可があるかどうかを検証するDMS ユーザーにソースデータベーステーブルの SELECT アクセス許可があるかどうかを検証するserver_id がソースデータベースで 1 以上に設定されているかどうかを検証するDMS ユーザーにターゲットとしての MySQL データベースに必要なアクセス許可があるかどうかを検証するソースデータベースにバイナリログの自動削除が設定されているかどうかを検証するBatchApplyEnabled が true に設定されている場合、制限付き LOB モードのみを使用していることを検証するテーブルが Innodb以外のストレージエンジンを使用しているかどうかを検証する移行に使用されるテーブルで自動増分が有効になっているかどうかを検証するデータベースのバイナリログイメージが DMS CDC をサポートするように FULL に設定されているかどうかを検証するソースデータベースが MySQL Read-Replica であるかどうかを検証するテーブルにパーティションがあるかどうかを検証し、フルロードタスク設定の target_table_prep_mode を推奨するDMS がデータベースバージョンをサポートしているかどうかを検証するターゲットデータベースで local_infile が 1 に設定されているかどうかを検証します。ターゲットデータベースに外部キーを持つテーブルがあるかどうかを検証するタスクの範囲にあるソーステーブルにカスケード制約があるかどうかを検証するタイムアウト値が MySQL ソースまたはターゲットに適しているかどうかを検証するmax_statement_time データベースパラメータの検証プライマリキーまたは一意のインデックスがバッチ適用のターゲットに存在するかどうかを検証するプライマリキーと一意のインデックスの両方がバッチ適用のターゲットに存在するかどうかを検証するフルロード中にターゲットデータベースでセカンダリインデックスが有効になっているかどうかを検証するDMS 検証が有効になっている場合にテーブルにプライマリキーまたは一意のインデックスがあるかどうかを検証するMaxFullLoadSubTasks 設定の使用に関する推奨事項数字ランダム化の変換ルールを確認する数字マスクの変換ルールを確認するハッシュマスクの変換ルールを確認するデータ検証タスク設定とデータマスキングの数字ランダム化が同時に有効になっていないことを確認するデータ検証タスク設定とデータマスキングのハッシュマスクが同時に有効になっていないことを確認するデータ検証タスク設定とデータマスキングの数字マスクが同時に有効になっていないことを確認するAmazon Aurora MySQL ソースインスタンスがリードレプリカでないかどうかを確認するバイナリログの保持時間が正しく設定されているかどうかを確認するソーステーブルに非表示の列がないかどうかを確認します。データベースのバイナリログ形式が DMS CDC をサポートするように ROW に設定されているかどうかを検証する

MySQL の評価

このセクションでは、MySQL、Aurora MySQL 互換エディション、または Aurora MySQL 互換エディションのサーバーレスソースエンドポイントを使用する移行タスクの個別の移行前評価について説明します。

トピック

バイナリログトランザクション圧縮が無効になっているかどうかを検証する

API キー: mysql-check-binlog-compression

この移行前評価では、バイナリログトランザクション圧縮が無効になっているかどうかを検証します。AWS DMS はバイナリログトランザクション圧縮をサポートしていません。

詳細については、「Limitations on using a MySQL database as a source for AWS DMS」を参照してください。

DMS ユーザーにソースデータベースの REPLICATION CLIENT および REPLICATION SLAVE アクセス許可があるかどうかを検証する

API キー: mysql-check-replication-privileges

この移行前評価では、DMS タスクの移行タイプが CDC またはフルロード + CDC の場合、ソースエンドポイント接続設定で指定された DMS ユーザーにソースデータベースの REPLICATION CLIENT および REPLICATION SLAVE のアクセス許可があるかどうかを検証します。

詳細については、「Using any MySQL-compatible database as a source for AWS DMS」を参照してください。

DMS ユーザーにソースデータベーステーブルの SELECT アクセス許可があるかどうかを検証する

API キー: mysql-check-select-privileges

この移行前評価では、ソースエンドポイント接続設定で指定された DMS ユーザーにソースデータベーステーブルの SELECT アクセス許可があるかどうかを検証します。

詳細については、「Using any MySQL-compatible database as a source for AWS DMS」を参照してください。

server_id がソースデータベースで 1 以上に設定されているかどうかを検証する

API キー: mysql-check-server-id

この移行前評価では、CDC 移行タイプのソースデータベースで server_id サーバー変数が 1 以上に設定されているかどうかを検証します。

AWS DMS のソースに関する詳細については、「Using a self-managed MySQL-compatible database as a source for AWS DMS」を参照してください。

DMS ユーザーにターゲットとしての MySQL データベースに必要なアクセス許可があるかどうかを検証する

API キー: mysql-check-target-privileges

この移行前評価では、ターゲットエンドポイント接続設定で指定された DMS ユーザーにターゲットとしての MySQL データベースに必要なアクセス許可があるかどうかを検証します。

MySQL ソースエンドポイントの前提条件に関する詳細については、「Using any MySQL-compatible database as a source for AWS DMS」を参照してください。

ソースデータベースにバイナリログの自動削除が設定されているかどうかを検証する

API キー: mysql-check-expire-logs-days

この移行前評価では、データベースがバイナリログを自動的に削除するように設定されているかどうかを検証します。移行中ディスク容量の使いすぎを防ぐには、EXPIRE_LOGS_DAYS または BINLOG_EXPIRE_LOGS_SECONDS グローバルシステム変数の値が 0 より大きい必要があります。

AWS DMS のソースに関する詳細については、「Using a self-managed MySQL-compatible database as a source for AWS DMS」を参照してください。

BatchApplyEnabled が true に設定されている場合、制限付き LOB モードのみを使用していることを検証する

API キー: mysql-batch-apply-lob-mode

この移行前評価では、DMS タスクに LOB 列が含まれているかどうかを検証します。LOB 列がタスクの範囲に含まれている場合、制限付き LOB モードのみと BatchApplyEnabled を共に使用する必要があります。

BatchApplyEnabled 設定に関する詳細については、「DMS バッチ適用機能を使用して CDC レプリケーションパフォーマンスを向上させるにはどうすればよいですか?」を参照してください。

テーブルが Innodb以外のストレージエンジンを使用しているかどうかを検証する

API キー: mysql-check-table-storage-engine

この移行前評価では、ソースの MySQL データベース内のテーブルで使用されるストレージエンジンが Innodb 以外のエンジンであるかどうかを検証します。DMS は、デフォルトで InnoDB ストレージエンジンを使用してターゲットテーブルを作成します。InnoDB 以外のストレージエンジンを使用する必要がある場合、手動でターゲットデータベースにテーブルを作成し、TRUNCATE_BEFORE_LOAD または DO_NOTHING をフルロードタスク設定として使用するように DMS タスクを設定する必要があります。フルロードタスクの設定の詳細については、「全ロードタスク設定」を参照してください。

注記

この移行前評価は、Aurora MySQL 互換エディションまたは Aurora MySQL 互換エディションサーバーレスでは使用できません。

MySQL エンドポイントの制限事項の詳細については、「MySQL データベースを AWS DMS のソースとして使用する場合の制限」を参照してください。

移行に使用されるテーブルで自動増分が有効になっているかどうかを検証する

API キー: mysql-check-auto-increment

この移行前評価では、タスクで使用されるソーステーブルで自動増分が有効になっているかどうかを検証します。列の AUTO_INCREMENT 属性は、ターゲットデータベースに移行されません。

MySQL エンドポイントの制限事項の詳細については、「MySQL データベースを AWS DMS のソースとして使用する場合の制限」を参照してください。MySQL での ID 列の処理については、「Handle IDENTITY columns in AWS DMS: Part 2」を参照してください。

データベースのバイナリログイメージが DMS CDC をサポートするように FULL に設定されているかどうかを検証する

API キー: mysql-check-binlog-image

この移行前評価では、ソースデータベースのバイナリログイメージが FULL に設定されているかどうかを確認します。MySQL では、binlog_row_image 変数が、ROW 形式を使用するときにバイナリログイベントが書き込まれる方法を決定します。DMS との互換性を確保し、CDC をサポートするには、binlog_row_image 変数を FULL に設定します。この設定により、DMS は十分な情報を受信して、移行中にターゲットデータベースの完全なデータ操作言語 (DML) を構築することができます。

バイナリログイメージを FULL に設定するには、以下の操作を行います。

  • Amazon RDS の場合、この値はデフォルトで FULL になります。

  • オンプレミスまたは Amazon EC2 でホストされるデータベースの場合、my.ini (Microsoft Windows) または my.cnf (UNIX) の binlog_row_image 値を設定します。

この評価は、フルロードと CDC の移行、CDC のみの移行の場合にのみ利用できます。この評価は、フルロードのみの移行では有効ではありません。

ソースデータベースが MySQL Read-Replica であるかどうかを検証する

API キー: mysql-check-database-role

この移行前評価では、ソースデータベースがリードレプリカかどうかを検証します。リードレプリカに接続されているときに DMS の CDC サポートを有効にするには、log_slave_updates パラメータを True に設定します。セルフマネージド型 MySQL データベースを使用する方法の詳細については、「セルフマネージド型 MySQL 互換データベースの AWS DMS のソースとしての使用」を参照してください。

log_slave_updates 値を True に設定するには、以下の操作を行います。

  • Amazon RDS の場合、データベースのパラメータグループを使用します。RDS データベースパラメータグループの使用に関する詳細については、「Amazon RDS ユーザーガイド」の「Working with parameter groups」を参照してください。

  • オンプレミスまたは Amazon EC2 でホストされるデータベースの場合、my.ini (Microsoft Windows) または my.cnf (UNIX) の log_slave_updates 値を設定します。

この評価は、フルロードと CDC の移行、CDC のみの移行の場合にのみ利用できます。この評価は、フルロードのみの移行では有効ではありません。

テーブルにパーティションがあるかどうかを検証し、フルロードタスク設定の target_table_prep_mode を推奨する

API キー: mysql-check-table-partition

この移行前評価では、ソースデータベースにパーティションを持つテーブルがあるかどうかを確認します。DMS は MySQL ターゲットにパーティションのないテーブルを作成します。パーティションテーブルをターゲットのパーティションテーブルに移行するには、以下を実行する必要があります。

  • ターゲット MySQL データベースにパーティションテーブルを事前に作成します。

  • TRUNCATE_BEFORE_LOAD または DO_NOTHING をフルロードタスク設定として使用するように DMS タスクを設定します。

MySQL エンドポイントの制限事項の詳細については、「MySQL データベースを AWS DMS のソースとして使用する場合の制限」を参照してください。

DMS がデータベースバージョンをサポートしているかどうかを検証する

API キー: mysql-check-supported-version

この移行前評価では、ソースデータベースバージョンが DMS と互換性があるかどうかを検証します。CDC は、Amazon RDS MySQL バージョン 5.5 以前、または 8.0.x 以降の MySQL バージョンではサポートされていません。CDC は MySQL バージョン 5.6、5.7、8.0 でのみサポートされています。サポートされている MySQL のバージョンについては、「データ移行のソースエンドポイント」を参照してください。

ターゲットデータベースで local_infile が 1 に設定されているかどうかを検証します。

API キー: mysql-check-target-localinfile-set

この移行前評価では、ターゲットデータベースの local_infile パラメータが 1 に設定されているかどうかを確認します。DMS では、ターゲットデータベースへのフルロード中に「local_infile」パラメータを 1 に設定する必要があります。詳細については、「AWS DMS を使用して MySQL から MySQL へ移行します。」を参照してください。

この評価は、フルロードまたはフルロードおよび CDC タスクに対してのみ有効です。

ターゲットデータベースに外部キーを持つテーブルがあるかどうかを検証する

API キー: mysql-check-fk-target

この移行前評価では、MySQL データベースに移行するフルロードまたはフルおよび CDC タスクに外部キーを持つテーブルがあるかどうかを確認します。DMS のデフォルト設定では、テーブルをアルファベット順にロードします。親テーブルと子テーブルを同時にロードできない可能性があるため、外部キーと参照整合性制約があるテーブルはロードに失敗する可能性があります。

DMS の参照整合性の詳細については、「AWS DMS 移行のパフォーマンスの向上」トピックの「Working with indexes, triggers, and referential integrity constraints」を参照してください。

タスクの範囲にあるソーステーブルにカスケード制約があるかどうかを検証する

API キー: mysql-check-cascade-constraints

この移行前評価では、MySQL ソーステーブルにカスケード制約があるかどうかを確認します。MySQL はこれらのイベントの変更をバイナリログに記録しないため、カスケード制約は DMS タスクによって移行またはレプリケートされません。AWS DMS はこれらの制約をサポートしていませんが、リレーショナルデータベースターゲットには回避策を使用できます。

カスケード制約やその他の制約のサポートについては、「Troubleshooting migration tasks in AWS DMS」トピックの「インデックス、外部キー、カスケード更新、または削除が移行されない」を参照してください。

タイムアウト値が MySQL ソースまたはターゲットに適しているかどうかを検証する

API キー: mysql-check-target-network-parameter

この移行前評価では、タスクの MySQL エンドポイントの net_read_timeoutnet_write_timeoutwait_timeout の設定が少なくとも 300 秒に設定されているかどうかを確認します。これは、移行中の切断を防止するために必要です。

詳細については、「ターゲット MySQL のインスタンスへの接続は、タスクの実行中に接続が切断されます」を参照してください。

max_statement_time データベースパラメータの検証

API キー: mysql-check-max-statement-time

MySQL ベースのソースの max_Statement_time ソースパラメータを確認します。10 億を超えるテーブルがある場合は、max_Statement_time 値を検証し、データ損失の可能性を回避するためにより大きな値に設定することを推奨します。

プライマリキーまたは一意のインデックスがバッチ適用のターゲットに存在するかどうかを検証する

API キー: mysql-check-batch-apply-target-pk-ui-absence

バッチ適用は、ターゲットテーブルでプライマリキーまたは一意のインデックスを持つテーブルでのみサポートされます。プライマリキーまたは一意のインデックスがないテーブルはバッチが失敗し、変更は一つずつ処理されます。このようなテーブルは独自のタスクに移動し、代わりにトランザクション適用モードを活用することをお勧めします。または、ターゲットテーブルに一意のキーを作成することができます。

詳細については、「Using a MySQL-compatible database as a target for AWS Database Migration Service」を参照してください。

プライマリキーと一意のインデックスの両方がバッチ適用のターゲットに存在するかどうかを検証する

API キー: mysql-check-batch-apply-target-pk-ui-simultaneously

バッチ適用は、ターゲットテーブルでプライマリキーまたは一意のインデックスを持つテーブルでのみサポートされます。プライマリキーまたは一意のインデックスが同時に存在するテーブルはバッチが失敗し、変更は一つずつ処理されます。このようなテーブルは独自のタスクに移動し、代わりにトランザクション適用モードを活用することをお勧めします。または、移行を実行している場合は、ターゲットテーブルの一意のキーまたはプライマリキーを削除してから、ターゲットテーブルを再構築することもできます。

詳細については、「Using a MySQL-compatible database as a target for AWS Database Migration Service」を参照してください。

フルロード中にターゲットデータベースでセカンダリインデックスが有効になっているかどうかを検証する

API キー: mysql-check-secondary-indexes

ターゲットデータベースのセカンダリインデックスを無効化または削除することを検討してください。セカンダリインデックスは、フルロード中の移行パフォーマンスに影響を与える可能性があります。キャッシュされた変更を適用する前にセカンダリインデックスを有効にすることをお勧めします。

詳細については、「AWS Database Migration Service のベストプラクティス」を参照してください。

DMS 検証が有効になっている場合にテーブルにプライマリキーまたは一意のインデックスがあるかどうかを検証する

API キー: mysql-check-pk-validity

データ検証では、テーブルにプライマリキーまたは一意のインデックスがなければなりません。

詳細については、「AWS DMS data validation」を参照してください。

MaxFullLoadSubTasks 設定の使用に関する推奨事項

API キー: mysql-tblnum-for-max-fullload-subtasks

この評価では、タスクに含まれるテーブルの数を確認し、フルロードプロセス中に最適なパフォーマンスが得られるように MaxFullLoadSubTasks パラメータの値を大きくすることを推奨します。デフォルトでは、AWS DMS は 8 つのテーブルを同時に移行します。MaxFullLoadSubTasks パラメータをより大きな値に変更すると、フルロードのパフォーマンスが向上します。

詳細については、「Full-load task settings」を参照してください。

数字ランダム化の変換ルールを確認する

API キー: mysql-datamasking-digits-randomize

この評価では、テーブルマッピングで使用される列が数字ランダム化の変換ルールに適合しているかどうかを検証します。さらに、変換対象として選択された列がプライマリキー、一意の制約、または外部キーの一部であるかどうかも確認します。これは、数字ランダム化の変換を適用しても一意性は保証されないためです。

数字マスクの変換ルールを確認する

API キー: mysql-datamasking-digits-mask

この評価では、テーブルマッピングで使用される列が数字マスクの変換ルールでサポートされていないかどうかを検証します。さらに、変換対象として選択された列がプライマリキー、一意の制約、または外部キーの一部であるかどうかも確認します。これは、一意性が保証されないために、このような列に数字マスクの変換を適用すると、DMS タスクが失敗する可能性があるからです。

ハッシュマスクの変換ルールを確認する

API キー: mysql-datamasking-hash-mask

この評価では、テーブルマッピングで使用される列がハッシュマスクの変換ルールでサポートされていないかどうかを検証します。また、ソース列の長さが 64 文字を超えているかどうかも確認します。ハッシュマスキングをサポートするには、ターゲット列の長さが 64 文字を超えていることが理想的です。さらに、変換対象として選択された列がプライマリキー、一意の制約、または外部キーの一部であるかどうかも確認します。これは、数字ランダム化の変換を適用しても一意性は保証されないためです。

データ検証タスク設定とデータマスキングの数字ランダム化が同時に有効になっていないことを確認する

API キー: all-to-all-validation-with-datamasking-digits-randomize

この移行前評価では、データ検証設定とデータマスキングの数字ランダム化が同時に有効になっていないことを確認します。これらの機能には互換性はありません。

データ検証タスク設定とデータマスキングのハッシュマスクが同時に有効になっていないことを確認する

API キー: all-to-all-validation-with-datamasking-hash-mask

この移行前評価では、データ検証設定とデータマスキングのハッシュマスクが同時に有効になっていないことを確認します。これらの機能には互換性はありません。

データ検証タスク設定とデータマスキングの数字マスクが同時に有効になっていないことを確認する

API キー: all-to-all-validation-with-digit-mask

この移行前評価では、データ検証設定とデータマスキングの数字マスクが同時に有効になっていないことを確認します。これらの機能には互換性はありません。

Amazon Aurora MySQL ソースインスタンスがリードレプリカでないかどうかを確認する

API キー: mysql-check-aurora-read-only

この移行前評価では、2 つの Amazon Aurora MySQL クラスター間での移行でソースエンドポイントがレプリカインスタンスではなく読み取り/書き込みインスタンスであることを確認します。

バイナリログの保持時間が正しく設定されているかどうかを確認する

API キー: mysql-check-binlog-retention-time

この移行前評価では、「バイナリログの保持時間」の値が 24 時間を超えているかどうかを検証します。

ソーステーブルに非表示の列がないかどうかを確認します。

API キー: mysql-check-invisible-columns

この移行前評価では、ソーステーブルに非表示の列がないかどうかを検証します。AWS DMS はソースデータベースの非表示の列からデータを移行しません。

データベースのバイナリログ形式が DMS CDC をサポートするように ROW に設定されているかどうかを検証する

API キー: mysql-check-binlog-format

この移行前評価では、ソースデータベースのバイナリログ形式が変更データキャプチャ (CDC) をサポートするように ROW に設定されているかどうかを検証します。バイナリログ形式を ROW に設定するには、以下の操作を行います。

  • Amazon RDS の場合、データベースのパラメータグループを使用します。詳細については、「Amazon Relational Database Service ユーザーガイド」の「シングル AZ データベースの MySQL バイナリログの設定」を参照してください。

  • オンプレミスまたは Amazon EC2 でホストされるデータベースの場合、my.ini (Microsoft Windows) または my.cnf (UNIX) の binlog_format 値を設定します。

この評価は、フルロードと CDC の移行、CDC のみの移行の場合にのみ利用できます。この評価は、フルロードのみの移行では有効ではありません。セルフホスト型 MySQL サーバーに関する詳細については、「Using a self-managed MySQL-compatible database as a source for AWS DMS」を参照してください。