高可用性と Microsoft Azure SQL DatabaseHigh-availability and Azure SQL Database

Azure SQL Database での高可用性アーキテクチャの目的は、メンテナンス操作や障害の影響を心配せずに、データベースの稼働および実行の時間が 99.99% 以上になるように保証することです。The goal of the High Availability architecture in Azure SQL Database is to guarantee that your database is up and running 99.99% of time, without worrying about the impact of maintenance operations and outages. Azure では、パッチ適用、バックアップ、Windows および SQL のアップグレードなどの重要なサービス タスクに加えて、基本となるハードウェア、ソフトウェア、またはネットワークのエラーなどの計画外のイベントを自動的に処理します。Azure automatically handles critical servicing tasks, such as patching, backups, Windows and SQL upgrades, as well as unplanned events such as underlying hardware, software or network failures. 基本となる SQL インスタンスがパッチを適用されるか、またはフェールオーバーした場合、お使いのアプリで再試行ロジックを使用していれば、ダウンタイムは認識されません。When the underlying SQL instance is patched or fails over, the downtime is not noticeable if you employ retry logic in your app. Azure SQL Database は、クリティカルな状況であっても迅速な復旧が可能であるため、データが常に使用可能であることが保証されます。Azure SQL Database can quickly recover even in the most critical circumstances ensuring that your data is always available.

高可用性ソリューションは、コミットされたデータが障害によって失われないこと、メンテナンス操作がワークロードに影響を及ぼさないこと、また、データベースがソフトウェア アーキテクチャでの単一障害点にならないことを保証するように設計されています。The high availability solution is designed to ensure that committed data is never lost due to failures, that maintenance operations do not affect your workload, and that the database will not be a single point of failure in your software architecture. データベースのアップグレードやメンテナンスを行うときでも、ワークロードの停止が必要なメンテナンス期間やダウンタイムは発生しません。There are no maintenance windows or downtimes that should require you to stop the workload while the database is upgraded or maintained.

Azure SQL Database に使用される高可用性アーキテクチャ モデルは 2 つありますThere are two high-availability architectural models that are used in Azure SQL Database:

  • 計算とストレージの分離に基づく Standard 可用性モデル。Standard availability model that is based on a separation of compute and storage. リモート ストレージ層の高可用性と信頼性に依存します。It relies on high availability and reliability of the remote storage tier. このアーキテクチャでは、メンテナンス作業中に一定のパフォーマンス低下を許容できる予算重視のビジネス アプリケーションを対象とします。This architecture targets budget-oriented business applications that can tolerate some performance degradation during maintenance activities.
  • データベース エンジン プロセスのクラスターに基づく Premium 可用性モデル。Premium availability model that is based on a cluster of database engine processes. 利用可能なデータベース エンジン ノードのクォーラムが常にあるという事実に依存します。It relies on the fact that there is always a quorum of available database engine nodes. このアーキテクチャでは、高い IO パフォーマンス、高いトランザクション レートを備えたミッション クリティカル なアプリケーションを対象とし、メンテナンス作業中のワークロードに対するパフォーマンスの影響を最小限に抑えることを保証します。This architecture targets mission critical applications with high IO performance, high transaction rate and guarantees minimal performance impact to your workload during maintenance activities.

Azure SQL Database は、最新の安定したバージョンの SQL Server データベース エンジンおよび Windows OS 上で実行されています。また、ほとんどのユーザーが認識することなく、アップグレードが継続的に実行されています。Azure SQL Database runs on the latest stable version of SQL Server Database Engine and Windows OS, and most users would not notice that upgrades are performed continuously.

Basic、Standard、および General Purpose サービス レベルの可用性Basic, Standard, and General Purpose service tier availability

これらのサービス レベルでは、Standard 可用性アーキテクチャを利用します。These service tiers leverage the standard availability architecture. 次の図は、計算レイヤーとストレージ レイヤーが分離されている4 つの異なるノードを示しています。The following figure shows four different nodes with the separated compute and storage layers.

計算とストレージの分離

Standard 可用性モデルには、次の 2 つのレイヤーがあります。The standard availability model includes two layers:

  • ステートレス計算レイヤー。sqlserver.exe プロセスを実行しており、アタッチされている SSD 上に一時的なデータとキャッシュ データのみが含まれています (TempDB、モデル データベース、プラン キャッシュ、バッファー プール、列のストア プールなど)。A stateless compute layer that runs the sqlserver.exe process and contains only transient and cached data on the attached SSD, such as TempDB, model database, plan cache, buffer pool and column store pool. このステートレス ノードは、sqlserver.exe の初期化、ノードの正常性の制御、および他のノードへのフェールオーバーを必要に応じて実行する Azure Service Fabric によって操作されます。This stateless node is operated by Azure Service Fabric that initializes sqlserver.exe, controls health of the node, and performs failover to another node if necessary.
  • ステートフル データ レイヤー。データベース ファイル (.mdf/.ldf) は Azure BLOB ストレージに保存されています。A stateful data layer with the database files (.mdf/.ldf) that are stored in Azure Blob storage. Azure BLOB ストレージには、組み込みのデータ可用性と冗長性の機能があります。Azure blob storage has built-in data availability and redundancy feature. SQL Server プロセスがクラッシュした場合でも、ログ ファイル内のすべてのレコードまたはデータ ファイル内のすべてのページが保持されることを保証します。It guarantees that every record in the log file or page in the data file will be preserved even if SQL Server process crashes.

