この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
初めに
こんにちは、協栄情報の陳と申します。
いきなりですが、今日AWS Database Migration Service (以降、DMS)を使ってみたいです!
・DMSとは
DMSはオンプレからクラウドへ移行、クラウド内RDS間の移行、同種異種データストア間の移行をサポートしている網羅性が高い移行ツールです。しかも、移行方式として全ロード、CDC、全ロード+CDCをサポートしていて、とても柔軟性が高いツールではあります。
・DMSの移行プロセス
図で見たら移行プロセスがわかりやすくなります。エンドポイントでDMSがソースDBとターゲットDBに接続でき、レプリケーションインスタンス経由でデータ移行する。タスクを作成することで、カスタマイズの移行方式を定義できます。
クラウドへDB移行に使いやすいツールなので、ノウハウとしてお残したいと思います。
さて、とりあえず使ってみましょう!
・検証機能
DMSは全ロードやCDC、移行ログ出力、移行前評価レポート、SNS通知など色々な機能を提供していますが、今回はとりあえず何章を分けて、以下のDMSの特徴機能を検証したいです。
・RDS for Oracle → RDS for PostgreSQL間のデータ移行
・全ロードモード/CDCモードでデータ移行
・異種DB間のスキーマ転換ツールSCTの使用
・移行ログ出力
・移行前評価レポート
・設定コンポーネント
対象の設定コンポーネントは下図の⓵⓶⓷⓸です。
証明書はRDSとレプリケーションインスタンス間のSSL接続に必要なものですが、今回の検証ミッションはあくまでDMSの利用方法をはっきりしたいので、暗号化しないでもっていきます。
検証目次
⓵移行前の準備作業
⓶移行タスクの作成
⓷データ移行
⓸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」をレポート配置用のバケットとして作成する。
・ロール作成
DMSサービスからS3バケットにアクセスするためのロールが事前に作成する必要がある。
以下の公式ドキュメントを参照してロールを作成する。
https://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Tasks.AssessmentReport.html
作成したバケットに権限を付与するようにして、「dms-s3-test-policy」という名前のポリシーを作成する。
続いて、「dms-s3-test-role」という名前のDMSサービスのロールを作成し、「dms-s3-test-policy」ポリシーをアタッチする。
それで、作成完了となります。
信頼関係にDMSサービスであることを確認する。
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
作成したらこんな感じです。
信頼関係にDMSサービスであることを確認する。
終わりに
移行タスク作成するまでの準備はここまでとなります。
実際のスキーマ移行、データ移行はまた次回でやりましょう!
ここまで読んでいただき、ありがとうございました。