翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MySQL 互換データベースの AWS DMS のソースとしての使用
AWS Database Migration Service を使用すると、任意の MySQL 互換データベース (MySQL、MariaDB、または )Amazon Aurora MySQL からデータを移行できます。
AWS DMSソースとしてサポートする MySQL のバージョンについては、を参照してくださいAWS DMS のソース。
SSL を使用して、MySQL 互換のエンドポイントとレプリケーションインスタンスとの接続を暗号化できます。MySQL 互換のエンドポイントで SSL を使用する方法の詳細については、「AWS Database Migration Service での SSL の使用」をご参照ください。
以下のセクションでは、「セルフ管理」という用語は、オンプレミスまたは Amazon EC2 にインストールされているデータベースが対象です。「AWS が管理する」という用語は、Amazon RDS、Amazon Aurora、Amazon S3 のデータベースが対象です。
MySQL 互換データベースと AWS DMS の使用方法の詳細については、以下のセクションをご参照ください。
トピック
AWS DMS を使用して MySQL から MySQL へ移行します。
MySQL 以外のデータベースエンジンから MySQL データベースに移行する異種移行では、ほとんどの場合 AWS DMS が最適な移行ツールです。ただし、MySQL データベースから MySQL データベースに移行する同種移行では、同種データ移行プロジェクトを使用することをお勧めします。同種データ移行では、ネイティブのデータベースツールを使用して、データ移行のパフォーマンスと精度を比較して向上させます。AWS DMS
MySQL 互換データベースの AWS DMS のソースとしての使用
MySQL データベースを AWS DMS のソースとして使用し始める前に、次の前提条件を満たしていることを確認してください。これらの前提条件は、セルフ管理または AWS が管理するソースのいずれかに適用されます。
レプリケーション管理者ロールを持つ AWS DMS のアカウントを保有している必要があります。ロールには、次の権限が必要です。
-
[REPLICATION CLIENT] (レプリケーション クライアント) – この権限は、CDC タスクにのみ必要です。 full-load-only つまり、タスクにはこの権限は必要ないということです。
-
[REPLICATION SLAVE] (レプリケーション スレーブ) – この権限は、CDC タスクにのみ必要です。つまり、 full-load-only タスクにはこの権限は必要ないということです。
-
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) ファイルで以下のパラメータを設定する必要があります。
パラメータ |
値 |
---|---|
|
このパラメータは、1 以上の値に設定します。 |
|
パスをバイナリログファイル ( |
|
このパラメータは |
|
このパラメータは、1 以上の値に設定します。ディスク容量の使いすぎを防ぐため、デフォルト値の 0 は使用しないことをお勧めします。 |
|
このパラメータは |
|
このパラメータは |
|
MySQL または MariaDB リードレプリカをソースとして使用している場合は、このパラメータを |
ソースで NDB (クラスター化) データベースエンジンを使用している場合、そのストレージエンジンを使用するテーブルで CDC を有効にするには以下のパラメータを設定する必要があります。これらの変更を MySQL の my.ini
(Windows) または my.cnf
(UNIX) ファイルに追加します。
パラメータ |
値 |
---|---|
|
このパラメータは |
|
このパラメータは |
|
このパラメータは |
AWS DMS のソースとして AWS が管理する MySQL 互換データベースの使用
次の AWS が管理する MySQL 互換データベースを AWS DMS のソースとして使用できます:
-
MySQL Community Edition
-
MariaDB Community Edition
-
Amazon Aurora MySQL 互換エディション
AWS が管理する MySQL 互換データベースを AWS DMSのソースとして使用する場合は、次の CDC に関する前提条件を満たしていることを確認してください:
-
RDS for MySQL および RDS for MariaDB のバイナリログを有効にするには、インスタンスレベルで自動バックアップを有効にします。Aurora MySQL クラスターのバイナリログを有効にするには、パラメータグループで変数
binlog_format
を変更します。自動バックアップの設定の詳細については、Amazon RDS ユーザーガイドの「自動バックアップの使用」をご参照ください。
Amazon RDS for MySQL データベースのバイナリログ設定の詳細については、Amazon RDS ユーザーガイドの「バイナリログ形式の設定」をご参照ください。
Aurora MySQL クラスターのバイナリログ設定の詳細については、「Amazon Aurora MySQL クラスターのバイナリログを有効にする方法
」をご参照ください。 -
CDC を使用する予定の場合は、バイナリログを有効にします。Amazon RDS for MySQL データベースのバイナリログの設定の詳細については、Amazon RDS ユーザーガイドの「バイナリログ形式の設定」をご参照ください。
-
バイナリログが AWS DMS で利用できることを確認します。AWS が管理する MySQL 互換データベースはできるだけ早くバイナリログを消去するため、ログが利用可能な状態で保持される時間を長くする必要があります。たとえば、ログ保持を 24 時間に伸ばすには、次のコマンドを実行します。
call mysql.rds_set_configuration('binlog retention hours', 24);
-
binlog_format
パラメータを"ROW"
に設定します。注記
MySQL または MariaDB では、
binlog_format
は動的パラメータなので、新しい値を有効にするために再起動する必要はありません。ただし、新しい値は新しいセッションにのみ適用されます。binlog_format
レプリケーションの目的でに切り替えても、値を変更する前にセッションが開始されていれば、MIXED
データベースは引き続きその形式を使用してバイナリログを作成できます。ROW
これにより、AWS DMSソースデータベースのすべての変更を正しくキャプチャできなくなる可能性があります。MariaDB または MySQLbinlog_format
データベースの設定を変更する場合は、必ずデータベースを再起動して既存のすべてのセッションを閉じるか、DML (データ操作言語) 操作を実行するアプリケーションを再起動してください。binlog_format
ROW
パラメータをに変更した後でデータベースのすべてのセッションを強制的に再起動すると、それ以降のすべてのソースデータベースの変更が正しい形式で書き込まれるため、それらの変更を正しくキャプチャできます。AWS DMS -
binlog_row_image
パラメータを"Full"
に設定します。 -
binlog_checksum
パラメータを"NONE"
に設定します。Amazon RDS MySQL でのパラメータの設定の詳細については、Amazon RDS ユーザーガイドの「自動バックアップの使用」をご参照ください。 -
Amazon RDS MySQL または Amazon RDS MariaDB リードレプリカをソースとして使用している場合は、リードレプリカのバックアップを有効にし、パラメータがに設定されていることを確認します。
log_slave_updates
TRUE
MySQL データベースを AWS DMS のソースとして使用する場合の制限
MySQL データベースをソースとして使用する場合は、次の点を考慮してください。
-
変更データキャプチャ (CDC) は、Amazon RDS MySQL 5.5 以下ではサポートされていません。Amazon RDS MySQL では、バージョン 5.6、5.7、または 8.0 を使用して CDC を有効にする必要があります。CDC は、セルフ管理 MySQL 5.5 ソースでサポートされています。
-
CDC の場合、列データ型を変更する
CREATE TABLE
、ADD COLUMN
、DROP COLUMN
、renaming a column
がサポートされています。ただし、DROP TABLE
、RENAME TABLE
、およびカラムのデフォルト値、カラムのNULL可能性、文字セットなどの他の属性に対する更新はサポートされていません。 -
ソースのパーティション分割されたテーブルで、[ターゲットテーブル作成モード] を [ターゲット上のテーブルを削除] に設定すると、AWS DMS は MySQL ターゲットにパーティションがないシンプルなテーブルを作成します。パーティション分割されたテーブルをターゲットのパーティション分割されたテーブルに移行するには、ターゲット MySQL データベースにパーティション分割されたテーブルを事前に作成します。
-
ALTER TABLE
ステートメントを使用して、テーブルの先頭 (FIRST) または中間 (AFTER) に列を追加することはできません。列は常にテーブルの末尾に追加されます。table_name
ADD COLUMNcolumn_name
-
テーブル名に大文字と小文字が含まれていて、大文字と小文字が区別されるオペレーティングシステムにソースエンジンがホストされている場合、CDC はサポートされません。たとえば、Microsoft Windows や HFS+ を使用する OS X などです。
-
Aurora MySQL 互換エディション サーバーレスは全ロードで使えますが、CDCには使えません。これは MySQL の前提条件を有効にできないためです。詳細については、「パラメータグループと Aurora サーバーレス v1」をご参照ください。
-
列の AUTO_INCREMENT 属性は、ターゲットデータベース列に移行されません。
-
バイナリログが標準のブロックストレージに保存されている場合の変更のキャプチャはサポートされていません。たとえば、バイナリログが Amazon S3 に保存されていると、CDC は機能しません。
-
AWS DMS は、デフォルトで InnoDB ストレージエンジンを使用してターゲットテーブルを作成します。InnoDB 以外のストレージエンジンを使用する必要がある場合、テーブルを手動で作成し、何もしないモードを使用してそのテーブルに移行する必要があります。
-
DMS 移行タスクモードが[Migrate existing data] (既存のデータを移行する) —全ロードのみでない限り、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 ソースおよびターゲットデータベースではサポートされていません。
-
2 つの Amazon RDS Aurora MySQL クラスター間で移行する場合、RDS Aurora MySQL ソース エンドポイントは、レプリカ インスタンスではなく読み取り/書き込みインスタンスである必要があります。
-
現在 AWS DMS は、MariaDB のビューの移行に対応していません。
-
AWS DMS は MySQL のパーティション分割テーブルの DDL 変更をサポートしていません。CDC 中のパーティション DDL 変更によるテーブルの一時停止をスキップするには、に設定します。
skipTableSuspensionForPartitionDdl
true
-
AWS DMSバージョン 3.5.0 以降の XA トランザクションのみをサポートします。以前のバージョンは XA トランザクションをサポートしていません。 AWS DMSは MariaDB バージョン 10.6 の XA トランザクションをサポートしていません。詳細については、「XA トランザクションのSupport」を参照してください。
-
AWS DMSソースデータに GTID が含まれていても、レプリケーションには GTID を使用しません。
-
AWS DMSバイナリログトランザクションの圧縮はサポートされていません。
-
AWS DMSInnoDB ストレージエンジンを使用する MySQL データベースの ON DELETE CASCADE イベントと ON UPDATE CASCADE イベントは伝播されません。これらのイベントの場合、MySQL は子テーブルでのカスケード操作を反映する binlog イベントを生成しません。そのため、AWS DMS対応する変更を子テーブルに複製することはできません。詳細については、「インデックス、外部キー、またはカスケード更新または削除は移行されません。」を参照してください。
-
AWS DMS計算列 (
VIRTUAL
およびGENERATED ALWAYS
) への変更はキャプチャされません。この制限を回避するには、次の操作を行います。ターゲットデータベースにターゲットテーブルを事前に作成し、
DO_NOTHING
またはTRUNCATE_BEFORE_LOAD
full-load AWS DMS タスク設定を使用してタスクを作成します。計算結果列をタスクスコープから削除する変換ルールを追加します。変換ルールについては、を参照してください 変換ルールおよび変換アクション。
XA トランザクションのSupport
Extended Architecture (XA) トランザクションは、複数のトランザクションリソースによる一連の操作を 1 つの信頼性の高いグローバルトランザクションにまとめるために使用できるトランザクションです。XA トランザクションは 2 フェーズコミットプロトコルを使用します。一般に、XA トランザクションが開いている間に変更を取り込むと、データが失われる可能性があります。データベースが XA トランザクションを使用していない場合は、IgnoreOpenXaTransactionsCheck
デフォルト値を使用してこの権限と設定を無視できます。TRUE
XA トランザクションのあるソースから複製を開始するには、次の操作を行います。
AWS DMSエンドポイントユーザーに以下の権限があることを確認します。
grant XA_RECOVER_ADMIN on *.* to 'userName'@'%';
IgnoreOpenXaTransactionsCheck
エンドポイントの設定をに設定しますfalse
。
注記
AWS DMSは MariaDB ソース DB バージョン 10.6 の XA トランザクションをサポートしていません。
MySQL をソースとして使用する場合のエンドポイント設定 AWS DMS
エンドポイント設定を使用して、追加の接続属性を使用する場合と同様に MySQL ソースデータベースを設定できます。ソースエンドポイントを作成するときに、AWS DMSコンソールを使用するか、--my-sql-settings '{"
JSON EndpointSetting"
:
"value"
, ...
}'create-endpoint
AWS CLI構文のコマンドを使用して設定を指定します。
次の表は、MySQL をソースとして使用できるエンドポイント設定を示しています。
名前 | 説明 |
---|---|
EventsPollInterval |
データベースがアイドル状態のとき、バイナリログで新しい変更/イベントをチェックする頻度を指定します。 デフォルト値: 5 有効な値: 1~60 例: この例では、AWS DMS はバイナリログの変更を 5 秒ごと確認します。 |
ExecuteTimeout |
AWS DMSバージョン 3.4.7 以降では、MySQL ソースエンドポイントのクライアントステートメントのタイムアウトを秒単位で設定します。 デフォルト値:60 例: |
ServerTimezone |
ソース MySQL データベースのタイムゾーンを指定します。 例: |
AfterConnectScript |
AWS DMS がエンドポイントに接続した直後に実行するスクリプトを指定します。移行タスクは、SQL ステートメントが成功するか失敗するかにかかわらず、引き続き実行されます。 有効な値: セミコロンで区切られた 1 つ以上の有効な SQL ステートメント。 例: |
CleanSrcMetadataOnMismatch
|
不一致が発生すると、レプリケーションインスタンスのテーブルメタデータ情報をクリーンアップして再作成します。たとえば、テーブルの DDL を変更すると、レプリケーションインスタンスにキャッシュされているテーブルに関する情報が変更される場合があります。Boolean。 デフォルト値: 例: |
skipTableSuspensionForPartitionDdl
|
AWS DMS は MySQL のパーティション分割テーブルの DDL 変更をサポートしていません。AWS DMSバージョン 3.4.6 以降では、これを設定すると CDC 中のパーティション DDL デフォルト値: 例: |
IgnoreOpenXaTransactionsCheck
|
AWS DMSバージョン 3.5.0 以降では、タスクが開始時に開いている XA トランザクションを無視するかどうかを指定します。ソースに XA デフォルト値: 例: |
MySQL のソースデータ型
次の表に、AWS DMS を使用する場合にサポートされる MySQL データベースのソースデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。
ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。
AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型」をご参照ください。
MySQL のデータ型 |
AWS DMS データ型 |
---|---|
INT |
INT4 |
BIGINT |
INT8 |
MEDIUMINT |
INT4 |
TINYINT |
INT1 |
SMALLINT |
INT2 |
UNSIGNED TINYINT |
UINT1 |
UNSIGNED SMALLINT |
UINT2 |
未署名のメディア/ミント |
UINT4 |
符号なし整数 |
UINT4 |
UNSIGNED BIGINT |
UINT8 |
DECIMAL(10) |
NUMERIC (10,0) |
BINARY |
BYTES(1) |
BIT |
BOOLEAN |
BIT(64) |
BYTES(8) |
BLOB |
バイト (65535) |
LONGBLOB |
BLOB |
MEDIUMBLOB |
BLOB |
TINYBLOB |
BYTES(255) |
DATE |
DATE |
DATETIME |
DATETIME 括弧で囲まれた値のない DATETIME はミリ秒なしで複製されます。括弧内の値が 1 ~ 5 (など) の DATETIME は、ミリ秒単位で複製されます。 DATETIME 列を複製しても、ターゲット上の時刻は変わりません。UTC には変換されません。 |
TIME |
STRING |
TIMESTAMP |
DATETIME TIMESTAMP 列を複製すると、時間はターゲットの UTC に変換されます。 |
YEAR |
INT2 |
DOUBLE |
REAL8 |
FLOAT |
REAL(DOUBLE) FLOAT 値が以下の範囲にない場合は、変換を使用して FLOAT を STRING にマップします。変換の詳細については、「 変換ルールおよび変換アクション」をご参照ください。 サポートされている FLOAT の範囲は -1.79E+308 から -2.23E-308、0、および 2.23E-308 から 1.79E+308 です。 |
VARCHAR(45) |
WSTRING (45) |
VARCHAR(2000) |
WSTRING (2000) |
VARCHAR(4000) |
WSTRING (4000) |
VARBINARY (4000) |
BYTES (4000) |
VARBINARY (2000) |
BYTES (2000) |
CHAR |
WSTRING |
TEXT |
WSTRING |
LONGTEXT |
NCLOB |
MEDIUMTEXT |
NCLOB |
TINYTEXT |
ストリング (25) |
GEOMETRY |
BLOB |
POINT |
BLOB |
LINESTRING |
BLOB |
POLYGON |
BLOB |
MULTIPOINT |
BLOB |
MULTILINESTRING |
BLOB |
MULTIPOLYGON |
BLOB |
GEOMETRYCOLLECTION |
BLOB |
ENUM |
WSTRING ( ここで、 |
SET |
WSTRING ( ここで、 |
JSON |
CLOB |
注記
場合によっては、値が「ゼロ」(つまり、0000-00-00) の DATETIME データ型と TIMESTAMP データ型を指定できます。存在する場合は、レプリケーション タスクのターゲットデータベースが DATETIME データ型と TIMESTAMP データ型で「ゼロ」値に対応していることを確認してください。サポートされていない場合、これらの値はターゲットで NULL として記録されます。