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

完了

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

このユニットでは、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 つはドメイン コントローラー用) を作成してください。

可用性セットの例を示す図。

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 つのリージョン内の複数の可用性ゾーンに配置します。