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

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

MySQL 互換データベースの AWS DMS のソースとしての使用

AWS Database Migration Service を使用すると、任意の MySQL 互換データベース (MySQL、MariaDB、または Amazon Aurora MySQL) からデータを移行できます。MySQL バージョン 5.5、5.6、5.7、8.0 MariaDBバージョン10.0.24~10.0.28、10.1、10.2、10.3~10.3.13、および Amazon Aurora MySQLはオンプレミスでサポートされています。

注記

ソースとしての MySQL 8.0 のサポートは、 AWS DMS バージョン3.4.0以降(トランザクション ペイロードが圧縮されている場合を除く)。

SSL を使用して、MySQL 互換のエンドポイントとレプリケーションインスタンスとの接続を暗号化できます。MySQL 互換のエンドポイントで SSL を使用する方法の詳細については、「AWS Database Migration Service での SSL の使用」を参照してください。

以降のセクションでは、「セルフマネージド型」という用語は、オンプレミスまたは Amazon EC2 にインストールされているあらゆるデータベースに当てはまります。「Amazon が管理する」という用語は、Amazon RDS、Amazon Aurora、または Amazon S3 上のあらゆるデータベースに当てはまります。

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

AWS DMS を使用して MySQL から MySQL へ移行します。

MySQL 以外のデータベースエンジンから MySQL データベースに移行する異種移行では、ほとんどの場合 AWS DMS が最適な移行ツールです。一方、MySQL データベースから MySQL データベースに移行する同種移行では、ネイティブツールがより効果的な場合があります。

以下の条件では、mysqldump などのネイティブ MySQL データベース移行ツールを使用することをお勧めします。

  • ソース MySQL データベースからターゲット MySQL データベースに移行する同種移行である。

  • データベース全体を移行する。

  • ネイティブツールで最小のダウンタイムでデータを移行できる。

既存の MySQL または MariaDB データベースから Amazon RDS MySQL または MariaDB DB インスタンスに、データをインポートすることもできます。これは、mysqldump を使用してデータベースをコピーして、それを Amazon RDS MySQL または MariaDB DB インスタンスに直接パイピング処理することで、行います。mysqldump コマンドラインユーティリティは、データのバックアップや、別の MySQL または MariaDB サーバーへの転送のためによく使用されます。このユーティリティは MySQL および MariaDB クライアントソフトウェアに含まれています。

MySQL データベースを Amazon RDS for MySQL や MySQL と互換性がある Amazon Aurora にインポートする詳しい方法については、「MySQL DB インスタンスへのデータのインポート」と「MySQL や MariaDB DB から Amazon RDS MySQL や MariaDB DB インスタンスへのデータのインポート」を参照してください。

AWS DMS を使用した MySQL から MySQL へのデータの移行

AWS DMS は、たとえば、オンプレミスのソース MySQL データベースから MySQL または Amazon RDS Aurora MySQL インスタンスのターゲットにデータを移行できます。通常、MySQL のコアまたは基本のデータ型は正常に移行されます。

ソースのデータベースではサポートされていても、ターゲットではサポートされていないデータタイプは、正常に移行されないことがあります。データタイプが不明な場合、AWS DMS は一部のデータタイプを文字列としてストリームします。XML などの一部のデータ型は、小さなファイルの場合は正常に移行されますが、大きなドキュメントの場合は失敗することがあります。

次の表は、ソース MySQL のデータ型と、これらのデータ型が正常に移行されるかどうかを示しています。

データ型 正常に移行 部分的に移行 移行されない コメント
INT X
BIGINT。 X
MEDIUMINT X
TINYINT, X
DECIMAL(p,s) X
BINARY X
BIT (M) X
BLOB X
LONGBLOB X
MEDIUMBLOB X
TINYBLOB X
DATE X
DATETIME X
TIME X
TIMESTAMP X
YEAR X
DOUBLE X
FLOAT X
VARCHAR(N) X
VARBINARY(N) X
CHAR(N) X
TEXT X
LONGTEXT X
MEDIUMTEXT X
TINYTEXT X
JSON: X AWS DMS バージョン 3.3.1 以降でサポート
GEOMETRY X
POINT X
LINESTRING X
POLYGON X
MULTILINESTRING X
MULTIPOLYGON X
GEOMETRYCOLLECTION X
ENUM X
SET X

MySQL 互換データベースの AWS DMS のソースとしての使用

MySQL データベースを AWS DMS のソースとして使用し始める前に、次の前提条件を満たしていることを確認してください。これらの前提条件は、セルフマネージド型または Amazon が管理するソースのいずれかに適用されます。

レプリケーション管理者ロールを持つ AWS DMS のアカウントを保有している必要があります。ロールには、次の権限が必要です。

  • REPLICATION CLIENT – この権限は、変更データキャプチャ (CDC) タスクにのみ必要です。つまり、フルロードのみのタスクにはこの権限は必要ありません。

  • REPLICATION SLAVE – この権限は、変更データキャプチャ (CDC) タスクにのみ必要です。つまり、フルロードのみのタスクにはこの権限は必要ありません。

  • SUPER – この権限は、バージョン 5.6.6 より前の MySQL でのみ必要です。

