DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > 【AWS入門】AWS DMSでPostgreSQLからのデータ移行を実現する - PrismScaler

【AWS入門】AWS DMSでPostgreSQLからのデータ移行を実現する - PrismScaler

1. はじめに

こんにちは!株式会社Definerの阪本です!
今回は、AWS Database Migration Service(DMS)を使ったPostgreSQLからのデータ移行方法をご紹介したいと思います。

2. 目的・ユースケース

この記事では、AWS Database Migration Service(DMS)でPostgreSQLからのデータ移行を実現したいときに、参考になる情報やプラクティスをまとめています。

3. AWS Database Migration Serviceとは

AWS Database Migration Service(DMS)とは、AWSが提供するリレーショナルデータベースやNoSQL データベース、データウェアハウスなどのDB移行サービスです。
 
Database Migration Serviceを使うにあたり覚えておくべき用語として、以下の3つがあります。
 
・Endpoint
データベースへの接続情報の定義です。
ソースDBとターゲットDBの2つ分存在します。
 
・Replication Instance
ソースDBとターゲットDBを接続し、データ複製タスクが実行されるインスタンスです。
 
・Replication Task
データ複製の実行単位で、実際にデータ移行が行われている場所です。
 
 
また、データの複製方法として、以下の3パターンが存在します。
 
・フルロード
ソースDBからターゲットDBへ指定したテーブルデータがそのまま移行されます。
 
・フルロード+CDC(継続的複製)
ソースDBで変更をキャプチャしながら、フルロードが実行されます。
フルロードの完了後は、定期的にキャプチャされた変更がターゲットDBに反映されます。
 
CDC(継続的複製)
フルロードは行わずに、ソースDBの変更内容を定期的に読み込み、変更データをターゲットDBに反映させます。
 
 
PostgreSQLについても、簡単におさらいします。
PostgreSQLは、オープンソース(OSS)のリレーショナルデータベースです。
利用は無料であり、LinuxやMacの他、 Windowsにも対応しています。
非常に自由度の高いライセンスを採用しているため、独自のカスタムをした場合も公開義務はありません。

4. MDSによるPostgreSQLの移行

それでは早速、Database Migration Serviceを試してみます。
前提として、移行元(ソース)となるPostgreSQLのデータベースは存在するものとします。
 
①移行先(ターゲット)となるRDSの作成
RDSコンソールにアクセスし、「データベース」タブ→「データベースの作成」
「標準作成」→エンジンタイプ「PostgreSQL」
エンジンバージョンは、ソースDBと同じ13.6を選択しました。
テンプレートは、今回は無料利用枠を使用しています。
マスタユーザのIDとパスワードは、後続の作業で必要なので控えておきます。
 
②DMSのレプリケーションインスタンス作成
DMSコンソールに移動し、「レプリケーションインスタンス」→「レプリケーションインスタンスの作成」
名前やインスタンスクラス、VPCやSecurityGroupなどのネットワーク情報を入力します。
パブリックアクセスは、ソース/ターゲットDBからインターネット経由でレプリケーションインスタンスへ接続する必要がある場合はチェックを入れてください。
作成完了まで、数分ほど待ちます。
 

 
③DMSのエンドポイント作成
ソースDBとターゲットDBの2つのエンドポイントを作成する必要があります。
DMSコンソールで、「エンドポイント」→「エンドポイントの作成」
ソースDBは、ユーザID/パスワードなどの接続情報を入力しました。
ターゲットDBはRDSであるため、「RDS DB インスタンスの選択」にチェックを入れました。
 

 
④DB移行タスクの作成
DMSコンソールで、「データベース移行タスク」→「タスクの作成」
先ほど作成したエンドポイントとレプリケーションインスタンスを指定します。
データの複製タイプは、今回はフルロードを選択しました。
 
ステータスが「ロード完了」となれば、レプリケーションは完了です。
DBにログインし、テーブル一覧を確認したところ、DB移行は成功していました。
## postgreSQLへのログイン
psql -p 5432 -d ${データベース名} -U postgres -h ${RDSのエンドポイント}                
 

DBのテーブル一覧を表示
\dt
                    List of relations
 Schema |            Name             | Type  |  Owner   
--------+-----------------------------+-------+----------
 dev    | all_employee                     | table | postgres
 dev    | all_devision                   | table | postgres                  

5. 引用・参考記事

6. 独自ソリューション「PrismScaler」について

・ PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。
・ クラウド基盤にまつわる「自動構築」「自動監視」「問題検知」「構成可視化」などの効率化を実現し、クラウドエンジニア、SRE/DevOpsエンジニアが行う泥臭く大変な作業を肩代わりするソリューションです。
・ クラウド基盤構築/クラウド移行や、クラウドの保守運用・コスト最適化など幅広い利用シーンを想定しており、IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。
 

7. お問合せ

本記事では、入門編として有益な情報を無料公開しています。ご相談やお問い合わせは「株式会社Definer」へ。

8. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。