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

Azure SQL Database は、稼働率 99.99% が保証されている、メンテナンスやダウンタイムの心配が不要な、サービスとしての高可用性データベース プラットフォームです。Azure SQL Database is highly available database Platform as a Service that guarantees that your database is up and running 99.99% of time, without worrying about maintenance and downtimes. これは、Azure クラウドでホストされる、完全に管理された SQL Server データベース エンジン プロセスです。SQL Server データベースは、ワークロードに影響を与えることなく、常にアップグレードされ、パッチが適用されます。This is a fully managed SQL Server Database Engine process hosted in the Azure cloud that ensures that your SQL Server database is always upgraded/patched without affecting your workload. インスタンスにパッチが適用されるか、またはインスタンスがフェールオーバーしたとき、アプリで再試行ロジックを使用していれば、一般にダウンタイムは認識されません。When an instance is patched or fails over, the downtime is generally not noticeable if you employ retry logic in your app. フェールオーバーの完了までの時間が 60 秒を超える場合は、サポート ケースを開いてください。If the time to complete a failover is longer than 60 seconds, you should open a support case. Azure SQL Database は、クリティカルな状況であっても迅速な復旧が可能であるため、データが常に使用可能であることが保証されます。Azure SQL Database can quickly recover even in the most critical circumstances ensuring that your data is always available.

すべての Azure SQL Database は Azure プラットフォームによって完全に管理され、データ消失ゼロおよび高いデータ可用性 (%) を実現しています。Azure platform fully manages every Azure SQL Database and guarantees no data loss and a high percentage of data availability. 基になるハードウェア、ソフトウェア、ネットワークの障害リスクへの対応や、パッチの適用、バックアップ、レプリケーション、障害検出、バグ修正、フェールオーバー、データベースのアップグレードなど、各種メンテナンス タスクは、Azure によって自動的に処理されます。Azure automatically handles patching, backups, replication, failure detection, underlying potential hardware, software or network failures, deploying bug fixes, failovers, database upgrades, and other maintenance tasks. SQL Server のエンジニアは、定評のあるベスト プラクティスを導入しており、すべてのメンテナンス操作は、データベース運用期間の 0.01% 未満で完了します。SQL Server engineers have implemented the best-known practices, ensuring that all the maintenance operations are completed in less than 0.01% time of your database life. このアーキテクチャは、コミットされたデータが消失せず、メンテナンス操作を実行してもワークロードに影響が及ばないように設計されています。This architecture is designed to ensure that committed data is never lost and that maintenance operations are performed without affecting workload. データベースのアップグレードやメンテナンスを行うときでも、ワークロードの停止が必要なメンテナンス期間やダウンタイムは発生しません。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 には、高可用性が組み込まれています。そのため、データベースがソフトウェア アーキテクチャの単一障害点にならないことが保証されています。Built-in high availability in Azure SQL Database guarantees that database will never be single point of failure in your software architecture.

Azure SQL Database は、インフラストラクチャに障害が発生した場合でも 99.99% の可用性を確保するために、クラウド環境に合わせて調整された SQL Server データベース エンジン アーキテクチャに基づいています。Azure SQL Database is based on SQL Server Database Engine architecture that is adjusted for the cloud environment in order to ensure 99.99% availability even in the cases of infrastructure failures. Azure SQL Database には、2 つの高可用性アーキテクチャ モデルがあります (いずれも 99.99% の可用性を確保しています)。There are two high-availability architectural models that are used in Azure SQL Database (both of them ensuring 99.99% availability):

  • 計算とストレージの分離に基づく Standard/汎用モデル サービス レベル。Standard/general purpose service tier model that is based on a separation of compute and storage. このアーキテクチャ モデルは、ストレージ層の高可用性と信頼性に依存していますが、保守作業中はパフォーマンスが低下する可能性があります。This architectural model relies on high availability and reliability of storage tier, but it might have some potential performance degradation during maintenance activities.
  • データベース エンジン プロセスのクラスターに基づく Premium/Business Critical サービス レベル モデル。Premium/business critical service tier model that is based on a cluster of database engine processes. このアーキテクチャ モデルは、常に使用可能なデータベース エンジン ノードのクォーラムが存在し、保守作業中でもワークロードに対するパフォーマンスの影響が最小限であるというファクトに依存しています。This architectural model relies on a fact that there is always a quorum of available database engine nodes and has minimal performance impact on your workload even during maintenance activities.

