AWS / SAP-C02

SAP-C02-158 · セクション 18 / タスク 4.2

AWS DMSによるDatabase Migration

AWS Database Migration Service / Source Endpoint / Target Endpoint / Full Load / CDC / Minimal Downtime / Replication

データベースをAWSへ移行するときは、既存データを一度コピーするだけでは不十分な場合があります。

移行準備中にも業務が継続しているデータベースでは、既存データを最初に移行し、移行中に発生する変更を継続的に反映して移行先との差を小さくし、短い業務停止で切り替える構成が必要になります。

AWS Database Migration Service(AWS DMS)は、Source EndpointからReplicationを経てTarget Endpointへデータを移し、Full Load、CDC、Full Load + CDCを使い分けることで、既存データの移行と継続的な変更反映を実現します。

1. AWS DMSはデータベースのデータを移行する

AWS DMSは、データストア間でデータを移行・Replicationするためのサービスです。

移行元データベース
↓
Source Endpoint
↓
AWS DMS
↓
Target Endpoint
↓
移行先データベース

Source EndpointとTarget Endpointによって、どこからどこへデータを移すかを定義し、その間でAWS DMSがFull LoadやCDCを実行します。

2. Source Endpointは移行元への接続情報

Source Endpointは、AWS DMSがどの移行元データストアへ接続するかを定義します。

Endpointには、データストアの種類や接続先など、AWS DMSが対象へ接続するために必要な情報を設定します。

オンプレミスMySQL
↓
Source Endpoint

Amazon RDS for Oracle
↓
Source Endpoint

Source Endpointそのものにデータを保存するわけではありません。Source EndpointはAWS DMSが移行元へ接続するための定義です。

3. Target Endpointは移行先への接続情報

Target Endpointは、AWS DMSがどの移行先データストアへデータを書き込むかを定義します。

Source Endpoint
オンプレミスデータベース
↓
AWS DMS
↓
Target Endpoint
Amazon RDS

Source EndpointとTarget Endpointを逆に考えないことが重要です。

Source Endpoint
→ 読み取り元

Target Endpoint
→ 書き込み先

4. Endpointを作成しただけではReplicationは始まらない

Source EndpointとTarget Endpointを作成しても、それだけでデータ移行が開始されるわけではありません。

Source Endpoint
+
Target Endpoint
+
Replicationを実行する基盤
+
移行タイプ
+
移行対象

またEndpointの設定が正しくても、ネットワーク到達性、データベースの認証情報、必要な権限などが不足していればAWS DMSは対象データストアへ接続できません。

5. Replicationを実行する基盤が移行元と移行先の間に入る

AWS DMSでは、移行元と移行先の間でReplication処理を実行する基盤が必要です。

DMS Standardでは、Source EndpointとTarget Endpointの間でレプリケーションインスタンスが処理を実行します。

Source Endpoint
↓
レプリケーションインスタンス
↓
Target Endpoint

現在はAWS DMS Serverlessも利用できます。DMS Serverlessでは、利用者がレプリケーションインスタンスを個別に作成・サイズ選定する代わりに、AWS DMSがReplicationに必要なキャパシティをプロビジョニングします。

DMS Standard
→ レプリケーションインスタンスを管理

DMS Serverless
→ Replication用キャパシティをAWS DMSが管理

どちらの場合でも、移行元からデータを読み取り、移行先へ反映する基本的な役割は同じです。

6. Full Loadは既存データを移行する

Full Loadでは、移行開始時点で存在するデータを移行元から移行先へ移行します。

移行元データベース

既存データ
AAAA
BBBB
CCCC

↓ Full Load

移行先データベース

AAAA
BBBB
CCCC

移行前に移行元への更新を停止でき、既存データを移行してから移行先へ切り替えられるなら、Full Loadだけで成立する場合があります。

ただしFull Loadだけでは、移行中に移行元で新たに発生した変更を継続的に移行先へReplicationすることを目的にはしていません。

7. CDCは移行元で発生する変更を継続的に反映する

CDCはChange Data Captureの略です。CDCでは、移行元データベースで発生したINSERT、UPDATE、DELETEなどの変更を取得して移行先へ反映します。

移行元
既存データ
+
新しい変更
↓
変更を取得
↓
AWS DMS
↓
移行先へ反映

AWS DMSは対応するデータベースのトランザクションログなどから変更を読み取ってReplicationします。

CDCの重要な目的は、移行準備中も移行元を更新可能にすることです。

8. CDC-onlyでは既存データ全体をFull Loadしない

AWS DMSではCDCだけを実行することもできます。

既存データは別の方法ですでに移行先へ配置済み
↓
その後の変更だけをAWS DMSでReplication

