回復力のあるデータ サービスの構築

完了

あなたの組織では、複数のワークロードを環境全体に分散しています。 すべてのワークロードは、安全かつタイムリーに保持されているデータに依存します。 データの回復力を強化するために、さまざまな対策を講じることができます。

このユニットでは、Always On 可用性グループがデータのレプリケートに役に立つしくみについて学習します。 Azure SQL Database の自動バックアップと自動フェールオーバーによって、データの安全がどのように保たれるかを確認します。 また、Azure Cosmos DB geo レプリケーション機能を使用して、他のリージョンにデータを透過的にレプリケートし、読み取りおよび書き込み用にそのデータにアクセスできるようにする方法についても説明します。

Always On 可用性グループを使用してデータベースをレプリケートする

Always On 可用性グループは、仮想マシン上で実行されている SQL Server データベースの高可用性を実現するのに役立ちます。

可用性レプリカには、指定されたデータベースのグループを格納できます。

  • プライマリ レプリカにはプライマリ データベースが保持されます。
  • セカンダリ レプリカでは、プライマリ レプリカの同期されたセカンダリ コピーが保持されます。

障害が発生した場合、セカンダリ レプリカはフェールオーバーのターゲットになります。 プライマリ レプリカは読み取りと書き込みが可能です。 データは、各プライマリ データベースと、関連付けられた各セカンダリ データベースの間で同期されます。

また、セカンダリ レプリカを読み取り可能に設定することもできます。 こうすることで、クライアントは複数のデータベースからデータにアクセスでき、要求が増加した場合は複数のレプリカに分散されます。

Always On 可用性グループは、連携して動作するマシン群で構成される Windows Server フェールオーバー クラスター上で実行されます。 このアーキテクチャにより、このようなマシンで実行されるワークロードの高可用性が実現します。 Always On 可用性グループを使用すると、クラスター内の各ノード (マシン) はレプリカ (プライマリまたはセカンダリ) をホストします。 各レプリカには、データベースのグループが保持されます。

Azure で Always On 可用性グループを構成するには、2 つの可用性セット (1 つは Windows Server フェールオーバー クラスター ノード用、もう 1 つはドメイン コントローラー用) を作成してください。

Diagram that shows an example of availability sets.

Windows Server フェールオーバー クラスターには、少なくとも 3 台のマシンを含める必要があります。 SQL Server マシンは、プライマリ レプリカ用と、クラスター内のセカンダリ レプリカ用にそれぞれ 1 つずつ必要です。 3 台目のマシンは、ファイル共有監視、または Azure ファイル共有を監視用として機能します。

Azure SQL Database のフェールオーバー

SQL Database 自動フェールオーバー グループを使用して、SQL Database サーバー上のデータベース グループのフェールオーバーとレプリケーションを構成できます。 必要に応じてフェールオーバーを実行できる定義済みのポリシーをまとめておきます。 必要に応じて、手動でフェールオーバーをトリガーすることもできます。 障害が発生した場合、SQL Database では、データベースをセカンダリ リージョンのセカンダリ サーバーに自動的にフェールオーバーできます。

SQL Database の自動フェールオーバー セカンダリ データベースは、読み取り可能なデータベースとして使用できます。 これらのセカンダリ データベースを使用して、接続しているクライアントのデータへの読み取りアクセスを処理し、プライマリ データベースとセカンダリ データベースの間で使用状況と要求を分散させることができます。

自動フェールオーバー ポリシーを使用していて、プライマリ データベース グループ内の少なくとも 1 つのデータベースで障害が発生した場合、セカンダリ データベースに対して自動フェールオーバーがトリガーされます。 エンドポイントは、フェールオーバー中も同じままです。 エラーの原因となった問題が解決され、準備が整ったら、元の場所にフェールバックすることができます。 グループを元の場所に手動でフェールオーバーできます。

1 つのデータベース サーバー内のデータベースを 1 つの自動フェールオーバー グループに含めることができます。 エラスティック プール内のすべてのデータベースを 1 つのフェールオーバー グループに含めることもできます。 プライマリ データベースがエラスティック プールの一部である場合、セカンダリ データベースもエラスティック プールにプロビジョニングされます。 このプールには、プライマリ エラスティック プールと同じ名前が付けられます。