AWS DMS ユーザーには、レプリケーション対象に指定されたソーステーブルに対する SELECT 権限も必要です。

セルフマネージド型 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

変更データキャプチャ (CDC) を使用する予定の場合、バイナリロギングを有効にする必要があります。バイナリロギングを有効にするには、MySQL の my.ini (Windows) または my.cnf (UNIX) ファイルで以下のパラメータを設定する必要があります。

パラメータ

server_id

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

log-bin

バイナリ ログ ファイルへのパスを設定します。たとえば、 log-bin=E:\MySql_Logs\BinLog。 ファイル拡張子を含めないでください。

binlog_format

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

expire_logs_days

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

binlog_checksum

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

binlog_row_image

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

log_slave_updates

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

ソースで NDB (クラスター化) データベースエンジンを使用している場合、そのストレージエンジンを使用するテーブルで CDC を有効にするには以下のパラメータを設定する必要があります。これらの変更を MySQL の my.ini (Windows) または my.cnf (UNIX) ファイルに追加します。

パラメータ

ndb_log_bin

このパラメータをに設定 ON。 この値によって、クラスタ化されたテーブルの変更がバイナリ ログにログされます。

ndb_log_update_as_write

このパラメータをに設定 OFF。 この値は、バイナリ ログに UPDATE ステートメントを INSERT ステートメントとして書き込まないようにします。

ndb_log_updated_only

このパラメータをに設定 OFF。 この値により、バイナリログには、変更された列だけでなく行全体が含まれます。

Amazon が管理する MySQL 互換データベースを AWS DMS

次の Amazon が管理する MySQL 互換データベースを AWS DMS のソースとして使用できます。

  • MySQL Community Edition

  • MariaDB Community Edition

  • MySQL と互換性がある Amazon Aurora

Amazon が管理する MySQL 互換データベースを AWS DMS のソースとして使用する場合は、次の前提条件を満たしていることを確認してください。

  • 自動バックアップを有効化します。自動バックアップの設定の詳細については、「 自動バックアップの操作Amazon RDS ユーザーガイド.

  • 変更データキャプチャ (CDC) を使用する予定の場合、バイナリロギングを有効にします。のバイナリ ログの設定の詳細については、 Amazon RDS MySQL データベース、参照 自動バックアップの操作Amazon RDS ユーザーガイド.

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

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

  • 設定 binlog_checksum パラメータから "NONE"。 でのパラメータ設定についての詳細は、 Amazon RDS MySQL、参照 自動バックアップの操作Amazon RDS ユーザーガイド.

  • Amazon RDS MySQL または Amazon RDS MariaDB リードレプリカをソースとして使用している場合、リードレプリカでバックアップを有効にします。

MySQL データベースを AWS DMS のソースとして使用する場合の制限

MySQL データベースをソースとして使用する場合は、次の点を考慮してください。

  • 変更データキャプチャ (CDC) は、Amazon RDS MySQL 5.5 以下ではサポートされていません。Amazon RDS MySQL の場合、CDC を有効にするには、バージョン 5.6、5.7 を使用する必要があります。CDC は、セルフマネージド MySQL 5.5 ソースでサポートされています。

  • データ定義言語 (DDL) ステートメントの DROP TABLE および RENAME TABLE はサポートされません。さらに、パーティション分割されたテーブルのすべての DDL ステートメントはサポートされません。

  • ソースのパーティション分割されたテーブルで、[ターゲットテーブル作成モード] を [ターゲット上のテーブルを削除] に設定すると、AWS DMS は MySQL ターゲットにパーティションがないシンプルなテーブルを作成します。パーティション分割されたテーブルをターゲットのパーティション分割されたテーブルに移行するには、ターゲット MySQL データベースでパーティション分割されたテーブルを事前に作成します。

  • ALTER TABLEtable_name ADD COLUMN column_name ステートメントを使用して、テーブルの先頭 (FIRST) または中間 (AFTER) に列を追加することはできません。列は常にテーブルの末尾に追加されます。

  • テーブル名に大文字と小文字が含まれていて、大文字と小文字が区別されるオペレーティングシステムにソースエンジンがホストされている場合、CDC はサポートされません。たとえば、Windows や HFS+ を使用する OS X などです。

  • 列の AUTO_INCREMENT 属性は、ターゲットデータベース列に移行されません。

  • バイナリログが標準のブロックストレージに保存されている場合の変更のキャプチャはサポートされていません。たとえば、バイナリログが Amazon S3 に保存されていると、CDC は機能しません。

  • AWS DMS は、デフォルトで InnoDB ストレージエンジンを使用してターゲットテーブルを作成します。InnoDB 以外のストレージエンジンを使用する必要がある場合、テーブルを手動で作成し、何もしないモードを使用してそのテーブルに移行する必要があります。

  • Aurora MySQL リードレプリカを AWS DMS のソースとして使用することはできません。

  • 全ロード時に MySQL 互換ソースが停止している場合、AWS DMS タスクはエラーで停止しません。タスクは正常に終了しますが、ターゲットとソースが同期しない可能性があります。この場合、タスクを再開するか、影響を受けたテーブルを再ロードしてください。

  • 列の値の一部で作成されたインデックスは移行されません。たとえば、インデックス CREATE INDEX first_ten_chars ON customer (name(10)) はターゲットに作成されません。

  • 場合によっては、タスクが LOB をレプリケートしないように設定されています (「SupportLobs」がタスク設定で false になっているか、タスクコンソールでLOB 列を含めないがオンになっている)。この場合、AWS DMS は MEDIUMBLOB、LONGBLOB、MEDIUMTEXT、および LONGTEXT 列をターゲットに移行しません。

    BLOB、TINYBLOB、TEXT、および TINYTEXT 列は影響を受けず、ターゲットに移行されます。

  • 一時データテーブルまたはシステムでバージョン管理されたテーブルは、MariaDB ソースおよびターゲットデータベースではサポートされていません。