Azure では、基盤となるオペレーティング システム、ドライバー、および SQL Server Database エンジンに対して、アップグレードとパッチ適用が透過的に実行されます。そのため、エンド ユーザーのダウンタイムは最小限に抑えられます。Azure upgrades and patches underlying operating system, drivers, and SQL Server Database Engine transparently with the minimal down-time for end users. Azure SQL データベースは、最新バージョンの SQL Server データベース エンジンおよび Windows OS 上で実行されています。また、アップグレードが、ほぼ気づかれることなく、継続的に実行されています。Azure SQL Database runs on the latest stable version of SQL Server Database Engine and Windows OS, and most of the users would not notice that the upgrades are performed continuously.

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

Standard 可用性は、Basic、Standard、および General Purpose サービス レベルで適用される 99.99% の SLA を指します。Standard availability refers to 99.99% SLA that is applied in Basic, Standard, and General Purpose service tiers. このアーキテクチャ モデルの高可用性は、計算層とストレージ層の分離と、ストレージ層でのデータのレプリケーションによって実現されます。High availability in this architectural model is achieved by separation of compute and storage layers and the replication of data in the storage tier.

次の図は、計算レイヤーとストレージ レイヤーが分離されている Standard アーキテクチャ モデルの 4 ノードを示しています。The following figure shows four nodes in standard architectural model with the separated compute and storage layers.

計算とストレージの分離

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

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

データベース エンジンまたはオペレーティング システムがアップグレードされた場合、基となるインフラストラクチャの一部で障害が発生した場合、または Sql Server プロセスで重大な問題が検出された場合、Azure Service Fabric は、ステートレス SQL Server プロセスを別のステートレス計算ノードに移行します。Whenever database engine or operating system is upgraded, some part of underlying infrastructure fails, or if some critical issue is detected in Sql Server process, Azure Service Fabric will move the stateless SQL Server process to another stateless compute node. フェールオーバー時間を最小限に抑えるために、フェールオーバーが発生した場合に新しい計算サービスの実行を待機している一連のスペア ノードがあります。There is a set of spare nodes that is waiting to run new compute service in case of failover in order to minimize failover time. Azure Storage レイヤーのデータは影響を受けず、データ/ログ ファイルは、新しく初期化された SQL Server プロセスにアタッチされます。Data in Azure Storage layer is not affected, and data/log files are attached to newly initialized SQL Server process. このプロセスは、99.99% の可用性を保証していますが、移行時間や、新しい SQL Server ノードの起動にコールド キャッシュを使用することが原因で、実行中の大きなワークロードに対しては、パフォーマンス上の影響が若干生じる場合があります。This process guarantees 99.99% availability, but it might have some performance impacts on heavy workload that is running due to transition time and the fact the new SQL Server node starts with cold cache.

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

Premium 可用性は、Azure SQL Database の Premium および Business Critical サービス レベルで有効になり、進行中のメンテナンス操作によるパフォーマンスへの影響を許容できない集中的なワークロードのために設計されています。Premium availability is enabled in Premium and Business Critical service tiers of Azure SQL Database and it is designed for intensive workloads that cannot tolerate any performance impact due to the ongoing maintenance operations.

Premium モデルでは、Azure SQL Database が計算およびストレージを単一のノード上に統合しています。In the premium model, Azure SQL database integrates compute and storage on the single node. このアーキテクチャ モデルでの高可用性は、SQL Server Always On 可用性グループと同様のテクノロジを使用して、4 ノード クラスター内にデプロイされた計算 (SQL Server データベース エンジン プロセス) とストレージ (ローカルに接続された SSD) のレプリケーションによって実現されます。High availability in this architectural model is achieved by replication of compute (SQL Server Database Engine process) and storage (locally attached SSD) deployed in 4-node cluster, using technology similar to SQL Server Always On Availability Groups.

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

