Banco de dados SQL do Microsoft Azure e de alta disponibilidadeHigh-availability and Azure SQL Database

O objetivo da arquitetura de alta disponibilidade no banco de dados SQL do Azure é garantir que seu banco de dados esteja em execução no mínimo 99,99% do tempo (para obter mais informações sobre SLA específico para diferentes camadas, consulte SLA para o banco de dados SQL do Azure), sem se preocupar com o impacto de operações de manutenção e interrupções.The goal of the High Availability architecture in Azure SQL Database is to guarantee that your database is up and running minimum of 99.99% of time (For more information regarding specific SLA for different tiers, Please refer SLA for Azure SQL Database), without worrying about the impact of maintenance operations and outages. O Azure manipula automaticamente tarefas de manutenção críticas, como aplicação de patches, backups, atualizações do Windows e do SQL, bem como eventos não planejados, como hardware subjacente, software ou falhas de rede.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. Quando a instância subjacente do SQL for corrigida ou passar por failover, o tempo de inatividade não será perceptível se você empregar a lógica de repetição em seu aplicativo.When the underlying SQL instance is patched or fails over, the downtime is not noticeable if you employ retry logic in your app. O Banco de Dados SQL do Azure pode se recuperar rapidamente, até nas circunstâncias mais críticas, garantindo que seus dados estejam sempre disponíveis.Azure SQL Database can quickly recover even in the most critical circumstances ensuring that your data is always available.

A solução de alta disponibilidade foi projetada para garantir que os dados confirmados nunca sejam perdidos devido a falhas, que as operações de manutenção não afetam sua carga de trabalho e que o banco de dados não será um ponto único de falha em sua arquitetura de software.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. Não há nenhuma janela de manutenção ou tempo de inatividade que deva exigir que você pare a carga de trabalho enquanto o banco de dados é atualizado ou está em manutenção.There are no maintenance windows or downtimes that should require you to stop the workload while the database is upgraded or maintained.

Há dois modelos arquitetônicos de alta disponibilidade que são usados no banco de dados SQL do Azure:There are two high-availability architectural models that are used in Azure SQL Database:

  • Modelo de disponibilidade padrão baseado em uma separação de computação e armazenamento.Standard availability model that is based on a separation of compute and storage. Ele se baseia na alta disponibilidade e na confiabilidade da camada de armazenamento remoto.It relies on high availability and reliability of the remote storage tier. Essa arquitetura destina-se a aplicativos de negócios orientados a orçamento que podem tolerar alguma degradação de desempenho durante atividades de manutenção.This architecture targets budget-oriented business applications that can tolerate some performance degradation during maintenance activities.
  • Modelo de disponibilidade Premium baseado em um cluster de processos do mecanismo de banco de dados.Premium availability model that is based on a cluster of database engine processes. Ele depende do fato de que sempre há um quorum de nós do mecanismo de banco de dados disponíveis.It relies on the fact that there is always a quorum of available database engine nodes. Essa arquitetura destina-se a aplicativos de missão crítica com alto desempenho de e/s, alta taxa de transações e garante o impacto mínimo no desempenho da carga de trabalho durante atividades de manutenção.This architecture targets mission critical applications with high IO performance, high transaction rate and guarantees minimal performance impact to your workload during maintenance activities.

O banco de dados SQL do Azure é executado na versão estável mais recente do SQL Server Mecanismo de Banco de Dados e no sistema operacional Windows, e a maioria dos usuários não observou que as atualizações são executadas continuamente.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.

Disponibilidade de camada de serviço básico, padrão e de uso geralBasic, Standard, and General Purpose service tier availability

Essas camadas de serviço aproveitam a arquitetura de disponibilidade padrão.These service tiers leverage the standard availability architecture. A figura a seguir mostra quatro nós diferentes com a computação separada e as camadas de armazenamento.The following figure shows four different nodes with the separated compute and storage layers.

Separação de computação e armazenamento

