移行プレイブック: MongoDB から Amazon DocumentDB への移行 - Amazon DocumentDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

移行プレイブック: MongoDB から Amazon DocumentDB への移行

この移行プレイブックでは、MongoDB データベースから Amazon DocumentDB への移行に役立つリソースと手順について説明します。

移行プロセス

以下は、MongoDB データベースから Amazon DocumentDB へのデータの移行に通常必要となるステップの概要です。

ステップ 1: 互換性と機能の違い

Amazon DocumentDB は、Apache 2.0 オープンソースの MongoDB 3.6、4.0、5.0 の各 API と互換性があります。その結果、MongoDB で使用していたのと同じドライバー、アプリケーション、ツールをそのままあるいはほとんど変更せずに Amazon DocumentDB で使用できます。

最初のステップは、MongoDB データベース上でお使いのアプリケーションが使用する演算子やインデックスの Amazon DocumentDB との互換性と Amazon DocumentDB での可用性をチェックし、MongoDB と Amazon DocumentDB の機能の違いを把握することです。

演算子の互換性

Amazon DocumentDB 互換性ツール* を使用すると、サポートされていない演算子をお使いのアプリケーションがクエリに使用しているかどうかを簡単に検出できます。このツールは、MongoDB データベースサーバーログファイルまたはアプリケーションソースコードをスキャンして、サポートされていない演算子をレポートします。サポートされていない演算子の使用が見つかった場合は、サポートされていない演算子の使用を回避するようにアプリケーションを変更していただく必要があります。

お使いのセットアップで使用している MongoDB 演算子とサポートされている Amazon DocumentDB 演算子の互換性を確認するには、以下を実行します。

git clone https://github.com/awslabs/amazon-documentdb-tools.git cd amazon-documentdb-tools/compat-tool/ python3 compat.py --version <Amazon DocumentDB version> --directory <mongodb logfiles/source code>

詳細については、「Amazon DocumentDB でサポートされている MongoDB APIs、オペレーション、データ型」を参照してください。

* 公式には AWSでサポートされてはいません。

インデックスの互換性

Amazon DocumentDB インデックスツール* を使用して、Amazon DocumentDB でサポートされていないインデックスタイプを現在お客様が使用されているかどうかを確認できます。このツールでは、インデックス定義を読み取るためにお客様のソースデータベースへの接続が必要になります。

そのためには、まず --dump-indexes オプションを使用してインデックス定義を別のディレクトリにダンプする必要があります。次に、--show-issues オプションを使用してツールを実行し、ディレクトリ内に互換性のないインデックスがないかをチェックします。

インデックスのエクスポート:

git clone https://github.com/awslabs/amazon-documentdb-tools.git sudo pip install -r amazon-documentdb-tools/index-tool/requirements.txt mkdir <directory to dump index definitions> python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir <directory> --uri <source-mongodb-uri>

互換性のないインデックスがないかのチェック:

python3 migrationtools/documentdb_index_tool.py --show-issues --dir <dumped-index-definitions-directory>

サポートされていないインデックスタイプが見つかった場合は、お使いのアプリケーションまたはデータモデルの変更により、互換性問題に対応するか、もしくはそれらのインデックスの使用を回避していただく必要があります。

Amazon DocumentDB でサポートされているインデックスタイプとプロパティの詳細については、「インデックスとインデックスプロパティ」および「Amazon DocumentDB でのインデックス使用方法」を参照してください。

* 公式には AWSでサポートされてはいません。

機能的な違い

機能面での違いを把握するには、「MongoDB との機能的な違い」を参照してください。

ステップ 2: 概念実証

Amazon DocumentDB 上でお使いのアプリケーションまたは通常のテストスイートを実行して概念実証を実行し、機能性とパフォーマンスをテストします。テストの実行には、Amazon DocumentDB クラスターにデータを入力する必要があります。例えば、mongodump および mongorestore ツールを使用して、ソース MongoDB からデータをコピーできます。

機能テスト

Amazon DocumentDB クラスター (「Amazon DocumentDB クラスターの作成」を参照) を作成してお使いのアプリケーションまたは機能テストスイートを実行し、すべてのアプリケーションワークフローが Amazon DocumentDB でシームレスに動作するかどうかを確認します。

パフォーマンステスト

パフォーマンステストとして、お使いのアプリケーションまたはパフォーマンステストスイートを Amazon DocumentDB 上で動作させて本番環境のワークロードに近いワークロードを処理し、該当するレイテンシー要件を満たすかどうかを確認します。必要に応じてワークロードのパフォーマンスをファインチューニングするか、Amazon DocumentDB クラスターをスケーリングします。詳細については、パフォーマンスとリソース使用率およびAmazon DocumentDB クラスターのスケーリングを参照してください。

