AWS Database Migration Service(DMS)入門 その3(データ移行編)

記事タイトルとURLをコピーする

技術課の柏尾です。
「準備編」「スキーマ変換編」に続き、今回は「AWS DMS レプリケーションインスタンス」を利用したデータ移行を試してみたいと思います。

AWS DMS レプリケーションインスタンスの作成

AWS マネジメントコンソールにサインインし、AWS DMS を選択して、「移行の作成」ボタンを押します。

「レプリケーションインスタンスの作成」で、レプリケーションのインスタンスのパラメータを指定します。
値はチュートリアルどおりの値を設定します。

ステップ 7: AWS DMS レプリケーションインスタンスを作成する
https://docs.aws.amazon.com/ja_jp/dms/latest/sbs/CHAP_RDSOracle2Aurora.Steps.CreateReplicationInstance.html

次の「ソースおよびターゲットデータベースエンドポイントの接続」画面で、ソース・ターゲットそれぞれのエンドポイントの情報を入力します。

ステップ 8: AWS DMS のソースとターゲットのエンドポイントを作成する
https://docs.aws.amazon.com/ja_jp/dms/latest/sbs/CHAP_RDSOracle2Aurora.Steps.CreateSourceTargetEndpoints.html

レプリケーションインスタンスが作成されている旨のメッセージが表示されているので、インスタンスの作成が完了するまで待ちます。

また、ロード時の外部キーチェックの無効化、DMS が実行するトランザクションを自動コミットさせるため、 「アドバンスト」の項目では、「追加の接続属性」 に「initstmt=SET FOREIGN_KEY_CHECKS=0, autocommit=1」を入力しておきます。

「レプリケーションインスタンスが正常に作成されました。」のメッセージが表示されました。

それぞれのインスタンスに接続できるか「テストの実行」ボタンを押します。
「接続のテストに成功しました」のメッセージが表示されればOKです。「次へ」ボタンで「タスクの設定」に移ります。

「移行タスク」を作成して実行する

AWS DMS タスクを使用して、移行するスキーマや移行のタイプを指定します。
移行のタイプでは、「既存のデータを移行」「既存のデータを移行して継続的な変更をレプリケートする」「データ変更のみをレプリケートする」を選択できます。チュートリアルでは、「既存のデータを移行」を選択します。

その他パラメータもチュートリアルの通りに入力します。

ステップ 9: AWS DMS 移行タスクを作成して実行する
https://docs.aws.amazon.com/ja_jp/dms/latest/sbs/CHAP_RDSOracle2Aurora.Steps.CreateMigrationTask.html

スキーマ変換ツールを利用し、事前にテーブルを作成しているため、「タスク設定」の「ターゲットテーブル作成モード」では「何もしない」を選択します。
「ロギングの有効化」をチェックした場合、CloudWatch Logsに移行ログが記録されます。(有効にした場合、CloudWatch Logsの料金が発生します)

スキーマ名には「HR」を選択し、「選択ルールの追加」ボタンを押します。

「タスクの作成」ボタンを押すと移行タスクが作成されます。

作成中のステータスになります。

タスク作成後、「開始」ボタンを押すと移行タスクが開始されます。

移行が100%になるのを待ちます。

ロード完了後、「テーブル統計」タブを選択すると、移行結果を確認することができます。

また、ログ出力を有効にしている場合、CloudWatch Logsから移行ログを見ることができます。

データ移行が正常に完了したことをチェックする

チュートリアルの手順に従って、SQL Workbench/J からAuroraに接続し、確認用のSQLを発行します。

ステップ 10: データ移行が正常に完了したことを検証する
https://docs.aws.amazon.com/ja_jp/dms/latest/sbs/CHAP_RDSOracle2Aurora.Steps.VerifyDataMigration.html

各テーブルのレコード数の確認

チュートリアルでは従業員数が 10 人より多い部門を確認するクエリを実行しています。

それぞれOracle側と同じ結果になっているかをチェックします。

リソースを削除する

チュートリアル完了後、利用したリソースを削除していきます。
リソース間に依存関係があるため、チュートリアルの手順に従って削除していく必要があります。

左メニュー → 「タスク」→ 移行タスク (migratehrschema)を選択→「削除」ボタンを押す。

左メニュー → 「エンドポイント」→ Oracle のソースエンドポイント (orasource)を選択→「削除」ボタンを押す。
同じく、Amazon Aurora MySQL のターゲットエンドポイント (aurtarget)を選択→「削除」ボタンを押す。

削除中のステータスを経てエンドポイントが削除されます。

左メニュー → 「レプリケーションインスタンス」→レプリケーションインスタンス (DMSdemo-repserver)を選択→「削除」ボタンを押す。

削除中のステータスを経てレプリケーションインスタンスが削除されます。

AWS マネジメントコンソールから、CloudFormationに移動し、対象のスタックを選択後、「スタックの削除」を選択します。

削除中のステータスを経てスタックが削除されます。

最後に全てのリソースが削除されたか念のために確認しておきましょう。

まとめ

AWS Database Migration Service(DMS)入門 ということで、ドキュメントで公開されているチュートリアルの手順に従って、利用方法を見てきました。
チュートリアルを通して、短時間でDMSの仕組みや手順は理解できたかと思います。

DMSは様々なデータベースに対応していますが、例えばDWH用途でRedshiftをターゲットとする場合など、どのようなスキーマ変換がされるのか気になるところがありますので、機会があれば検証してみたいと思います。

また、データベースごとの注意点やチューニングポイントなど、より実践に即したDMSの使い方については技術ブログの他のエントリでも紹介していますので是非参考にしてみてください。
http://blog.serverworks.co.jp/tech/tag/dms/