4つのチュートリアルのセットでは、AWS Database Migration Service(DMS)を使用してMySQLデータベースインスタンスをPostgreSQLデータベースに移行する方法を検討しています。最初のチュートリアル「AWSRDSでのMySQLからPostgreSQLへの移行、パート1」では、DMSを紹介し、DMS用のIAMユーザーを作成しました。 2番目のチュートリアル「AWSRDSでのMySQLからPostgreSQLへの移行、パート2」では、RDSでMySQLとPostgreSQLのインスタンスを作成し、2つのインスタンスに接続しました。この継続チュートリアルでは、移行を実行するためのDMS移行を作成します。このチュートリアルには次のセクションがあります:
- DMS移行の作成
- レプリケーションインスタンスの作成
- 移行タスクエンドポイントの作成
- 移行タスクの作成
- 結論
DMS移行の作成
このセクションでは、MySQLデータベースをPostgreSQLデータベースに移行するためのデータベース移行サービス(DMS)を作成します。 DMSの移行は、次のコンポーネントで構成されています。
- レプリケーションインスタンス
- データベースエンドポイント
- タスク
これらのそれぞれの作成についてはサブセクションで説明しますが、最初にDMS移行を作成する必要があります。 DMSダッシュボードに移動し、移行の作成をクリックします 、図1に示すように。
図1: 移行を作成する
DMSウィザードが開始されます。図2に示すように、[次へ]をクリックします。
図2: DMSウィザード
レプリケーションインスタンスの作成
次に、レプリケーションインスタンスを構成します。これにより、ソースデータベースとターゲットデータベース間の接続が確立され、データが転送され、初期データロード中に発生したデータ変更がキャッシュされます。レプリケーションインスタンスの名前を指定します および説明 、インスタンスクラスを選択します (デフォルトはdms.t2.mediumです)図3に示すように、 VPCを選択します Mult-Azで高可用性を構成するオプションを選択します;デフォルト設定は「いいえ」に設定されています。オプション一般公開を選択します 。
図3: レプリケーションインスタンスの構成
詳細strong> 、割り当てられたストレージのデフォルト設定を維持します 図4に示すように、(50 GB)、レプリケーションサブネットグループ、可用性ゾーン(優先なし)、およびVPCセキュリティグループ(デフォルトを使用)。環境の設定<で前に作成したKMSマスターキー(dbms)を選択します。 / em> セクション。
図4: レプリケーションインスタンスの詳細設定の構成
図5に示すように、[次へ]をクリックします。
図5: 次へ
図6のメッセージに示すように、レプリケーションインスタンスの作成が開始されます。次に、ソースデータベース接続とターゲットデータベース接続を構成する必要があります。これについては、次のサブセクションで行います。
図6: レプリケーションインスタンスの作成が開始されます
移行タスクエンドポイントの作成
レプリケーションインスタンスが作成されるまでに数分かかる場合があります。レプリケーションインスタンスの作成中に、移行エンドポイントを追加できます。 ソースエンジンを選択します 図7に示すように、「mysql」として。
図7: ソースエンジンの選択
ターゲットエンジンを選択します 図8に示すように、「postgres」として。
図8: ターゲットエンジンの選択
サーバー名 、エンドポイントを指定します :port を削除して、データベースのRDSDBインスタンスを作成します。 サフィックス。 MySQLデータベースの場合、RDSエンドポイントは mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com:3306です。 。したがって、サーバー名を指定してください mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.comとして 、図9に示すように、RDS上のPostgreSQLデータベースの場合、エンドポイントは postgresdb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com:5432です。;したがって、サーバー名を指定してください postgresdb.crbmlbxmp8qi.us-east-1.rds.amazonaws.comとして 。ソースデータベースとターゲットデータベースに別々にポートを指定します。MySQLデータベースの場合は3306、Postgresの場合は5432です。
図9: ソースデータベースとターゲットデータベースのサーバー名とポートの指定
図10に示すように、下にスクロールしてその他のエンドポイント構成設定を表示します。SSLモードを選択します。 なしとして ソースデータベースとターゲットデータベースの両方。 RDSDBインスタンスの作成時に設定されたユーザー名とパスワードを指定します。 RDS DBインスタンスの作成時に設定されたPostgreSQLデータベース名(postgresdb)を指定します。
図10: SSLモード、ユーザー名、パスワード、SIDまたはデータベース名の指定
詳細設定では、MySQLデータベースとPostgreSQLデータベースで使用可能な追加の接続属性を指定できますが、このチュートリアルでは必要ありません。ソースデータベースとターゲットデータベースの両方のKMSマスターキー(dbms)を選択します(図11を参照)。 DMSエンドポイントをテストするには、テストの実行 図11に示すように、ボタンが用意されています。テストの実行 レプリケーションインスタンスが作成されるまで、ボタンはグレー表示されるか無効になります。
図11: DMSエンドポイントの詳細設定の構成
レプリケーションインスタンスが作成されると、図12に示すように、「レプリケーションインスタンスが正常に作成されました」というメッセージが表示されます。
図12: レプリケーションインスタンスが正常に作成されました
レプリケーションインスタンスが作成されたら、テストの実行 ボタンが有効になります。 テストの実行をクリックします 、図13に示すように、データベースごとに。
図13: テストを実行する
図14の「エンドポイント接続のテスト」というメッセージで示されているように、接続のテストが開始されます。
図14: エンドポイント接続のテスト
エンドポイント接続が必要に応じて構成されている場合は、図15に示すように、「接続が正常にテストされました」というメッセージが表示されます。[次へ]をクリックします。
図15: 接続は正常にテストされました
移行タスクの作成
レプリケーションインスタンスとデータベースエンドポイントを作成したら、次に、エンドポイントに接続して実際にデータを転送するための移行タスクを作成します。 タスクの作成 ウィザードで、タスク名を指定します (デフォルトも指定されています)タスクの説明を追加します(図16を参照)。 作成時にタスクを開始するオプションを選択します 。
図16: タスクウィザードの作成
ソースエンドポイントとターゲットエンドポイント、およびレプリケーションインスタンスは以前に構成されており、タスクの作成時に変更できません。 移行タイプを選択します 、図17に示すように、3つのオプションがリストされています。
- 既存のデータを移行する :ソースデータベースにすでに存在する既存のスキーマ、テーブル、およびテーブルデータを移行しますが、その後の変更は継続的に移行しません。
- 既存のデータを移行し、進行中の変更を複製する :ソースデータベースにすでに存在する既存のスキーマ、テーブル、およびテーブルデータを移行し、その後の変更も継続的に移行します。
- データの変更のみを複製する :既存のスキーマ、テーブル、およびデータを移行せず、データの変更のみを移行します。
既存のデータを移行するを選択します 図17に示すように、オプションを使用します。他の2つのオプションが提供する変更を移行するには、MySQLDBインスタンスのバイナリログ保持時間を24時間以上に増やす必要があります。
図17: [既存のデータを移行する]として[移行タイプ]を選択する
次に、タスク設定を構成します 。 ターゲットテーブルの準備モード 設定はターゲットデータベースのテーブルに適用され、次の3つのオプションが提供されます。
- 何もしない :ターゲットテーブルのデータとメタデータは変更されません
- ターゲットにテーブルをドロップする :既存のテーブルがある場合は削除され、新しいテーブルが作成されます
- 切り捨て :テーブルは切り捨てられます。これは、テーブルデータは削除されますが、テーブルメタデータは変更されないことを意味します。 レプリケーションにLOB列を含める 設定は、ソースデータベースのLOBデータ型列に適用され、次の3つのオプションを提供します。
- LOB列を含めないでください :LOB列は移行から除外されます
- フルLOBモード :サイズに関係なく、完全なLOBを移行します。 LOBはチャンクで移行されるため、移行プロセスが遅くなる可能性があります
- 制限付きLOBモード :LOBを最大LOBサイズ(kb)で指定されたサイズに切り捨てます
ターゲットテーブルの準備モードを選択します 図18に示すように、何もしないでください。[レプリケーションにLOB列を含める]を選択します。 制限付きLOBモードとして 最大LOBサイズを指定します 32 kb(デフォルト)として。 ログを有効にするを選択します オプション。
図18: タスク設定
次に、テーブルマッピングに選択ルールと変換ルールを追加します 、図19に示すように、テーブルマッピングは、ガイド付きを使用して追加できます。 ユーザーインターフェイスまたはJSON 。ガイド付きUIをお勧めします。少なくとも1つの選択ルールを追加する必要があり、変換ルールはオプションです。選択ルールが適用されますが、スキーマ、テーブル、および列をターゲットデータベースに移行する前に、ソースデータベースおよび変換ルールからスキーマ、テーブル、および列を選択することが適用されます。
図19: テーブルマッピング
スキーマは、スキーマ名から選択できます。 ドロップダウン、またはリストされていない場合は、スキーマを入力を選択します スキーマ名は次のようになりますでスキーマを指定します 分野。 アクション ドロップダウンには、次の2つのオプションが表示されます。含める および除外 。 [含める]オプションにはスキーマとテーブルに対して行われた選択が含まれ、[除外]オプションにはスキーマとテーブルが除外されます。除外は、包含の後に処理されます。すべてのスキーマを選択する必要はなく、スキーマのすべてのテーブルを選択する必要もありません。
次の選択ルールを追加します:
- ソースデータベースのすべてのスキーマとすべてのテーブルを含める
選択ルールとして、スキーマの入力を選択します スキーマ名はを指定します %として 、図20に示すように、ソースデータベース内のすべてのスキーマを選択します。テーブル名は次のようになりますを指定します。 %として 、選択したスキーマのすべてのテーブルを選択します。 アクションを選択します 含める 。
図20: 選択ルールの構成
選択ルールの追加をクリックします (図21を参照)。
図21: 選択ルールの追加
図22に示すように、選択ルールが追加されます。タスクが作成されると、IAMロール dms-cloudwatch-logs-role DMSがCloudWatchにアクセスできるようにするために作成されています。
図22: 選択ルールが追加されました
次に、変換規則を追加します。これを行うには、変換ルールを追加をクリックします 図23に示すように、リンク。
図23: 変換ルールを追加する
変換ルールには、ターゲットの設定があります 。図24に示すように、ルールには3つのオプションがあります。
- スキーマ
- 表
- 列
場所 選択ルールによって選択されたオブジェクトのサブセットを指定します。 アクションは 適用される変換と次のオプションを使用できます:
- 名前を変更します(スキーマおよびテーブルオブジェクトで使用可能)
- 列を削除します(列で使用可能)
- 小文字にします(スキーマ、テーブル、および列で使用可能)
- 大文字にする(スキーマ、テーブル、および列で使用可能)
- プレフィックスを追加します(スキーマ、テーブル、および列で使用可能)
- プレフィックスを削除します(スキーマ、テーブル、および列で使用可能)
図24: 変換ルールの設定
PostgreSQLは、スキーマ、テーブル、および列で小文字を使用します。 3つの変換ルールを追加します:
- すべてのスキーマを小文字にします
- すべてのテーブルを小文字にします
- すべての列を小文字にします
これらの変換ルールの最初のものを追加するには、ターゲットを選択します スキーマとして 図25に示すように。スキーマ名は%のようになりますを指定します 。 アクションを選択します 小文字にする 変換ルールの追加をクリックします 。
図25: 変換ルールの追加
変換ルールが追加されます(図26を参照)。別の変換ルールを追加するには、変換ルールの追加をクリックします もう一度リンクします。
図26: 変換ルールが追加されました
ターゲットを選択します テーブルとして 、図27に示すように。スキーマ名は%のようになりますを指定します 。 テーブル名は%のようなものですを選択します 。 アクションを選択します 小文字にする 変換ルールの追加をクリックします 。
図27: テーブルの名前を変更するための変換規則の追加
ターゲットを選択します 列として 、図28に示すように。スキーマ名は%のようになりますを指定します 。 テーブル名は%のようなものですを選択します 。 列名は%のようなものですを選択します 。 アクションを選択します 小文字にする 変換ルールの追加をクリックします 。
図28: 列名を小文字にする変換ルールを追加する
3つの選択規則と追加された変換規則を図29に示します。タスクが実行されると、選択規則が変換規則の前に適用されます。詳細設定については、詳細設定をクリックしてください 、図29に示すように。
図29: 選択規則と変換規則
詳細設定 、コントロールテーブル設定を選択します スキーマを使用してターゲットにコントロールテーブルを作成するを指定します 公開として 、図30に示すように、[完了]をクリックします。
図30: ターゲットでの制御テーブルスキーマの設定
詳細設定が追加されます(図31を参照)。
図31: 詳細設定
タスクを構成したら、[タスクの作成]をクリックします 、図32に示すように、タスクを作成します。
図32: タスクの作成
図33に示すように、移行タスクが作成されます。最初は、タスクのステータスは「作成中」です。
図33: 移行タスク
タスクには、表1で説明されているステータスの1つが含まれる場合があります。
ステータス | 説明 |
作成 | タスクが作成されています。 |
準備完了 | タスクを開始して実行する準備が整いました。通常、「作成中」のステータスに従います。 |
開始 | タスクが開始され、その間にタスクはレプリケーションインスタンスおよびデータベースエンドポイントに接続します。選択と変換のルールが適用されます。 |
実行中 | タスクは実行中です。これは、タスクがデータベースを移行していることを意味します。 |
ロード完了 | タスクはデータベースのロード(移行)を完了しました。 |
失敗 | タスクが失敗しました。 |
エラー | 移行中にエラーが発生しました。一部のスキーマとテーブルは正常に移行された可能性がありますが、少なくとも1つのスキーマまたはテーブルが移行に失敗しました。 |
変更中 | 通常、ユーザーがタスクを変更した後、タスクが変更されます。 |
停止中 | タスクは停止しています。これは通常、ユーザーがタスクの停止を選択した後です。 |
停止 | タスクが停止しました。これは、ユーザーがタスクを停止したか、既存のデータを移行して進行中の変更をレプリケートする移行タイプが使用され、タスクが初期ロードを完了したことが原因である可能性があります。 。 |
削除 | タスクが削除されています。これは、ユーザーがタスクを削除したためです。 |
表1: タスクステータス
図34に示すように、CloudWatch用とVPC用の2つのIAMロールが作成されます。
図34: DMSのIAMの役割
結論
RDS上のMySQLデータベースインスタンスをRDS上のPostgresデータベースインスタンスに移行するこの3番目のチュートリアルでは、レプリケーションインスタンス、移行エンドポイント、移行タスクを含むDMS移行を作成しました。 4番目のチュートリアルでは、DMS移行を実行して移行を実行し、結果を評価する方法について説明します。