LoginSignup
3
0

More than 1 year has passed since last update.

AWS DMSでPostgreSQLの既存データを移行してみた(RDS to RDS)

Last updated at Posted at 2022-04-15

AWS DMSを利用してRDSのPostgreSQLからRDSのPostgreSQLにデータを移行しました。

構成

image.png

移行元DBの構成

移行元DBは以下のような構成です。
スキーマはデフォルトのもの(Public)を利用するとします。
image.png

前提条件

  • 移行元RDSはPostgreSQL 11.12で、複数DBが存在する。
  • 移行元RDSのデータは今後更新されることはない。
  • 移行元RDSのデータを全て移行先RDSに移行する。
  • 移行先RDSは新規構築したものを利用する。

作業内容

移行先RDSを新規構築

以下の流れで移行先RDSを新規構築しました。
後からデータベースを手動で作成するので、最初のデータベースは空にしました。
image.png
image.png
image.png
image.png
qiita-1.png
image.png
image.png
image.png

移行先RDSにDBを手動で作成する

移行先RDSにpsqlで接続して移行元RDSと同じ名前のDBを作成します。
今回は移行元RDSにDBが2つあるので、2つ作成します。

CREATE DATABASE sample_db1;
CREATE DATABASE sample_db2;

セキュリティグループの用意

移行元RDSと移行先RDSにアタッチするセキュリティグループのインバウンドルールに以下の2つのルールを記載します。
image.png

DMSでレプリケーションインスタンスを作成

AWS DMSでレプリケーションインスタンスを作成します。
セキュリティグループはインバウンドのルールはなし、アウトバウンドの設定はデフォルトの状態のものを利用しました。
image.png
qiita-2.png
qiita-3.png

DMSでエンドポイントを作成

エンドポイントは以下の4つを作成する必要があります。

  • ソースエンドポイント:移行元RDSのsample_db1用
  • ソースエンドポイント:移行元RDSのsample_db2用
  • ターゲットエンドポイント:移行先RDSのsample_db1用
  • ターゲットエンドポイント:移行先RDSのsample_db2用

作成の流れは以下の通りです。
エンドポイントの作成の前にテストの実行をして、レプリケーションインスタンスから移行元RDSにアクセスできることを確認します。
image.png
image.png
qiita-5.png

データベース移行タスクを作成&実行

4つのエンドポイントを作成したら、データベース移行タスクを作成して実行します。
移行元RDSにDBは2つありどちらのデータも移行するので、データベース移行タスクも2つ作成します。
qiita-6.png
image.png
image.png
image.png
image.png

移行先DBの確認

2つのデータベース移行タスクのステータスが「ロード完了」になったら、移行先RDSにpsqlを使って接続し、DBやテーブル、データの数を確認します。
image.png
image.png

想定外だったこと

  • AWS DMSを使えば移行元DBクラスターを丸ごと移行できると思っていましたが、AWS DMSはDB単位でデータを移行する必要がありました
  • AWS DMSでエンドポイントを作成する前に、移行先RDSに予めDBを作成しておく必要がありました。
  • AWS DMSではロール(ユーザ)は移行できないので、移行先RDSに手動でロールを作るか、別の移行方法を考える必要があります。

参考

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0