LoginSignup
2
0

AWS Database Migration Service(DMS)でDb2をS3に一括移行&(CDC的な)継続的レプリケーションする

Last updated at Posted at 2024-03-01

はじめに

AWS Database Migration Service(以下、DMS)の設定方法や挙動を確認する目的で、Db2にあるデータをS3に連携できるかどうかを試した記録です。

前提

実施環境として、データソースとなるDb2はCloud Pak for Data上にデプロイされたものを使用しました。

Cloud Pak for Data:Version 4.7
Openshift:Version 4.12
Cloud:IBM Cloud
(外部公開用のPublic Load Balancer IPを使用して接続)

こちらを見ると2024年3月1日現在DMSがデータソースとして対応しているDb2のバージョンが確認できます。

- IBM DB 2 for Linux、UNIX、および Windows (Db2 LUW) 
    - バージョン 9.7、すべてのフィックスパック
    - バージョン 10.1、すべてのフィックスパック
    - バージョン 10.5、フィックスパック 5 を除くすべてのフィックスパック
    - バージョン 11.1、すべてのフィックスパック
    - バージョン 11.5 Mods (1~8)、フィックスパック 0 のみ
- IBM Db2 for z/OS
    - バージョン 12
- Amazon RDS for IBM Db2 LUW

用意したDb2環境は上記の対応製品・バージョンに該当していないような気もしましたが、そこはあまりこだわらず試しています。

参考:DMSのAWS公式

ゴール

image.png

実施手順

  • DMS Subnet Groupを作成する
    • サブネットグループの作成を選択
    • VPC、サブネットを選択
  • レプリケーションインスタンスを作成する
    • インスタンス、ストレージ、接続とセキュリティの設定を行う
  • ソース側のDMSエンドポイントを作成する
    • エンドポイントの作成を選択
    • エンドポイントを設定
    • 接続テストの実施
  • ターゲット側のDMSエンドポイントを作成する
    • エンドポイントの作成を選択
    • エンドポイントを設定
    • 接続テストの実施
  • データベース移行タスクを作成する
    • データ移行タスクを設定
    • データ連携対象となるスキーマ名、テーブル名を指定
    • 補足:対象となるテーブルおよびレコード格納状況
    • タスクの実行(ここでは前述の移行タスクの設定によりタスク作成直後に自動実行される)
  • 断面データ(全量)の連携内容を確認する
    • ターゲットとなるS3の確認
      • S3にオブジェクトが配置されたことの確認
      • オブジェクトの中身の確認
  • 更新差分データの連携内容を確認する
    • INSERT
      • SQL実行
      • S3にオブジェクトが配置されたことの確認
      • オブジェクトの中身の確認
    • UPDATE
      • SQL実行
      • S3にオブジェクトが配置されたことの確認
      • オブジェクトの中身の確認
    • DELETE
      • SQL実行
      • S3にオブジェクトが配置されたことの確認
      • オブジェクトの中身の確認

やってみた

  • DMS Subnet Groupを作成する

    • サブネットグループの作成を選択
      image.png

    • VPC、サブネットを選択
      image.png

  • レプリケーションインスタンスを作成する

    • インスタンス、ストレージ、接続とセキュリティの設定を行う
      image.png
      image.png
      image.png
      image.png
  • ソース側のDMSエンドポイントを作成する

    • エンドポイントの作成を選択
      image.png

    • エンドポイントを設定
      image.png
      image.png
      image.png
      image.png

    • 接続テストの実施
      image.png
      「テストの実行」ボタンをクリックしてステータスがSuccessfulになったら接続成功。
      image.png
      「エンドポイントの作成」ボタンをクリックすればエンドポイント作成は完了。

  • ターゲット側のDMSエンドポイントを作成する

    • エンドポイントの作成を選択
      image.png

    • エンドポイントを設定
      image.png
      image.png

    • 接続テストの実施
      image.png
      「テストの実行」ボタンをクリックしてステータスがSuccessfulになったら接続成功。
      「エンドポイントの作成」ボタンをクリックすればエンドポイント作成は完了。

  • データベース移行タスクを作成する

    • データ移行タスクを設定
      image.png
      image.png
      image.png
      (あまり何も考えずにデフォルトのままにしている)

    • データ連携対象となるスキーマ名、テーブル名を指定
      image.png
      image.png

    • 補足:対象となるテーブルおよびレコード格納状況
      image.png

    • タスクの実行(ここでは前述の移行タスクの設定によりタスク作成直後に自動実行される)
      image.png
      スターテス欄より、全量のロードが実行されて完了した後、継続的にレプリケーションが実行されていることがわかる。

  • 断面データ(全量)の連携内容を確認する

    • ターゲットとなるS3の確認
      • S3にオブジェクトが配置されたことの確認
        image.png
        image.png

      • オブジェクトの中身の確認
        image.png
        データソースのテーブルにある全レコードがCSV形式で収録されていることを確認できた。

  • 更新差分データの連携内容を確認する

    • INSERT

      • SQL実行
        image.png

      • S3にオブジェクトが配置されたことの確認
        image.png
        (ちなみに、INSERTしてから1分以上かかってS3にオブジェクトが配置された)

      • オブジェクトの中身の確認
        image.png
        更新差分データの先頭には更新の種類を示す記号がセットされたレコードがS3オブジェクトに収録されている。(INSERTは「I」)

    • UPDATE

      • SQL実行
        image.png

      • S3にオブジェクトが配置されたことの確認
        image.png

      • オブジェクトの中身の確認
        image.png
        (UPDATEは「U」)

    • DELETE

      • SQL実行
        image.png

      • S3にオブジェクトが配置されたことの確認
        image.png

      • オブジェクトの中身の確認
        image.png
        (DELETEは「D」)

ゴールとして設定していたことが確認できました。

注意点

データソースの種類によって様々な制約があるようなので利用前にこちらの公式情報を確認しておく必要があります。
以下はその一例です。
image.png

まとめ

DMSによってDb2にあるデータをS3に一括移行する方法と継続的レプリケーションをする方法を確認しました。
色々と制約はありそうですが、取っ掛かりとして参考になればと思います。

2
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
2
0