最適なパフォーマンスを得るには、適切なインスタンスタイプで Amazon DocumentDB クラスターのサイズを決めることが重要です。詳細については、「インスタンスのサイズ指定」に記載のベストプラクティスを参照してください。

Amazon DocumentDB サイズ計算ツール* を使用して、必要となる Amazon DocumentDB クラスターのサイズを判断できます。

* 公式には AWSでサポートされてはいません。

フェイルオーバーテスト

マルチノードクラスターでの Amazon DocumentDB プライマリノードの再起動、フェイルオーバー、または削除操作に対するアプリケーションの応答、およびレプリカノードの再起動または削除動作をモニタリングするとよいでしょう。これにより、お使いのアプリケーションがこれらのイベントに対して回復力があるかどうかを確認できます。詳細については、「フェイルオーバーのテスト」を参照してください。

アプリケーションにおいて許容すべき例外とその効率的な処理方法を理解するには、「Amazon DocumentDB を使用した回復力のあるアプリケーションの構築」を参照してください。

注記

Amazon DocumentDB での実際のワークロードのテストに勝るものはありません。

ステップ 3: データを移行する

概念実証が成功したら、データを Amazon DocumentDB に移行します。ほとんどのお客様は、オンラインまたはオフラインの移行アプローチを使用してデータを移行します。

オンライン移行

オンライン移行方法を使用すると、数ギガバイトから数テラバイトまでのデータを、ソースデータベースから Amazon DocumentDB へとほとんどダウンタイムなしに移行できます。詳細については、AWS Database Migration Service 「 (AWS DMS)」を参照してください。

MongoDB データベースから移行する場合は、 AWS DMS を使用して全ロードを実行し、継続的な変更をレプリケートできます。

詳しい手順については、「オンライン移行による Amazon DocumentDB への移行」を参照してください。

また「AWS Database Migration Service ユーザーガイド」の「Amazon DocumentDB を AWS Database Migration Serviceのターゲットとして使用する」でも追加の情報を確認できます。

注意点 AWS DMS:

  • セグメンテーション: を使用してマルチテラバイトデータベースを移行する場合 AWS DMS、DMS の全ロードはデフォルトでコレクションごとにシングルスレッド化されるため、デフォルト設定では遅くなる場合があり、移行時間が長くなります。大規模なデータベース移行のフルロードを高速化するには、 AWS DMSのセグメンテーション機能を使用できます。

    でセグメンテーションを使用する方法の詳細については AWS DMS、「 での自動セグメンテーションの使用 AWS DMS」を参照してください。

  • DMS インスタンスタイプ: データ移行を高速化するには、適切な DMS インスタンス を選択する必要があります。

オフライン移行

オフライン移行は、データベースを Amazon DocumentDB に移動する最もシンプルなアプローチです。このアプローチは、主に POC と、移行中に書き込みダウンタイムが発生してもあまり問題のないワークロードに使用されます。

詳しい手順については、「オフライン移行による MongoDB から Amazon DocumentDB への移行」を参照してください。

ステップ 4: データ検証

データが正常に移行されたら、データの正確性を検証して信頼性を確立します。 AWS DMS 移行タスクコンソールには、移行されたデータメトリクスがあります。詳細については、「移行データの検証」を参照してください。

Amazon DocumentDB DataDiffer Tool* を使用して、ソースコレクションとターゲットコレクション間のデータ整合性を検証することもできます。

* 公式には AWSでサポートされてはいません。

ステップ 5: アプリケーションのカットオーバー

これには、Amazon DocumentDB クラスターを使用するようにアプリケーションのデータベース接続文字列を変更することが含まれます。

Amazon DocumentDB への接続のさらなる詳細については、レプリカセットとしての Amazon DocumentDB に接続する を参照してください。

オンライン移行

全データロードが完了したら、 はソースから Amazon DocumentDB への継続的な変更のレプリケート AWS DMS を続行します。必要な変更がすべて反映され、データ検証チェックが完了したら、Amazon DocumentDB のカットオーバーを実行できます。

オフライン移行

完全なデータロードとデータ検証チェックが完了したら、Amazon DocumentDB へのカットオーバーを実行できます。

追加リソース

移行に役立つ追加のリソースをいくつか紹介します。

* 公式には AWSでサポートされてはいません。