Azure SQL Database の自動バックアップ

Azure SQL Database は、7 から 35 日間保存されたデータベースのバックアップを作成できます。 SQL Database は、geo 冗長ストレージを使用してバックアップを格納し、別のリージョンのデータへの読み取りアクセスを提供します。 データ センターに何かが起きた場合でも、データベースは安全です。

1 つのデータベースまたはエラスティック プールで長期保存ポリシーを設定することで、バックアップのリテンション期間を最大 10 年間延長できます。 SQL Database 内のすべてのデータベース バックアップは、保存時に暗号化されます。 作成したすべての SQL データベースでは、透過的なデータ暗号化が既定で有効になっています。

SQL Database は、バックグラウンドで自動的にバックアップを行います。 バックアップの種類に応じて、データベースのバックアップ作成の間隔は異なります。 たとえば、次のように作成されます。

  • 5 から 10 分間隔でのトランザクション ログのバックアップ。
  • 毎週、データベースを完全バックアップ。 最初の完全バックアップは、データベースを作成するとすぐに行われます。 SQL Database の完全バックアップが完了するまでにかかる時間は、データベースのサイズによって異なります。
  • 前回の完全バックアップ後に変更されたすべてのデータを 12 時間ごとに差分バックアップ。

SQL Database は、読み取りアクセスを提供するストレージ BLOB にバックアップを保持します。 その後、それらのバックアップがペアのデータセンターにコピーされます。

データベースはバックアップ バージョンに復元できます。 長期保有を構成した場合、このバックアップは最大 10 年間使用可能です。 削除されたデータベースは、保持ポリシーの保有期間内であれば、削除前の時間まで復元できます。

SQL Database は、データベースを別の地理的リージョンに復元できます。 このプロセスは geo リストアによって行われます。これにより、特定のリージョン全体で何らかの問題が発生した場合に、あるリージョンから別のリージョンにデータベースを復旧できます。

Azure Cosmos DB による geo レプリケーション

Azure Cosmos DB は、データをグローバルに分散させ、弾力的かつ迅速にデータをスケーリングできる低遅延のマルチモデル データベース サービスです。

Azure Cosmos DB では、Azure Cosmos DB アカウントに設定したリージョンですべてのデータが透過的にレプリケートされます。 Azure Cosmos DB は、データベースを構成するコンテナー内にデータを保存し、すべてのコンテナーはパーティション分割されます。

すべてのパーティションは、各リージョン間でレプリケートされます。 各リージョンのパーティションの各コピーは、障害ドメイン間で分散される前にコピーされます。

データは、少なくとも 4 回レプリケートされます。 Azure Cosmos DB アカウントを設定し、5 つのリージョンに分散するように Azure Cosmos DB データベースを構成できます。 このデータベースを 5 つのリージョン用に構成した場合、Azure Cosmos DB によって、すべてのデータのコピーが少なくとも 4 x 5 個になることが保証されます。

Azure Cosmos DB データベースが少なくとも 2 つのリージョンにまたがるように構成する必要があります。 使用するリージョンが多いほど、データの回復力が向上します。 また、すべてのリージョンから読み取りと書き込みの操作を実行できるように、Azure Cosmos DB データベースに複数の書き込みリージョンを明示的に設定する必要があります。

さらに一部のリージョンでは、ゾーンの冗長性を構成することもできます。 この機能により、Azure Cosmos DB は、データのレプリカを 1 つのリージョン内の複数の可用性ゾーンに配置し、回復性をさらに高めることができます。

自分の知識をチェックする

1.

組織は、トランザクション SQL データベースのデータが失われないようにする必要があります。 すべての SQL データベースのデータは、冗長性を確保し、標準に準拠するために、別のリージョンで常に使用可能かつ読み取り可能である必要があります。 この種の復元力は、どのように設計するのでしょうか。

2.

オンライン ストアを複数のリージョンに移動したことで、データ ワークロードを Azure Cosmos DB に移動するとどのような利点があるでしょうか?