初めに

こんにちは、協栄情報の陳と申します。

いきなりですが、今日AWS Database Migration Service (以降、DMS)を使ってみたいです!

・DMSとは

DMSはオンプレからクラウドへ移行、クラウド内RDS間の移行、同種異種データストア間の移行をサポートしている網羅性が高い移行ツールです。しかも、移行方式として全ロード、CDC、全ロード+CDCをサポートしていて、とても柔軟性が高いツールではあります。

・DMSの移行プロセス

file

図で見たら移行プロセスがわかりやすくなります。エンドポイントでDMSがソースDBとターゲットDBに接続でき、レプリケーションインスタンス経由でデータ移行する。タスクを作成することで、カスタマイズの移行方式を定義できます。

クラウドへDB移行に使いやすいツールなので、ノウハウとしてお残したいと思います。
さて、とりあえず使ってみましょう!

・検証機能

DMSは全ロードやCDC、移行ログ出力、移行前評価レポート、SNS通知など色々な機能を提供していますが、今回はとりあえず何章を分けて、以下のDMSの特徴機能を検証したいです。

・RDS for Oracle → RDS for PostgreSQL間のデータ移行
・全ロードモード/CDCモードでデータ移行
・異種DB間のスキーマ転換ツールSCTの使用
・移行ログ出力
・移行前評価レポート

・設定コンポーネント

対象の設定コンポーネントは下図の⓵⓶⓷⓸です。
証明書はRDSとレプリケーションインスタンス間のSSL接続に必要なものですが、今回の検証ミッションはあくまでDMSの利用方法をはっきりしたいので、暗号化しないでもっていきます。

file

検証目次

⓵移行前の準備作業
⓶移行タスクの作成
⓷データ移行
⓸SCTツールでスキーマ移行
⓹継続レプリケート(CDC)で移行

さて、DMSをどうやって使うかを一緒に検証してみましょう!

⓵移行前の準備作業

Step1 テスト用ソースRDS及びターゲットRDS作成

RDS移行なので、もちろん事前作業としてRDSの作成が必要となります。
作成方法について割愛しますが、東京リージョンにテスト用のソースRDS for Oracle及びターゲットRDS for PostgreSQLを作成しました。

・dms-database-oracle
・dms-database-postgreSQL

Step2 テストデータの導入

移行用のデータをソースデータベース「dms-database-oracle」に作成する。

・まずはec2からソースRDSに接続する。
$ sqlplus64 admin/passw0rd@"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dms-database-oracle.XXXXXXX.ap-northeast-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=DATABASE)))"

・テストスキーマ作成して必要な権限、表領域のQUOTAを振り分ける。
SQL> create user dmsuser IDENTIFIED BY "dmsuser";
SQL> grant resource,connect to dmsuser;
SQL> alter user dmsuser quota 100m on USERS;
SQL> exit;

・作成完了したら、テストユーザとしてログインする。
$ sqlplus64 dmsuser/dmsuser@"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dms-database-oracle.XXXXXXX.ap-northeast-1.rds.amazonaws.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=DATABASE)))"

・ここでテストテーブルを作って、テストデータを挿入する。
SQL> create table dmstable (no NUMBER,name VARCHAR2(30));

SQL> begin for i in 1..10 loop insert into dmstable values (1,'m'); end loop; commit; end; /

・終わったら、データが正しく挿入したことを確認する。
SQL> select * from dmstable;

・countで行数チェックする。
SQL> select count(*) from dmstable;

チェックして問題なければ、次はDMSの準備作業になります。

Step3 移行前評価の準備

・バケット作成

移行前評価のレポートがS3バケットに出力するので、事前にバケットの用意が必要です。
テストとして「dms-test-bucket-20220518」をレポート配置用のバケットとして作成する。

file

・ロール作成

DMSサービスからS3バケットにアクセスするためのロールが事前に作成する必要がある。

以下の公式ドキュメントを参照してロールを作成する。

https://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Tasks.AssessmentReport.html

作成したバケットに権限を付与するようにして、「dms-s3-test-policy」という名前のポリシーを作成する。

file

続いて、「dms-s3-test-role」という名前のDMSサービスのロールを作成し、「dms-s3-test-policy」ポリシーをアタッチする。

file

それで、作成完了となります。
file

信頼関係にDMSサービスであることを確認する。
file

Step4 移行ログ出力の準備

・ロール作成

DMSサービスからCloudWatchLogsにアクセスするための「AmazonDMSCloudWatchLogsRole」ポリシーにアタッチしている「dms-cloudwatch-logs-role」という名前のDMSサービスロールが事前に作成する必要がある。

以下の公式ドキュメントを参照してロールを作成する。
https://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Security.html#CHAP_Security.APIRole

作成したらこんな感じです。
file

信頼関係にDMSサービスであることを確認する。
file

終わりに

移行タスク作成するまでの準備はここまでとなります。
実際のスキーマ移行、データ移行はまた次回でやりましょう!
ここまで読んでいただき、ありがとうございました。

Last modified: 2022-05-24

Author