データベース エンジンまたはオペレーティング システムがアップグレードされた場合、あるいは障害が検出された場合、Azure Service Fabric は常に、ステートレス SQL Server プロセスを十分な空き容量がある別のステートレス計算ノードに移行します。Whenever the database engine or the operating system is upgraded, or a failure is detected, Azure Service Fabric will move the stateless SQL Server process to another stateless compute node with sufficient free capacity. Azure BLOB ストレージ内のデータは移行による影響を受けず、データ/ログ ファイルは、新しく初期化された SQL Server プロセスにアタッチされます。Data in Azure Blob storage is not affected by the move, and the data/log files are attached to the newly initialized SQL Server process. このプロセスでは 99.99% の可用性が保証されますが、新しい SQL Server インスタンスがコールド キャッシュを使用して起動されるため、負荷の高いワークロードによって移行中にパフォーマンスの低下が発生する可能性があります。This process guarantees 99.99% availability, but a heavy workload may experience some performance degradation during the transition since the new SQL Server instance starts with cold cache.

Premium および Business Critical サービス レベルの可用性Premium and Business Critical service tier availability

Premium および Business Critical サービス レベルでは、Premium 可用性モデルを利用します。1 つのノード上で、計算リソース (SQL Server データベース エンジン プロセス) とストレージ (ローカルに接続されている SSD) を統合します。Premium and Business Critical service tiers leverage the Premium availability model, which integrates compute resources (SQL Server Database Engine process) and storage (locally attached SSD) on a single node. 高可用性は、3 から 4 つのノードでクラスターを形成している追加ノードに計算とストレージの両方をレプリケートすることで、実現されます。High availability is achieved by replicating both compute and storage to additional nodes creating a three to four-node cluster.

データベース エンジン ノードのクラスター

基になるデータベース ファイル (.mdf/.ldf) は、非常に低い待機時間の IO をワークロードに提供するために、アタッチされている SSD ストレージ上に配置されています。The underlying database files (.mdf/.ldf) are placed on the attached SSD storage to provide very low latency IO to your workload. 高可用性は、SQL Server Always On 可用性グループと同様のテクノロジを使用して実装されます。High availability is implemented using a technology similar to SQL Server Always On Availability Groups. クラスターには、読み取り/書き込みの顧客ワークロードにアクセス可能な単一のプライマリ レプリカ (SQL Server プロセス) と、データのコピーを格納する最大 3 つのセカンダリ レプリカ (計算とストレージ) が含まれます。The cluster includes a single primary replica (SQL Server process) that is accessible for read-write customer workloads, and up to three secondary replicas (compute and storage) containing copies of data. プライマリ ノードは常にセカンダリ ノードへ順番に変更をプッシュし、各トランザクションをコミットする前に少なくとも 1 つのセカンダリ レプリカにデータが同期されるようにします。The primary node constantly pushes changes to the secondary nodes in order and ensures that the data is synchronized to at least one secondary replica before committing each transaction. このプロセスによって、何らかの理由でプライマリ ノードがクラッシュした場合に、フェールオーバー先となる完全に同期されたノードが常に用意されている状態が保証されます。This process guarantees that if the primary node crashes for any reason, there is always a fully synchronized node to fail over to. フェールオーバーは、Azure Service Fabric によって開始されます。The failover is initiated by the Azure Service Fabric. セカンダリ レプリカが新しいプライマリ ノードになると、もう 1 つのセカンダリ レプリカが作成され、クラスターに十分な数のノード (クォーラム セット) がある状態が保証されます。Once the secondary replica becomes the new primary node, another secondary replica is created to ensure the cluster has enough nodes (quorum set). フェールオーバーが完了すると、SQL 接続は新しいプライマリ ノードに自動的にリダイレクトされます。Once failover is complete, SQL connections are automatically redirected to the new primary node.

その他の利点としては、Premium 可用性モデルには、セカンダリ レプリカの 1 つに読み取り専用の SQL 接続をリダイレクトする機能が含まれています。As an extra benefit, the premium availability model includes the ability to redirect read-only SQL connections to one of the secondary replicas. この機能は、読み取りスケールアウトと呼ばれます。追加料金なしで 100% の追加のコンピューティング容量を提供し、分析ワークロードなどの読み取り専用の操作をプライマリ レプリカからオフロードします。This feature is called Read Scale-Out. It provides 100% additional compute capacity at no extra charge to off-load read-only operations, such as analytical workloads, from the primary replica.