CDCは既存データも必ずすべてコピーするという意味ではありません。既存データを移行する必要があるならFull Loadを組み合わせます。

9. Full Load + CDCは既存データと継続変更の両方を扱う

業務を継続しながらデータベースを移行したい場合は、Full LoadとCDCを組み合わせます。

移行元で業務を継続
↓
既存データをFull Load
↓
Full Load中にも移行元で変更が発生
↓
変更を取得
↓
既存データのロード後に変更を移行先へ反映
↓
CDCを継続

その結果、移行元と移行先の差を小さくしながら移行準備を進めることができます。

10. Full Load中に発生した変更を失わないように扱う

Full Load + CDCでは、Full Load中だから移行元を完全停止する必要はありません。

AWS DMSはFull Load中に対象テーブルで発生した変更を取得し、ロードされた既存データへ変更を反映していきます。

既存データ
↓
Full Load

同時に発生する変更
↓
一時的に保持
↓
対象データのFull Load完了後に適用
↓
継続CDC

これにより、移行元を利用しながら初期移行を進められます。

11. Minimal Downtimeでは事前Replicationと最終切り替えを分ける

Minimal Downtime(最小限の停止時間)を実現したい場合、全データを業務停止後に初めてコピーする方式では停止時間が長くなります。

業務稼働中
↓
Full Load
↓
CDC
↓
移行先との差を縮小

切り替え時
↓
移行元への書き込みを停止
↓
残っている変更を移行先へ反映
↓
移行先が追い付いたことを確認
↓
アプリケーションを移行先へ切り替え

これにより、データベース全体の移行時間と業務停止時間を分離し、業務停止を最終切り替え付近へ集中できます。

12. Minimal Downtimeは停止時間ゼロを意味しない

Full Load + CDCを利用しても、必ず停止時間0になるわけではありません。

最終切り替えでは、移行元への新規書き込みを止める、残りのReplicationを完了する、移行先の状態を確認する、アプリケーションの接続先を変更するなどの処理が必要になる場合があります。

重要なのは、Full Loadに必要な時間をそのまま業務停止時間にしないことです。初期データを事前に移し、CDCで差分を小さくすることで、最終的な停止時間を短縮します。

13. CDCは「必ずリアルタイム」ではない

CDCによって移行元の変更を継続Replicationできますが、移行元で発生した変更が必ず即時に移行先へ反映されると考えてはいけません。

CDCのレイテンシは、移行元の負荷、変更量、ネットワーク、Replication側のリソース、移行先の書き込み性能などの影響を受けます。

AWS DMSのCDCは、サブ秒の反映を保証するリアルタイム同期サービスとして扱わないことが重要です。

14. 切り替え前にはReplicationの遅延を見る

Minimal Downtimeで切り替える場合、Full Load完了だけを確認して切り替えるのは不十分です。

Full Loadが終わっていても、移行元で発生した変更がまだ移行先へ反映中という可能性があります。

Full Load完了
↓
CDC継続
↓
移行元と移行先との差を小さくする
↓
移行元への書き込み停止
↓
残りの変更が反映されたことを確認
↓
切り替え

15. Source Endpoint / Target EndpointとReplicationを混同しない

要素役割
Source Endpoint移行元データストアへの接続定義
Target Endpoint移行先データストアへの接続定義
Replication移行元から読み取り、移行先へデータを反映
Full Load既存データを移行
CDC移行元で発生する継続変更を反映
Full Load + CDC既存データ移行と継続変更反映を組み合わせる
Minimal Downtime事前移行と継続同期によって最終停止時間を短くする

Endpointは「場所を定義するもの」、Replicationは「実際にデータを移す処理」と分けて考えます。

16. このページではデータ移行とReplicationに焦点を当てる

AWS DMSには、データ移行だけでなくスキーマ変換に関する機能もあります。

ただし、ここでは詳細な変換方式やデータベースエンジン変更の判断には踏み込まず、Source Endpoint、Full Load / CDC、Replication、Target Endpointという、データと継続変更を移行先へ反映する仕組みに焦点を当てます。

17. 全体の流れ

移行元データベース
↓
Source Endpoint
↓
Replication
↓
Full Load
+
CDC
↓
Target Endpoint
↓
移行先データベース

↓

Full Load完了
↓
CDC継続
↓
移行元と移行先の差を縮小
↓
移行元への書き込み停止
↓
残りの変更を反映
↓
移行先へ切り替え

SAP-C02では、AWS DMSを単なるデータコピーサービスとしてではなく、Full LoadとCDCを組み合わせてMinimal Downtimeのデータベース移行を実現する仕組みとして理解することが重要です。