SQL データベース エンジン プロセスと基礎となる mdf/ldf ファイルはどちらも、ワークロードの待ち時間を短縮するローカルに接続された SSD ストレージを備えた同じノード上に配置されます。Both the SQL database engine process and underlying mdf/ldf files are placed on the same node with locally attached SSD storage providing low latency to your workload. 高可用性は、SQL Server Always On 可用性グループと同様のテクノロジを使用して実装されます。High availability is implemented using technology similar to SQL Server Always On Availability Groups. すべてのデータベースは、データベース ノードのクラスターになっています。このクラスターの中で、1 つのプライマリ データベースは、顧客のワークロード用にアクセスすることができ、3 つのセカンダリ プロセスは、データのコピーが格納されています。Every database is a cluster of database nodes with one primary database that is accessible for customer workload, and a three secondary processes containing copies of data. プライマリ ノードは、変更内容を絶えずセカンダリ ノードにプッシュしています。これは、何らかの原因でプライマリ ノードがクラッシュした場合でも、セカンダリ レプリカでデータを確実に使用できるようにするためです。The primary node constantly pushes the changes to secondary nodes in order to ensure that the data is available on secondary replicas if the primary node crashes for any reason. フェールオーバーは、Azure Service Fabric で処理されます。つまり、あるセカンダリ レプリカがプライマリ ノードになると、クラスター内のノード数を十分に確保するために、新しいセカンダリ レプリカが作成されます。Failover is handled by the Azure Service Fabric – one secondary replica becomes the primary node and a new secondary replica is created to ensure enough nodes in the cluster. ワークロードは、新しいプライマリ ノードに自動的にリダイレクトされます。The workload is automatically redirected to the new primary node.

さらに、Business Critical クラスターには、プライマリ ワークロードのパフォーマンスに影響を与えない読み取り専用クエリ (レポートなど) を実行するために使用できる無料の組み込みの読み取り専用ノードを提供する、組み込みの読み取りスケールアウト機能があります。In addition, Business Critical cluster has built-in Read Scale-Out capability that provides free-of charge built-in read-only node that can be used to run read-only queries (for example reports) that should not affect performance of your primary workload.

ゾーン冗長の構成Zone redundant configuration

既定では、ローカル ストレージ構成のクォーラムセット レプリカが同じデータセンターに作成されます。By default, the quorum-set replicas for the local storage configurations are created in the same datacenter. Azure 可用性ゾーンの導入により、同じリージョンのさまざまな可用性ゾーンに対するさまざまなレプリカをクォーラムセットに配置することができます。With the introduction of Azure Availability Zones, you have the ability to place the different replicas in the quorum-sets 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 does not create additional database redundancy, the use of Availability Zones in the Premium or Business Critical service tiers is available at no extra cost. ゾーン冗長データベースを選択することで、アプリケーション ロジックをまったく変更せずに、データセンターの壊滅的な障害を含む大規模な障害から Premium または Business Critical データベースが回復できるようになります。By selecting a zone redundant database, you can make your Premium or Business Critical databases resilient to a much larger set of failures, including catastrophic datacenter outages, without any changes of 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 quorum-set has 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 a size of data operation and is similar to the regular service tier update. プロセスの最後に、データベースまたはプールがゾーン冗長リングから単一ゾーン リングに (または逆方向に) 移行されます。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 サービス レベルでのみサポートされています。Zone redundant databases and elastic pools are currently only supported in the Premium service tier. 既定では、バックアップや監査レコードは 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 データベース エンジンの復旧プロセスを再設計することで、実行時間の長いトランザクションがある場合などにデータベースの可用性を大幅に向上させる、新しい 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, by redesigning the SQL database engine recovery process. ADR は現在、単一データベース、エラスティック プール、および Azure SQL Data Warehouse で使用できます。ADR is currently available for single databases, elastic pools, and Azure SQL Data Warehouse.

まとめConclusion

Azure SQL Database は、Azure プラットフォームと緊密に統合されており、障害の検出と復旧に Service Fabric を、データ保護に Azure Storage Blob を、フォールト トレランスを高めるために可用性ゾーンを活用します。Azure SQL Database is deeply integrated with the Azure platform and is highly dependent on Service Fabric for failure detection and recovery, on Azure Storage Blobs for data protection and Availability Zones for higher fault tolerance. 同時に、Azure SQL データベースは、レプリケーションとフェールオーバーのために、SQL Server 既成製品からの AlwaysOn 可用性グループ テクノロジをフル活用します。At the same time, Azure SQL database fully leverages the Always On Availability Group technology from SQL Server box product for replication and failover. これらのテクノロジを組み合わせることにより、アプリケーションは混合ストレージ モデルを最大限に活用して、高要件の SLA にも対応できます。The combination of these technologies enables the applications to fully realize the benefits of a mixed storage model and support the most demanding SLAs.

次の手順Next steps