ゾーン冗長の構成Zone redundant configuration

既定では、Premium 可用性モデル用のノードのクラスターは、同じデータ センター内に作成されます。By default, the cluster of nodes for the premium availability model is created in the same datacenter. Azure Availability Zones の導入によって、SQL Database では同じリージョン内のさまざまな可用性ゾーンに対する各種のレプリカを、クラスター内に配置できます。With the introduction of Azure Availability Zones, SQL Database can place different replicas in the cluster to different availability zones in the same region. 単一障害点をなくすため、制御リングも複数のゾーンで 3 つのゲートウェイ リング (GW) として複製できます。To eliminate a single point of failure, the control ring is also duplicated across multiple zones as three gateway rings (GW). 特定のゲートウェイ リングへのルーティングは Azure Traffic Manager (ATM) によって制御されます。The routing to a specific gateway ring is controlled by Azure Traffic Manager (ATM). Premium または Business Critical サービス レベルでのゾーン冗長構成では、追加のデータベース冗長性を作成しないため、追加料金なしで使用できます。Because the zone redundant configuration in the Premium or Business Critical service tiers does not create additional database redundancy, you can enable it at no extra cost. ゾーン冗長構成を選択することで、アプリケーション ロジックにまったく変更を加えずに、データセンターの壊滅的な障害などの極めて大規模な障害に対して、Premium または Business Critical データベースが回復性を備えることができます。By selecting a zone redundant configuration, you can make your Premium or Business Critical databases resilient to a much larger set of failures, including catastrophic datacenter outages, without any changes to the application logic. また、既存の Premium または Business Critical データベース、あるいはプールをゾーン冗長構成に変換することもできます。You can also convert any existing Premium or Business Critical databases or pools to the zone redundant configuration.

ゾーン冗長データベースでは、離れた距離に位置するさまざまなデータセンターにレプリカがあるため、ネットワーク待機時間が長くなるとコミット時間が増大し、一部の OLTP ワークロードのパフォーマンスに影響を及ぼす可能性があります。Because the zone redundant databases have replicas in different datacenters with some distance between them, the increased network latency may increase the commit time and thus impact the performance of some OLTP workloads. いつでもゾーン冗長設定を無効にして単一ゾーン構成に戻ることができます。You can always return to the single-zone configuration by disabling the zone redundancy setting. このプロセスはオンライン操作であり、通常のサービス レベル更新プログラムと似ています。This process is an online operation similar to the regular service tier upgrade. プロセスの最後に、データベースまたはプールがゾーン冗長リングから単一ゾーン リングに (または逆方向に) 移行されます。At the end of the process, the database or pool is migrated from a zone redundant ring to a single zone ring or vice versa.

重要

ゾーン冗長データベースとエラスティック プールは現在、Premium および Business Critical サービス レベルのみでサポートされています。Zone redundant databases and elastic pools are currently only supported in the Premium and Business Critical service tiers. 既定では、バックアップや監査レコードは RA-GRS ストレージに格納されるため、ゾーン全体にわたる停止の場合、自動的には使用できない可能性があります。By default, backups and audit records are stored in RA-GRS storage and therefore may not be automatically available in case of a zone-wide outage.

ゾーン冗長による高可用性アーキテクチャを、次の図に示します。The zone redundant version of the high availability architecture is illustrated by the following diagram:

高可用性アーキテクチャのゾーン冗長

高速データベース復旧 (ADR)Accelerated Database Recovery (ADR)

高速データベース復旧 (ADR) は、特に実行時間の長いトランザクションがある場合に、データベースの可用性を大幅に向上させる、新しい SQL データベース エンジン機能です。Accelerated Database Recovery (ADR) is a new SQL database engine feature that greatly improves database availability, especially in the presence of long running transactions. ADR は現在、単一データベース、エラスティック プール、および Azure SQL Data Warehouse で使用できます。ADR is currently available for single databases, elastic pools, and Azure SQL Data Warehouse.

まとめConclusion

Azure SQL Database の特徴は、Azure プラットフォームと緊密に統合される、組み込みの高可用性ソリューションです。Azure SQL Database features a built-in high availability solution, that is deeply integrated with the Azure platform. 障害の検出と復旧に Service Fabric を、データ保護に Azure BLOB ストレージを、フォールト トレランスを高めるために Availability Zones を活用しています。It is dependent on Service Fabric for failure detection and recovery, on Azure Blob storage for data protection, and on Availability Zones for higher fault tolerance. さらに、Azure SQL データベースでは、レプリケーションとフェールオーバーのために、SQL Server から AlwaysOn 可用性グループのテクノロジを活用しています。In addition, Azure SQL database leverages the Always On Availability Group technology from SQL Server for replication and failover. これらのテクノロジを組み合わせることで、アプリケーションでは混合ストレージ モデルを最大限に活用して、高要件の SLA にも対応できます。The combination of these technologies enables applications to fully realize the benefits of a mixed storage model and support the most demanding SLAs.

次の手順Next steps