O modelo de disponibilidade padrão inclui duas camadas:The standard availability model includes two layers:

  • Uma camada de computação sem monitoração de estado que executa o processo de sqlservr.exe e contém somente dados transitórios e em cache, como TempDB, bancos de dado de modelo no SSD anexado e cache de planos, pool de buffers e pool columnstore na memória.A stateless compute layer that runs the sqlservr.exe process and contains only transient and cached data, such as TempDB, model databases on the attached SSD, and plan cache, buffer pool, and columnstore pool in memory. Esse nó sem estado é operado pelo Service Fabric do Azure que inicializa sqlservr.exe, controla a integridade do nó e executa o failover para outro nó, se necessário.This stateless node is operated by Azure Service Fabric that initializes sqlservr.exe, controls health of the node, and performs failover to another node if necessary.
  • Uma camada de dados com monitoração de estado com os arquivos de banco (. MDF/. ldf) armazenados no armazenamento de BLOBs do Azure.A stateful data layer with the database files (.mdf/.ldf) that are stored in Azure Blob storage. O armazenamento de BLOBs do Azure tem recursos internos de redundância e disponibilidade de dados.Azure blob storage has built-in data availability and redundancy feature. Ele garante que todos os registros no arquivo de log ou na página do arquivo de dados serão preservados mesmo se SQL Server processo falhar.It guarantees that every record in the log file or page in the data file will be preserved even if SQL Server process crashes.

Sempre que o mecanismo de banco de dados ou o sistema operacional for atualizado ou uma falha for detectada, o Azure Service Fabric moverá o processo de SQL Server sem estado para outro nó de computação sem estado com capacidade livre suficiente.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. Os dados no armazenamento de BLOBs do Azure não são afetados pela movimentação e os arquivos de dados/log são anexados ao processo de SQL Server inicializado recentemente.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. Esse processo garante a disponibilidade de 99,99%, mas uma carga de trabalho pesada pode enfrentar alguma degradação de desempenho durante a transição, uma vez que a nova instância de SQL Server começa com o cache frio.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.

Disponibilidade de camada de serviço Premium e Business CriticalPremium and Business Critical service tier availability

As camadas de serviço Premium e Comercialmente Crítico aproveitam o modelo de disponibilidade Premium, que integra recursos de computação (SQL Server processo de Mecanismo de Banco de Dados) e armazenamento (SSD anexado localmente) em um único nó.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. A alta disponibilidade é obtida com a replicação da computação e do armazenamento para nós adicionais, criando um cluster de três a quatro nós.High availability is achieved by replicating both compute and storage to additional nodes creating a three to four-node cluster.

Cluster de nós de mecanismo de banco de dados

Os arquivos de banco de dados subjacentes (. MDF/. ldf) são colocados no armazenamento SSD anexado para fornecer uma e/s de latência muito baixa para sua carga de trabalho.The underlying database files (.mdf/.ldf) are placed on the attached SSD storage to provide very low latency IO to your workload. A alta disponibilidade é implementada usando uma tecnologia semelhante a SQL Server Always on grupos de disponibilidade.High availability is implemented using a technology similar to SQL Server Always On Availability Groups. O cluster inclui uma única réplica primária (SQL Server processo) que é acessível para cargas de trabalho do cliente de leitura/gravação e até três réplicas secundárias (computação e armazenamento) que contêm cópias de dados.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. O nó primário envia constantemente as alterações para os nós secundários e garante que os dados sejam sincronizados com pelo menos uma réplica secundária antes de confirmar cada transação.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. Esse processo garante que, se o nó primário falhar por algum motivo, sempre haverá um nó totalmente sincronizado para o failover.This process guarantees that if the primary node crashes for any reason, there is always a fully synchronized node to fail over to. O failover é iniciado pelo Service Fabric do Azure.The failover is initiated by the Azure Service Fabric. Depois que a réplica secundária se tornar o novo nó primário, outra réplica secundária será criada para garantir que o cluster tenha nós suficientes (conjunto de quorum).Once the secondary replica becomes the new primary node, another secondary replica is created to ensure the cluster has enough nodes (quorum set). Depois que o failover for concluído, as conexões do SQL serão redirecionadas automaticamente para o novo nó primário.Once failover is complete, SQL connections are automatically redirected to the new primary node.

