スケーラブルな共有データベースのローリング アップデートの実行

スケーラブルな共有データベース構成を更新するためにレポート ボリュームのセットを交互に使用する場合、ローリング アップデートまたは同期更新のいずれかによってデータベースを更新できます。更新中、一時的にサーバー インスタンスごとにクライアントに返される結果が異なってもかまわない場合は、ローリング アップデートが適しています。

ローリング アップデートでは一度に 1 台のレポート サーバーで更新が完了します。最初の更新から最後の更新までの間、クライアントは 1 つ以上のサーバー インスタンスで古いバージョンと新しいバージョンのデータベースをそれぞれ使用できます。通常、2 つのバージョンが重複する期間を最小限に抑えるために、ローリング アップデートはできるだけ早く完了します。

次の図にローリング アップデートのようすを示します。

スケーラブルな共有データベースのローリング アップグレード

  1. ボリューム A がすべてのサーバーでマウントされており、レポート データベースがサーバー インスタンスにアタッチされている状態で、ボリューム B のレポート データベースを再構築します。

  2. ボリューム A のデータベースを最初のレポート サーバーのサーバー インスタンスからデタッチし、ボリューム A をマウント解除します。すぐにボリューム B を最初のレポート サーバーにマウントして、更新済みのレポート データベースをサーバー インスタンスにアタッチします。

  3. ボリューム A のデータベースを 2 番目のレポート サーバーのサーバー インスタンスからデタッチし、ボリューム A をマウント解除します。すぐにボリューム B を 2 番目のレポート サーバーにマウントして、更新済みのレポート データベースをサーバー インスタンスにアタッチします。

  4. ボリューム A のデータベースを 3 番目のレポート サーバーのサーバー インスタンスからデタッチし、ボリューム A をマウント解除します。すぐにボリューム B を 3 番目のレポート サーバーにマウントして、更新済みのレポート データベースをサーバー インスタンスにアタッチします。

  5. すべてのレポート サーバーでボリューム B がマウントされ、更新済みのデータベースがスケーラブルな共有データベースとして使用可能な状態で、ボリューム A でレポート データベースの構築を実行します。

ローリング アップデートでは、ビジネス要件に応じて、期限を設けずに現在のクエリが完了するのを待ったり、限られた時間枠内でのクエリの実行を許可したりできます。

期限のないローリング アップデート

この方法では、データベース管理者は、あるレポート サーバーで長い時間がかかるクエリが完了するのを待っている間に、別のレポート サーバーでデータベースを更新できます。この方法は、次のビジネス要件に対処します。

  • レポート サーバーは、同期し続ける必要がありません。つまり、古いバージョンと更新されたバージョンのデータベースは、異なるレポート サーバーで一時的に共存できます。

  • 更新を終えるための時間枠が限定されていません。つまり、期限よりも現在実行中のクエリを保持することの方が重要です。

この形のローリング アップデートを行うには、各レポート サーバーで次の手順を実行します。

  1. 新しいデータベースのアタッチ フェーズを開始するため、新しいデータベースが格納されている別のボリューム セットをレポート サーバーにマウントします。

    注意注意

    ローリング アップデートの場合も、いずれかのレポート サーバーで次の手順に進む前に、すべてのレポート サーバーでこの手順を実行できます。

  2. 実行中のすべてのクエリを保護するため、元のレポート ボリュームに対する I/O 動作を停止します。特定のサーバー インスタンスで、長時間かかるクエリにより更新が遅れる場合は、完了まで待ちます。サーバー インスタンスですべてのクエリが完了した後で、そのサーバーでのデタッチ フェーズを完了します。

  3. 新しいレポート データベースをサーバー インスタンスにアタッチし、レポート クエリ用のスケーラブルな共有データベースとして使用可能にします。

上記の手順を各レポート サーバーで繰り返します。

レポート サーバーのローリング アップデート (短時間での完了)

この方法では、データベース管理者は、中断のないレポート サービスを維持できます。それには、新しいクエリ用に数台のレポート サーバーで古いバージョンのデータベースを短時間使用可能なままにし、その間に別のレポート サーバーでデータベースを更新します。この方法は、次のビジネス要件に対処します。

  • レポート サーバーは、同期し続ける必要がありません。つまり、古いバージョンと更新されたバージョンのデータベースは、異なるレポート サーバーで一時的に共存できます。

  • 期限に間に合うように、更新はできるだけ早く完了する必要があります。期限を守ることは、現在実行中のクエリを保持することよりも重要です。

時間の遵守が必要なローリング アップデートを行うには、同時に 1 台のレポート サーバーで次の手順を実行します。

  1. 新しいデータベースのアタッチ フェーズを開始するため、新しいデータベースが格納されている別のボリューム セットをレポート サーバーにマウントします。

    注意注意

    ローリング アップデートの場合も、いずれかのレポート サーバーで次の手順に進む前に、すべてのレポート サーバーでこの手順を実行できます。

  2. レポート ボリュームに対する I/O 動作を停止し、必要に応じて、レポート データベースをデタッチする前に、サーバー インスタンスで短いクエリが完了するのを待ちます。

  3. そのサーバーでデタッチ フェーズを完了します。

  4. 新しいレポート データベースをアタッチし、レポート用のスケーラブルな共有データベースとして使用可能にします。新しいデータベースのコピーに対するクエリは、古いレポート データベースのコピーに対するクエリと結果が異なる場合があります。

このようなローリング アップデートを行うことで、全体のレポート機能が中断されることはありません。これにより、いくつかのサーバー インスタンスで非常に長い時間がかかるトランザクションが実行可能となります。しかし、すべてのレポート データベースを更新するための時間枠は限られているため、長時間かかるクエリによりサーバー インスタンスの更新が大幅に遅れる場合は、そのクエリを中止する必要があります。レポート データベースの更新を終えた後で同じサーバー インスタンスでクエリを再実行したり、更新済みのサーバーですぐに再起動することができます。