Day 20: データベース移行サービス:DMSでオンプレミスからAWSへ
皆さん、こんにちは!「AWSデータベース・ストレージ完全攻略」のDay 20へようこそ!
昨日のDay 19では、データ間の関係性分析に特化したグラフデータベース、Amazon Neptuneを学びました。これまでのDaysで、RDS、Aurora、DynamoDB、ElastiCache、Redshift、そして本日Neptuneと、AWSが提供する多様なデータベース・ストレージサービスを網羅してきました。これで、アプリケーションや分析ワークロードの要件に応じて適切なデータベースを選択する知識が身についたはずです。
しかし、これらの素晴らしいAWSデータベースサービスを利用するためには、多くの場合、既存のオンプレミス環境や他のクラウド上にあるデータベースからデータを移行する必要があります。手動での移行は複雑で時間もかかり、ダウンタイムのリスクも伴います。
今日のDay 20では、その課題を解決するためのAWSの専門サービス、 AWS Database Migration Service (DMS) に焦点を当てます。DMSがどのようにして多様なデータベース間の移行をシンプルかつ安全に行うのか、その仕組みと特徴を詳しく見ていきましょう。
1. データベース移行の課題とDMSの役割
データベース移行は、単にデータをコピーするだけではありません。以下のような多くの課題が伴います。
- 異種データベース間の移行: OracleからPostgreSQL、SQL ServerからAurora MySQLなど、異なるデータベースエンジン間でのスキーマやデータ型の変換が必要。
- ダウンタイムの最小化: 移行中にアプリケーションの停止時間を最小限に抑える必要がある。
- データ整合性: 移行中にデータが破損したり、不整合が生じたりしないことを保証する必要がある。
- 複雑な設定と管理: 移行ツールのインストール、設定、監視、エラー処理など、専門知識と労力が必要。
- ネットワークとセキュリティ: 大量のデータを安全かつ効率的に転送するためのネットワーク設定とセキュリティ対策。
AWS Database Migration Service (DMS) は、これらの課題を解決するために設計されたフルマネージドのサービスです。DMSは、多様なデータベースをソースおよびターゲットとしてサポートし、 継続的なデータレプリケーション(CDC: Change Data Capture) を可能にすることで、ダウンタイムを最小限に抑えた移行を実現します。
2. AWS Database Migration Service (DMS) の概要
DMSは、データベースの移行プロセスを簡素化、自動化し、ダウンタイムを最小限に抑えることを目的としています。
DMSの主な特徴:
-
多様なソースとターゲットのサポート:
- ソース: オンプレミス、EC2、RDS、他のクラウド(Azure SQL Database, Google Cloud SQLなど)の多くのRDBMS(Oracle, SQL Server, MySQL, PostgreSQL, MariaDB, Db2, SAP ASEなど)、NoSQLデータベース(MongoDB, DynamoDBなど)、データウェアハウス(Redshiftなど)、S3、Kinesisなど。
- ターゲット: RDS、Aurora、DynamoDB、Redshift、S3、OpenSearch Service、DocumentDB、Kinesisなど、AWSの主要なデータベース・ストレージサービス。
- 同種移行 (Homogeneous Migration): ソースとターゲットのデータベースエンジンが同じ場合(例: RDS MySQLからAurora MySQL)。
- 異種移行 (Heterogeneous Migration): ソースとターゲットのデータベースエンジンが異なる場合(例: OracleからAurora PostgreSQL)。DMSはスキーマ変換をサポートしませんが、後述のAWS SCTと連携します。
-
継続的なデータレプリケーション (CDC):
- ソースデータベースから既存のデータを一度ロードするだけでなく、移行中にソースデータベースで発生する変更(挿入、更新、削除)をリアルタイムでキャプチャし、ターゲットデータベースに適用できます。
- これにより、アプリケーションのダウンタイムを最小限に抑えつつ、データを移行できます(最終的な切り替え時のみ短時間の停止で済む)。
-
フルマネージド:
- 移行プロセスに必要なレプリケーションインスタンスのプロビジョニング、セットアップ、パッチ適用、監視、スケーリングなどはすべてAWSが担当します。
-
移行タイプ:
- フルロードのみ (Full Load Only): 既存のデータのみを一度だけ移行します。
- フルロード + CDC (Full Load + CDC): 既存のデータを移行した後、継続的に変更をレプリケートします。
- CDCのみ (CDC Only): 既存のデータは手動で移行済みで、以降の変更のみをレプリケートします。
-
高可用性オプション:
- レプリケーションインスタンスをMulti-AZでデプロイすることで、可用性を高めることができます。
3. DMSの主要なコンポーネント
DMSを利用して移行を実行するには、主に以下のコンポーネントを設定します。
a. レプリケーションインスタンス (Replication Instance)
- DMSが移行を実行するために使用するEC2インスタンスです。
- ソースデータベースからデータを読み込み、ターゲットデータベースにデータを書き込む処理を実行します。
- インスタンスタイプ(CPU、メモリ)を選択し、移行するデータ量や変更頻度に応じて適切なサイズを選びます。
- Multi-AZオプションを有効にすることで、可用性を高めることができます。
b. エンドポイント (Endpoints)
- ソースエンドポイント: 移行元のデータベースへの接続情報(データベースの種類、サーバー名、ポート、ユーザー名、パスワードなど)を定義します。
- ターゲットエンドポイント: 移行先のデータベースへの接続情報(データベースの種類、サーバー名、ポート、ユーザー名、パスワードなど)を定義します。
c. タスク (Tasks)
- 実際のデータ移行とレプリケーションの定義です。
- 以下の情報を設定します。
- ソースエンドポイントとターゲットエンドポイント。
- レプリケーションインスタンス。
-
移行タイプ:
- 既存のデータ移行 (Migrate existing data)
- 既存のデータ移行と継続的な変更レプリケーション (Migrate existing data and replicate ongoing changes)
- 変更のレプリケーションのみ (Replicate data changes only)
- テーブルマッピング: どのスキーマ、どのテーブルを移行するかを定義します。フィルタリングや簡単な変換(例: スキーマ名の変更)も可能です。
- タスク設定: ログ設定、エラー処理、データ検証など、詳細な設定を行います。
4. 異種データベース移行におけるAWS Schema Conversion Tool (AWS SCT) との連携
DMSはデータ移行に特化しており、異なるデータベースエンジン間でのスキーマやコードの自動変換は行いません。異種データベース移行の場合、スキーマの変更、データ型のマッピング、ストアドプロシージャ、ファンクション、トリガーなどのデータベースコードの変換が必要になります。
そこで役立つのが、AWS Schema Conversion Tool (AWS SCT) です。
- 役割: ソースデータベースのスキーマ、ビュー、ストアドプロシージャ、ファンクション、トリガーなどを自動的に分析し、ターゲットデータベースエンジンに適した形式に変換します。
- 手動での介入: 完全に自動変換できない部分(難易度の高いSQL文や固有の機能など)は、SCTがレポートを作成し、手動での介入が必要な箇所を提示します。
-
移行ワークフロー:
- AWS SCTでスキーマとコードを変換: ソースDBのスキーマとコードをSCTでターゲットDB用に変換し、ターゲットDBに適用します。
- AWS DMSでデータを移行: DMSを使用して、ソースDBからターゲットDBへデータを移行し、必要に応じてCDCで継続的なレプリケーションを設定します。
5. DMSを活用した移行シナリオ
a. 同種データベース移行 (Homogeneous Migration)
- 例: オンプレミスのMySQLからAmazon RDS for MySQL、またはRDS for PostgreSQLからAurora PostgreSQLへ。
-
プロセス:
- DMSレプリケーションインスタンス、ソース/ターゲットエンドポイントを設定。
- DMSタスクを作成し、「既存のデータ移行と継続的な変更レプリケーション」を選択。
- タスクを開始し、フルロードが完了した後、CDCで変更がレプリケートされ続ける。
- アプリケーションの切り替え(DNS変更など)を行う。
- レプリケーションタスクを停止・削除。
- 特徴: スキーマ変換が不要なため、比較的シンプルに移行できます。
b. 異種データベース移行 (Heterogeneous Migration)
- 例: オンプレミスのOracleからAmazon Aurora MySQLへ。
-
プロセス:
- AWS SCT: ソースOracle DBのスキーマとコードを分析し、Aurora MySQL用のSQLスクリプトに変換。必要に応じて手動で調整。
- ターゲットDBへの適用: 変換されたスキーマとコードをAurora MySQLに適用。
- DMS設定: DMSレプリケーションインスタンス、ソースOracleエンドポイント、ターゲットAurora MySQLエンドポイントを設定。
- DMSタスク: タスクを作成し、「既存のデータ移行と継続的な変更レプリケーション」を選択。
- タスクを開始し、フルロード完了後、CDCで変更がレプリケートされ続ける。
- アプリケーションの切り替え(DNS変更など)。
- レプリケーションタスクを停止・削除。
- 特徴: SCTとの連携が必要となり、変換作業とテストに時間と労力がかかりますが、大幅なダウンタイムなしに異なるDBエンジンへの移行が可能になります。
c. データレイクへの継続的なデータ取り込み
DMSは、データベース移行だけでなく、オンプレミスDBからS3やKinesisへの継続的なデータレプリケーションにも利用できます。
- 例: オンプレミスOracle DBの変更ログをリアルタイムでS3にストリーミングし、データレイクに継続的にデータを取り込む。
-
プロセス:
- ソースをOracle DB、ターゲットをS3またはKinesisに設定したDMSタスクを作成。
- DMSがOracle DBの変更をキャプチャし、指定されたフォーマットでS3に書き込むか、Kinesisストリームに送信。
- 活用: リアルタイム分析、機械学習モデルの更新データソース、監査ログの収集。
6. AI企業におけるDMSの活用例
AI企業では、既存のデータソース(オンプレミスDB、SaaSデータなど)をAWSの分析環境やMLサービスに統合する必要が多く、DMSはそのための重要なブリッジとなります。
-
既存データソースのデータレイクへの統合:
- オンプレミスの業務データベース(顧客データ、取引データなど)をDMSで継続的にAmazon S3にレプリケートし、データレイクの基盤とする。これにより、MLモデルの学習データや特徴量エンジニアリングのソースとして利用可能になります。
-
RDBからの特徴量ストアへの移行:
- 既存の顧客データや製品データがRDBMSにある場合、それをDMSでDynamoDB(リアルタイム特徴量ストア用)やRedshift(オフライン特徴量ストア用)に移行・同期させる。
-
レガシーDBのモダナイゼーション:
- AIサービスを構築するにあたり、バックエンドのレガシーなオンプレミスデータベースがボトルネックになる場合、DMSとSCTを使って、AWSの高性能なAuroraやDynamoDBへの移行を支援する。
-
ログデータの集約と分析:
- オンプレミスのアプリケーションから出力されるログデータをDMSでKinesisやS3に継続的にストリーミングし、AWSのリアルタイム分析サービス(Kinesis Analytics)やデータウェアハウス(Redshift)で分析し、AIモデルの改善や運用監視に役立てる。
-
データセットの準備:
- 複数の異なるソースにあるデータを、MLモデルの学習のためにAWS上で一元的に集約する必要がある場合、DMSを使用して効率的にデータをAWSに移行・同期する。
まとめとDay 21への展望
今日のDay 20では、データベースの移行、特にオンプレミス環境からAWSへの移行を効率的かつ安全に行うためのフルマネージドサービス、AWS Database Migration Service (DMS) を学びました。
- DMSが多様なデータベースをソース・ターゲットとしてサポートし、同種・異種移行に対応すること。
- 継続的なデータレプリケーション(CDC) によってダウンタイムを最小限に抑えた移行が可能であること。
- DMSの主要なコンポーネント(レプリケーションインスタンス、エンドポイント、タスク)の役割。
- 異種移行においては、スキーマ変換のためにAWS Schema Conversion Tool (AWS SCT) とDMSを連携させること。
DMSは、レガシーなデータベース資産をAWSの最新のデータベース環境に移行し、クラウドネイティブなAI/MLワークロードを構築するための強力な基盤を提供します。
さて、これで主要なデータベース移行サービスもカバーしました。明日のDay 21からは、いよいよデータ分析の最終段階、BIツールと可視化、そして機械学習サービスとの連携に焦点を当てていきます。まずは、AWSのBIサービスであるAmazon QuickSightの基礎から学んでいきましょう。
それでは、また明日お会いしましょう!