Como um benefício extra, o modelo de disponibilidade Premium inclui a capacidade de redirecionar conexões SQL somente leitura para uma das réplicas secundárias.As an extra benefit, the premium availability model includes the ability to redirect read-only SQL connections to one of the secondary replicas. Esse recurso é chamado de expansão de leitura. Ele fornece uma capacidade de computação adicional de 100% sem custo adicional para operações somente leitura fora do carregamento, como cargas de trabalho analíticas, da réplica primária.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.

Disponibilidade da camada de serviço de hiperescalaHyperscale service tier availability

A arquitetura da camada de serviço de hiperescala é descrita em arquitetura de funções distribuídas.The Hyperscale service tier architecture is described in Distributed functions architecture.

Arquitetura funcional de hiperescala

O modelo de disponibilidade em hiperescala inclui quatro camadas:The availability model in Hyperscale includes four layers:

  • Uma camada de computação sem estado que executa os processos de sqlservr.exe e contém somente dados transitórios e armazenados em cache, como o cache RBPEX não abrangendo, TempDB, banco de dado modelo, etc. no SSD anexado, e no cache de planos, no pool de buffers e no pool columnstore na memória.A stateless compute layer that runs the sqlservr.exe processes and contains only transient and cached data, such as non-covering RBPEX cache, TempDB, model database, etc. on the attached SSD, and plan cache, buffer pool, and columnstore pool in memory. Essa camada sem estado inclui a réplica de computação primária e, opcionalmente, um número de réplicas de computação secundárias que podem servir como destinos de failover.This stateless layer includes the primary compute replica and optionally a number of secondary compute replicas that can serve as failover targets.
  • Uma camada de armazenamento sem estado formada por servidores de página.A stateless storage layer formed by page servers. Essa camada é o mecanismo de armazenamento distribuído para os sqlservr.exe processos em execução nas réplicas de computação.This layer is the distributed storage engine for the sqlservr.exe processes running on the compute replicas. Cada servidor de página contém apenas dados transitórios e em cache, como cobrindo o cache RBPEX no SSD anexado e páginas de dados armazenadas em cache na memória.Each page server contains only transient and cached data, such as covering RBPEX cache on the attached SSD, and data pages cached in memory. Cada servidor de página tem um servidor de páginas emparelhado em uma configuração ativo-ativo para fornecer balanceamento de carga, redundância e alta disponibilidade.Each page server has a paired page server in an active-active configuration to provide load balancing, redundancy, and high availability.
  • Uma camada de armazenamento de log de transações com estado formada pelo nó de computação executando o processo do serviço de log, a zona de aterrissagem do log de transações e o armazenamento de longo prazo do log de transações.A stateful transaction log storage layer formed by the compute node running the Log service process, the transaction log landing zone, and transaction log long term storage. Zona de aterrissagem e armazenamento de longo prazo usam o armazenamento do Azure, que fornece disponibilidade e redundância para o log de transações, garantindo a durabilidade dos dados para transações confirmadas.Landing zone and long term storage use Azure Storage, which provides availability and redundancy for transaction log, ensuring data durability for committed transactions.
  • Uma camada de armazenamento de dados com monitoração de estado com os arquivos (. MDF/. ndf) armazenados no armazenamento do Azure e são atualizados por servidores de página.A stateful data storage layer with the database files (.mdf/.ndf) that are stored in Azure Storage and are updated by page servers. Essa camada usa recursos de redundância e disponibilidade de dados do armazenamento do Azure.This layer uses data availability and redundancy features of Azure Storage. Ele garante que cada página em um arquivo de dados será preservada mesmo se os processos em outras camadas de falha de arquitetura de hiperescala ou se os nós de computação falharem.It guarantees that every page in a data file will be preserved even if processes in other layers of Hyperscale architecture crash, or if compute nodes fail.

