AWS DMS での同種データ移行のソースとしての MySQL 互換データベースの使用 - AWS Database Migration Service

AWS DMS での同種データ移行のソースとしての MySQL 互換データベースの使用

AWS DMS での 同種データ移行 のソースとして、MySQL 互換のデータベース (MySQL または MariaDB) を使用できます。この場合、ソースデータプロバイダーは、オンプレミス、Amazon EC2、RDS for MySQL または MariaDB データベースにすることができます。

同種データ移行を実行するには、レプリケーションのすべてのソーステーブルとセカンダリオブジェクトに対する SELECT 権限を持つデータベースユーザーを使用する必要があります。変更データキャプチャ (CDC) タスクの場合、REPLICATION CLIENT (10.5.2 以降の MariaDBバージョンの場合は BINLOG MONITOR) と REPLICATION SLAVE 権限もユーザーに必要です。フルロードデータ移行の場合、この 2 つの権限は必要ありません。

次のスクリプトを使用して、MySQL データベースでの必要な権限を持つデータベースユーザーを作成します。AWS に移行するすべてのデータベースに対して GRANT クエリを実行します。

CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'your_user'@'%'; GRANT SELECT, RELOAD, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'your_user'@'%'; GRANT BACKUP_ADMIN ON *.* TO 'your_user'@'%';

上記の例の各 user input placeholder は独自の情報に置き換えます。ソース MySQL データベースのバージョンが 8.0 以前の場合、GRANT BACKUP_ADMIN コマンドはスキップできます。

次のスクリプトを使用して、MariaDB データベースでの必要な権限を持つデータベースユーザーを作成します。AWS に移行するすべてのデータベースに対して GRANT クエリを実行します。

CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password'; GRANT SELECT, RELOAD, LOCK TABLES, REPLICATION SLAVE, BINLOG MONITOR, SHOW VIEW ON *.* TO 'your_user'@'%';

上記の例の各 user input placeholder は独自の情報に置き換えます。

次のセクションでは、セルフマネージド型の MySQL データベースと AWS が管理する MySQL データベースの設定の具体的な前提条件について説明します。

同種データ移行のソースとしてのセルフマネージド型の MySQL 互換データベースの使用

このセクションでは、オンプレミスまたは Amazon EC2 インスタンスでホストされる MySQL 互換データベースの設定方法について説明します。

ソースの MySQL データベースまたは MariaDB データベースのバージョンを確認します。「DMS 同種データ移行のソース」で説明されるとおり、使用している AWS DMS がソースの MySQL データベースまたは MariaDB データベースのバージョンをサポートしているかを確認します。

CDC を使用するには、バイナリログを有効にしてください。バイナリログを有効にするには、MySQL データベースまたは MariaDB データベースの my.ini (Windows) または my.cnf (UNIX) ファイルで次のパラメータを設定します。

パラメータ

server-id

このパラメータは、1 以上の値に設定します。

log-bin

パスをバイナリログファイル (log-bin=E:\MySql_Logs\BinLog) に設定します。ファイル拡張子を含めないでください。

binlog_format

このパラメータは ROW に設定します。binlog_formatSTATEMENT に設定されているときは場合によっては、ターゲットにデータレプリケーション時に矛盾が生じる可能性があるため、レプリケーション中にこの設定をお勧めします。データベースエンジンが自動的に STATEMENT ベースのログに切り替わるため、binlog_formatMIXED に設定されていると、ターゲットのデータの書き込みで同様の不整合が発生する。

expire_logs_days

このパラメータは、1 以上の値に設定します。ディスク容量の使いすぎを防ぐため、デフォルト値の 0 は使用しないことをお勧めします。

binlog_checksum

このパラメータは NONE に設定します。

binlog_row_image

このパラメータは FULL に設定します。

log_slave_updates

MySQL または MariaDB のレプリカをソースとして使用している場合、このパラメータは TRUE と設定する。

AWS DMS での同種データ移行のソースとしての AWS が管理する MySQL 互換データベースの使用

このセクションでは、Amazon RDS for MySQL データベースインスタンスと Amazon RDS for MariaDB データベースインスタンスを設定する方法について説明します。

AWS MySQL データベースまたは MariaDB データベースを AWS DMS での同種データ移行のソースとして使用する場合は、CDC の次の前提条件を満たしていることを確認します。

  • RDS for MySQL と RDS for MariaDB のバイナリログを有効にするには、インスタンスレベルで自動バックアップを有効にします。Aurora MySQL クラスターのバイナリログを有効にするには、パラメータグループで変数 binlog_format を変更します。Aurora MySQL クラスターの自動バックアップについては有効にする必要はありません。

    次に、binlog_format パラメータを ROW に設定します。

    自動バックアップの設定の詳細については、「Amazon RDS ユーザーガイド」の「自動バックアップの有効化」を参照してください。

    Amazon RDS for MySQL または MariaDB データベースのバイナリログ設定の詳細については、「Amazon RDS ユーザーガイド」の「バイナリログ形式の設定」を参照してください。

    Aurora MySQL クラスターのバイナリログ設定の詳細については、「Amazon Aurora MySQL クラスターのバイナリログを有効にする方法」をご参照ください。

  • バイナリログが AWS DMS で利用できることを確認します。AWS が管理する MySQL と MariaDB データベースでは、可能な限り迅速にバイナリログは消去されるため、ログが利用できる保存期間を長く設定する必要があります。たとえば、ログ保持を 24 時間に伸ばすには、次のコマンドを実行します。

    call mysql.rds_set_configuration('binlog retention hours', 24);
  • binlog_row_image パラメータを Full に設定します。

  • binlog_checksum パラメータを NONE に設定します。

  • Amazon RDS for MySQL または MariaDB レプリカをソースとして使用する場合は、リードレプリカでバックアップを有効にして、log_slave_updates パラメータが TRUE と設定されていることを確認します。

MySQL 互換データベースを同種データ移行のソースとして使用する場合の制限

MySQL 互換データベースを同種データ移行のソースとして使用する場合、次の制限が適用されます。

  • シーケンスなどの MariaDB オブジェクトは、同種移行タスクではサポートされていません。

  • MariaDB から Amazon RDS for MySQL または Aurora MySQL への移行は、互換性のないオブジェクトの差異により失敗する可能性があります。

  • データソースへの接続に使用するユーザー名には以下の制限があります。

    • 2~64 文字を使用できます。

    • スペースは使用できません。

    • 文字として a~z、A~Z、0~9、アンダースコア (_) を使用できます。

    • a~z または A~Z で始める必要があります。

  • データソースへの接続に使用するパスワードには以下の制限があります。

    • 1~128 文字を使用できます。

    • 一重引用符 (')、二重引用符 (")、セミコロン (;)、スペースのいずれも使用できません。

  • AWS DMS 同種データ移行では、ソースオブジェクトが暗号化されている場合でも、ターゲット Amazon RDS インスタンスに暗号化されていない MySQL および MariaDB オブジェクトが作成されます。RDS for MySQL は、暗号化されたオブジェクトに必要な MySQL keyring_aws AWS キーリングプラグインをサポートしていません。Amazon RDS ユーザーガイドの「MySQL キーリングプラグインがサポートされていない」ドキュメントを参照してください。

  • AWS DMS は、グローバルトランザクション識別子 (GTID) がソースデータに含まれている場合でも、この識別子をデータレプリケーションに使用しません。