AWS DMS のソースとして MySQL を使用する場合の追加の接続属性

追加の接続属性を使用して MySQL ソースを設定できます。これらの設定は、ソースエンドポイントを作成するときに指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります (例: oneSetting;thenAnother)。

次の表に、Amazon RDS MySQL を AWS DMS のソースとして使用するときに使用できる追加の接続属性を示します。

Name 説明:
eventsPollInterval

データベースがアイドル状態のとき、バイナリログで新しい変更/イベントをチェックする頻度を指定します。

デフォルト値 5*

有効な値 1–60歳

例: eventsPollInterval=5;

この例では、AWS DMS はバイナリログの変更を 5 秒ごと確認します。

serverTimezone

ソース MySQL データベースのタイムゾーンを指定します。

例: serverTimezone=US/Pacific;

注意 タイムゾーンを一重引用符で囲まないでください。

afterConnectScript

AWS DMS がエンドポイントに接続した直後に実行するスクリプトを指定します。移行タスクは、SQL ステートメントが成功するか失敗するかにかかわらず、引き続き実行されます。

有効な値 1 つ以上の有効な SQL ステートメントをセミコロンで設定します。

例: afterConnectScript=ALTER SESSION SET CURRENT_SCHEMA = system;

CleanSrcMetadataOnMismatch

不一致が発生すると、レプリケーションインスタンスのテーブルメタデータ情報をクリーンアップして再作成します。たとえば、テーブルの DDL を変更すると、レプリケーションインスタンスにキャッシュされているテーブルに関する情報が変更される場合があります。Boolean

デフォルト値: false

例: CleanSrcMetadataOnMismatch=false;

MySQL のソースデータ型

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

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

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

MySQL のデータ型

AWS DMS データ型

INT

INT4

MEDIUMINT

INT4

BIGINT。

INT8

TINYINT,

INT1

DECIMAL(10)

NUMERIC (10,0)

BINARY

BYTES(1)

BIT

BOOLEAN

BIT(64)

BYTES(8)

BLOB

BYTES(66535)

LONGBLOB

BLOB

MEDIUMBLOB

BLOB

TINYBLOB

BYTES(255)

DATE

DATE

DATETIME

DATETIME

TIME

STRING

TIMESTAMP

DATETIME

YEAR

INT2

DOUBLE

REAL8

FLOAT

REAL(DOUBLE)

サポートされる FLOAT の範囲は、-1.79E+308 ~ -2.23E-308、0 および 2.23E-308 ~ 1.79E+308 です。

FLOAT 値がこの範囲に収まらない場合、FLOAT データ型を STRING データが型にマッピングします。

VARCHAR(45)

WSTRING (45)

VARCHAR(2000)

WSTRING (2000)

VARCHAR(4000)

WSTRING (4000)

VARBINARY (4000)

BYTES (4000)

VARBINARY (2000)

BYTES (2000)

CHAR

WSTRING

TEXT

WSTRING (65535)

JSON:

NCLOB

LONGTEXT

NCLOB

MEDIUMTEXT

NCLOB

TINYTEXT

WSTRING (255)

GEOMETRY

BLOB

POINT

BLOB

LINESTRING

BLOB

POLYGON

BLOB

MULTIPOINT

BLOB

MULTILINESTRING

BLOB

MULTIPOLYGON

BLOB

GEOMETRYCOLLECTION

BLOB

注記
  • 値が「ゼロ」(つまり、0000-00-00) の DATETIME データ型と TIMESTAMP データ型が指定されている場合、レプリケーションタスクのターゲットデータベースにより DATETIME データ型と TIMESTAMP データ型で「ゼロ」値がサポートされていることを確認してください。サポートされていない場合、これらの値はターゲットで NULL として記録されます。

  • AWS DMS は、バージョン 3.3.1 以降の JSON データ型をサポートしています。

以下の MySQL データ型は全ロードでのみサポートされています。

MySQL のデータ型

AWS DMS データ型

ENUM

STRING

SET

STRING