Os nós de computação em todas as camadas de hiperescala são executados no Azure Service Fabric, que controla a integridade de cada nó e executa failovers para nós íntegros disponíveis, conforme necessário.Compute nodes in all Hyperscale layers run on Azure Service Fabric, which controls health of each node and performs failovers to available healthy nodes as necessary.

Para obter mais informações sobre alta disponibilidade em hiperescala, consulte alta disponibilidade do banco de dados em hiperescala.For more information on high availability in Hyperscale, see Database High Availability in Hyperscale.

Configuração com redundância de zonaZone redundant configuration

Por padrão, o cluster de nós para o modelo de disponibilidade Premium é criado no mesmo datacenter.By default, the cluster of nodes for the premium availability model is created in the same datacenter. Com a introdução do zonas de disponibilidade do Azure, o banco de dados SQL pode posicionar réplicas diferentes do banco de dados comercialmente crítico em diferentes zonas de disponibilidade na mesma região.With the introduction of Azure Availability Zones, SQL Database can place different replicas of the Business Critical database to different availability zones in the same region. Para eliminar um ponto único de falha, o anel de controle também é duplicado entre várias zonas como três GW (anéis de gateway).To eliminate a single point of failure, the control ring is also duplicated across multiple zones as three gateway rings (GW). O roteamento para um anel de gateway específico é controlado pelo ATM (Gerenciador de Tráfego do Microsoft Azure).The routing to a specific gateway ring is controlled by Azure Traffic Manager (ATM). Como a configuração com redundância de zona nas camadas de serviço Premium ou Comercialmente Crítico não cria redundância de banco de dados adicional, você pode habilitá-la sem custo adicional.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. Ao selecionar uma configuração com redundância de zona, você pode tornar os bancos de dados Premium ou Comercialmente Crítico resilientes a um conjunto muito maior de falhas, incluindo interrupções catastróficas do datacenter, sem nenhuma alteração na lógica do aplicativo.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. Além disso, é possível converter quaisquer pools ou bancos de dados Premium ou Comercialmente Crítico existentes para a configuração com redundância de zona.You can also convert any existing Premium or Business Critical databases or pools to the zone redundant configuration.

Como os bancos de dados com redundância de zona têm réplicas em data centers diferentes com alguma distância entre eles, a latência de rede aumentada pode aumentar o tempo de confirmação e, portanto, afetar o desempenho de algumas cargas de trabalho 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. Sempre será possível retornar à configuração de única zona, desabilitando a configuração com redundância de zona.You can always return to the single-zone configuration by disabling the zone redundancy setting. Esse processo é uma operação online semelhante à atualização da camada de serviço normal.This process is an online operation similar to the regular service tier upgrade. No final do processo, o pool ou banco de dados será migrado de um anel com redundância de zona para um anel de única zona ou vice-versa.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.

Importante

Atualmente, os bancos de dados com redundância de zona e os pools elásticos só têm suporte nas camadas de serviço Premium e Comercialmente Crítico em regiões selecionadas.Zone redundant databases and elastic pools are currently only supported in the Premium and Business Critical service tiers in select regions. Ao usar a camada de Comercialmente Crítico, a configuração com redundância de zona só estará disponível quando o hardware de computação Gen5 for selecionado.When using the Business Critical tier, zone redundant configuration is only available when the Gen5 compute hardware is selected. Para obter informações atualizadas sobre as regiões que dão suporte a bancos de dados com redundância de zona, consulte suporte a serviços por região.For up to date information about the regions that support zone redundant databases, see Services support by region.
Este recurso não está disponível na instância gerenciada.This feature is not available in Managed instance.

A versão com redundância de zona da arquitetura de alta disponibilidade é ilustrada pelo diagrama a seguir:The zone redundant version of the high availability architecture is illustrated by the following diagram:

Arquitetura de alta disponibilidade com redundância de zona

Recuperação Acelerada de Banco de Dados (ADR)Accelerated Database Recovery (ADR)

