4つのチュートリアルでは、AWS Database Migration Service(DMS)を使用してMySQLデータベースをPostgreSQLデータベースに移行する方法を検討しています。最初のチュートリアル「AWSRDSでのMySQLからPostgreSQLへの移行、パート1」で、DMS用のIAMユーザーを作成することから始めました。続いて、2番目のチュートリアル「AWSRDSでのMySQLからPostgreSQLへの移行、パート2」で、AWSリレーショナルデータベースサービス(RDS)でのMySQLとPostgreSQLのインスタンスの作成について説明しました。 3番目のチュートリアル「AWSRDSでのMySQLからPostgreSQLへの移行、パート3」では、DMS移行を作成しました。この最後のチュートリアルでは、DMS移行を実行して移行を実行する方法について説明します。
このチュートリアルには次のセクションがあります:
- DMS移行タスクの実行
- 移行されたデータベースの探索
- CloudWatchログの探索
- MySQLからDMSを使用したPostgreSQLへの移行の制限
- 結論
DMS移行タスクの実行
タスクが作成された後、ステータス 準備完了になるはずです 、図1に示すように、[開始/再開]をクリックします タスクを開始します。
図1: 開始/再開
ステータスは開始中になります 、図2に示すように。
図2: タスクの開始
タスクがレプリケーションインスタンスおよびデータベースエンドポイントとの接続を確立して適用されると、ステータスをマッピングするテーブルは実行中になります。 、図3に示すように。
図3: ステータス実行中
移行は構成どおりに実行され、移行が正常に完了した後、ステータス 読み込みが完了になります 、図4に示すように。ロードされたテーブル 列は、ロードされたテーブルの数を示します。
図4: ステータスの読み込みが完了しました
移行されたテーブルについては、テーブル統計をクリックします 図5に示すように、タブ。スキーマ、テーブル、ステータス、挿入数、削除数、更新数、DDL数、全負荷行数、合計数などのテーブル統計が一覧表示されます。
図5: テーブル統計
ソースデータベーステーブルにテーブルが含まれていない場合は、フルロード行 ソーステーブルに行がある場合、図6の一部の行に示されているように、[FullLoadRows]は行数を示します。
図6: 一部のテーブルのフルロード行は0ですが、他のテーブルの場合、ロードされた行の数
移行されたデータベースの探索
MySQLデータベースのスキーマとテーブルをPostgreSQLに移行したら、PostgreSQLCLIでdnを使用してスキーマを一覧表示します。 指図。図7に示すように、移行されたスキーマが一覧表示されます。 public スキーマは移行前にすでに存在していました。
図7: MySQLからPostgreSQLデータベースに移行されたスキーマ
DMSの移行により、テーブルの列タイプが自動的に変換されます。セカンダリインデックスはプライマリキーに追加され、テーブルマッピングで自動的に作成されます。
mysql.user に示されているように、テーブルデータも移行されます 図8の表。
図8: テーブルデータも移行されます
あるデータベースタイプから別のデータベースタイプに移行する場合(異種移行)、データ型のマッピングはDMSによって自動的に行われます。移行中に中間DMSデータ型が使用されます。 MySQLデータベースからPostgreSQLに移行する場合、最初にMySQLデータ型がソースデータベースとしてMySQLデータベースの組み込みマッピングを使用してDMSデータ型に移行されます。その後、DMSデータ型はPostgreSQLデータ型にマッピングされ、PostgreSQLの組み込みマッピングをターゲットデータベースとして使用します。 RDS上のMySQLデータベース内のRDS関連のテーブルも、図9に示すテーブル「mysql」。「rds_replication_status」などのPostgreSQLデータベースに移行されます。
図9: RDS情報テーブルの移行データ
CloudWatchログの探索
ロギングが構成されている場合、私たちが行ったように、ログはログから監視される場合があります 図10に示すように、タブをクリックします。タスクリンクをクリックしてCloudWatchログを一覧表示します。
図10: ログ
CloudWatchログが一覧表示されます(図11を参照)。
図11: CloudWatchログ
図12のCloudWatchログメッセージが示すように、「すべてのテーブルがロードされます。全負荷のみのタスクが停止します。」
図12: すべてのテーブルが読み込まれます
sys.sys_config の場合と同様に、転送されたレコードの数も一覧表示されます。 図13の表。
図13: データベーステーブルのログエントリには、転送されたレコードの数が含まれます
CloudWatchログを使用して、移行タスクの実行をデバッグできます。 CloudWatchログに正常に移行されなかったテーブルのエラーメッセージが一覧表示されます。
MySQLからDMSを使用したPostgreSQLへの移行の制限
DMSを使用したMySQLデータベースからPostgreSQLデータベースへの移行には制限があります。 DMSサービス自体には、AWSユーザーアカウントごとに制限があります。その他のDMSの制限は、データベースに固有である可能性があります。 MySQLのDMSソースデータ型には、UTF-8 4バイト文字セット(utf8mb4)は含まれていません。 DMSでサポートされている文字セットはCodePage1252 Windows Latin 1(ANSI)であり、文字セットに含まれていない文字は、移行中にエラーを生成する可能性があります。 DMSソースとしてのMySQLデータベースにはいくつかの制限があります。 PostgreSQLをDMSターゲットデータベースとして使用する場合の唯一の制限は、JSONデータ型がネイティブCLOBデータ型に変換されることです。
結論
4つのチュートリアルでは、RDS上のMySQLデータベースインスタンスをRDS上のPostgresデータベースインスタンスに移行する方法について説明しました。