A ADR (recuperação de banco de dados acelerada) é um novo recurso do mecanismo de banco de dados SQL que melhora muito a disponibilidade do banco de dados, especialmente na presença de transações de longa execução.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 está atualmente disponível para o Azure SQL Data Warehouse, pools Elásticos e bancos de dados individuais.ADR is currently available for single databases, elastic pools, and Azure SQL Data Warehouse.

Testando a resiliência de falha do aplicativoTesting application fault resiliency

A alta disponibilidade é uma parte fundamental da plataforma do banco de dados SQL do Azure que funciona de forma transparente para seu aplicativo de banco de dados.High availability is a fundamental part of Azure SQL Database platform that works transparently for your database application. No entanto, reconhecemos que talvez você queira testar como as operações de failover automático iniciadas durante os eventos planejados ou não planejados afetariam o aplicativo antes de implantá-lo na produção.However, we recognize that you may want to test how the automatic failover operations initiated during planned or unplanned events would impact the application before you deploy it to production. Você pode chamar uma API especial para reiniciar um banco de dados ou um pool elástico que, por sua vez, disparará um failover.You can call a special API to restart a database or an elastic pool, which will in turn trigger a failover. No caso de um banco de dados com redundância de zona ou pool elástico, a chamada à API resultaria no redirecionamento de conexões de cliente para o novo primário em uma zona de disponibilidade diferente da zona de disponibilidade do primário antigo.In the case of a zone redundant database or elastic pool, the API call would result in redirecting client connections to the new primary in an Availability Zone different from the Availability Zone of the old primary. Assim, além de testar como o failover afeta as sessões de banco de dados existentes, você também pode verificar se ele altera o desempenho de ponta a ponta devido a alterações na latência de rede.So in addition to testing how failover impacts existing database sessions, you can also verify if it changes the end-to-end performance due to changes in network latency. Como a operação de reinicialização é intrusiva e um grande número delas poderia enfatizar a plataforma, apenas uma chamada de failover é permitida a cada 30 minutos para cada banco de dados ou pool elástico.Because the restart operation is intrusive and a large number of them could stress the platform, only one failover call is allowed every 30 minutes for each database or elastic pool.

Um failover pode ser iniciado usando A API REST ou o PowerShell.A failover can be initiated using REST API or PowerShell. Para a API REST, consulte failover de banco de dados e failover de pool elástico.For REST API, see Database failover and Elastic pool failover. Para o PowerShell, consulte Invoke-AzSqlDatabaseFailover e Invoke-AzSqlElasticPoolFailover.For PowerShell, see Invoke-AzSqlDatabaseFailover and Invoke-AzSqlElasticPoolFailover. As chamadas à API REST também podem ser feitas de CLI do Azure usando o comando AZ REST .The REST API calls can also be made from Azure CLI using az rest command.

Importante

O comando de failover não está disponível atualmente na camada de serviço de hiperescala e para Instância Gerenciada.The Failover command is currently not available in the Hyperscale service tier and for Managed Instance.

ConclusãoConclusion

O banco de dados SQL do Azure apresenta uma solução interna de alta disponibilidade, que está profundamente integrada à plataforma Azure.Azure SQL Database features a built-in high availability solution, that is deeply integrated with the Azure platform. Ele depende de Service Fabric para detecção e recuperação de falhas, no armazenamento de BLOBs do Azure para proteção de dados e em Zonas de Disponibilidade para maior tolerância a falhas.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. Além disso, o banco de dados SQL do Azure aproveita a tecnologia de grupo de disponibilidade Always On de SQL Server para replicação e failover.In addition, Azure SQL database leverages the Always On Availability Group technology from SQL Server for replication and failover. A combinação dessas tecnologias permite que os aplicativos percebam totalmente os benefícios de um modelo de armazenamento misto e ofereçam suporte aos SLAs mais exigentes.The combination of these technologies enables applications to fully realize the benefits of a mixed storage model and support the most demanding SLAs.

Próximos passosNext steps