Alta disponibilidad y Azure SQL DatabaseHigh-availability and Azure SQL Database

El objetivo de la arquitectura de alta disponibilidad de Azure SQL Database es garantizar que la base de datos funciona como mínimo el 99,99 % de las veces (para obtener más información en relación con el SLA específico de los distintos niveles, consulte Contrato de nivel de servicio para Azure SQL Database), sin preocuparse del impacto de las operaciones de mantenimiento y las interrupciones.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. Azure controla automáticamente tareas de mantenimiento críticas, como aplicación de revisiones, copias de seguridad, actualizaciones de Windows y SQL, así como los eventos no planeados, como los errores subyacentes de hardware, software o red.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. Cuando se conmute por error la instancia de SQL subyacente o se le apliquen revisiones, no se notará el tiempo de inactividad si usa la lógica de reintento de su aplicación.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 puede recuperarse rápidamente, incluso en las circunstancias más críticas, asegurando que los datos estén siempre disponibles.Azure SQL Database can quickly recover even in the most critical circumstances ensuring that your data is always available.

La solución de alta disponibilidad está diseñada para garantizar que los datos confirmados nunca se pierden debido a errores, que las operaciones de mantenimiento no afectan a la carga de trabajo y que la base de datos no será un único punto de error en la arquitectura 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. No hay ventanas de mantenimiento ni tiempos de inactividad que puedan requerir que detenga la carga de trabajo mientras se actualiza o se mantiene la base de datos.There are no maintenance windows or downtimes that should require you to stop the workload while the database is upgraded or maintained.

Existen dos modelos de arquitectura de alta disponibilidad que se usan en Azure SQL Database:There are two high-availability architectural models that are used in Azure SQL Database:

  • El modelo de disponibilidad estándar que se basa en la separación del proceso y el almacenamiento.Standard availability model that is based on a separation of compute and storage. Depende de la alta disponibilidad y la confiabilidad de la capa de almacenamiento remoto.It relies on high availability and reliability of the remote storage tier. Esta arquitectura va dirigida a las aplicaciones de negocio preocupadas por la economía que pueden permitirse una cierta degradación del rendimiento durante las actividades de mantenimiento.This architecture targets budget-oriented business applications that can tolerate some performance degradation during maintenance activities.
  • El modelo de disponibilidad premium que se basa en un clúster de procesos del motor de base de datos.Premium availability model that is based on a cluster of database engine processes. Depende del hecho de que siempre hay un quórum de nodos del motor de base de datos disponibles.It relies on the fact that there is always a quorum of available database engine nodes. Esta arquitectura va dirigida a aplicaciones críticas con alto rendimiento de E/S y elevada tasa de transacciones, y garantiza un impacto mínimo sobre el rendimiento de la carga de trabajo durante las actividades de mantenimiento.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 se ejecuta en la versión estable más reciente del Motor de base de datos de SQL Server y del sistema operativo Windows, y la mayoría de los usuarios no advierten que las actualizaciones se realizan 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.

Disponibilidad de los niveles de servicio Básico, Estándar y Uso generalBasic, Standard, and General Purpose service tier availability

Estos niveles de servicio aprovechan la arquitectura de disponibilidad estándar.These service tiers leverage the standard availability architecture. En la siguiente ilustración se muestran cuatro nodos diferentes con las capas de proceso y almacenamiento separadas.The following figure shows four different nodes with the separated compute and storage layers.

Separación de proceso y almacenamiento

El modelo de disponibilidad estándar incluye dos capas:The standard availability model includes two layers:

  • Una capa de proceso sin estado que ejecuta el proceso sqlservr.exe y que solo contiene datos transitorios y almacenados en caché, como las bases de datos modelo y TempDB en la memoria SSD conectada, y la memoria caché de planes, el grupo de búferes y el grupo de almacén de columnas en la memoria.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. Este nodo sin estado lo opera Azure Service Fabric, que inicializa sqlservr.exe, controla el estado del nodo y realiza la conmutación por error a otro nodo si es necesario.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.
  • Una capa de datos con estado con archivos de base de datos (.mdf o .ldf) que se almacenan en Azure Blob Storage.A stateful data layer with the database files (.mdf/.ldf) that are stored in Azure Blob storage. Azure Blob Storage presenta características integradas de redundancia y disponibilidad de los datos.Azure blob storage has built-in data availability and redundancy feature. Garantiza que todos los registros del archivo de registro o de la página del archivo de datos se conservarán incluso si se bloquea el proceso de 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.

Siempre que se actualice el motor de base de datos o el sistema operativo, o se detecte un error, Azure Service Fabric moverá el proceso sin estado de SQL Server a otro nodo de proceso sin estado son capacidad suficiente disponible.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. Los datos de Azure Blob Storage no resultan afectados por esta operación y los archivos de registro o de datos se asocian al proceso de SQL Server recién inicializado.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. Aunque este proceso garantiza el 99,99 % de disponibilidad, una carga de trabajo pesada podría experimentar una degradación del rendimiento durante la transición dado que la nueva instancia de SQL Server se inicia con la caché inactiva.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.

Disponibilidad de los niveles de servicio Premium y Crítico para la empresaPremium and Business Critical service tier availability

Los niveles de servicio premium y crítico para la empresa aprovechan el modelo de disponibilidad premium, que integra recursos de proceso (proceso del Motor de base de datos de SQL Server) y almacenamiento (SSD conectado localmente) en un único nodo.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. Para conseguir alta disponibilidad se replica el proceso y el almacenamiento en nodos adicionales a fin de crear un clúster formado por tres o cuatro nodos.High availability is achieved by replicating both compute and storage to additional nodes creating a three to four-node cluster.

Clúster de nodos del motor de base de datos

Los archivos de base de datos subyacentes (.mdf o .ldf) se colocan en el almacenamiento SSD conectado para proporcionar una latencia muy baja de E/S para la carga de trabajo.The underlying database files (.mdf/.ldf) are placed on the attached SSD storage to provide very low latency IO to your workload. Para implementar alta disponibilidad se usa una tecnología parecida a la de los grupos de disponibilidad AlwaysOn de SQL Server.High availability is implemented using a technology similar to SQL Server Always On Availability Groups. El clúster incluye una única réplica principal (proceso de SQL Server) que es accesible para las cargas de trabajo de cliente de lectura y escritura, y hasta tres réplicas secundarias (proceso y almacenamiento) que contienen copias de los datos.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. El nodo principal inserta constantemente los cambios en los nodos secundarios en orden y garantiza que los datos se sincronizan con al menos una réplica secundaria antes de confirmar cada transacción.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. Este proceso garantiza que si el nodo principal se bloquea por cualquier motivo, siempre hay un nodo totalmente sincronizado al que conmutar por error.This process guarantees that if the primary node crashes for any reason, there is always a fully synchronized node to fail over to. La conmutación por error se inicia en Azure Service Fabric.The failover is initiated by the Azure Service Fabric. Una vez que la réplica secundaria se convierte en el nuevo nodo principal, se crea otra réplica secundaria para garantizar que el clúster tiene suficientes nodos (conjunto de quórum).Once the secondary replica becomes the new primary node, another secondary replica is created to ensure the cluster has enough nodes (quorum set). Cuando finaliza la conmutación por error, las conexiones SQL se redirigen automáticamente al nuevo nodo principal.Once failover is complete, SQL connections are automatically redirected to the new primary node.

Como ventaja adicional, el modelo de disponibilidad premium incluye la posibilidad de redirigir las conexiones SQL de solo lectura a una de las réplicas secundarias.As an extra benefit, the premium availability model includes the ability to redirect read-only SQL connections to one of the secondary replicas. Esta característica se denomina escalado horizontal de lectura y proporciona el 100 % de capacidad de proceso adicional al mismo costo para descargar operaciones de solo lectura, como cargas de trabajo de análisis, desde la réplica principal.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.

Disponibilidad del nivel de servicio HiperescalaHyperscale service tier availability

La arquitectura del nivel de servicio Hiperescala se describe en Arquitectura de funciones distribuidas.The Hyperscale service tier architecture is described in Distributed functions architecture.

Arquitectura funcional de Hiperescala

El modelo de disponibilidad de Hiperescala incluye cuatro capas:The availability model in Hyperscale includes four layers:

  • Una capa de proceso sin estado que ejecuta los procesos sqlservr.exe y que solo contiene datos transitorios y almacenados en caché, como la memoria caché RBPEX sin cobertura, TempDB, la base de datos modelo, etc. en la memoria SSD conectada, la memoria caché de planes, el grupo de búferes y el grupo de almacén de columnas en memoria.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. Esta capa sin estado incluye la réplica de proceso principal y, opcionalmente, un número de réplicas de proceso secundarias que pueden servir como destinos de conmutación por error.This stateless layer includes the primary compute replica and optionally a number of secondary compute replicas that can serve as failover targets.
  • Una capa de almacenamiento sin estado formada por servidores de páginas.A stateless storage layer formed by page servers. Esta capa es el motor de almacenamiento distribuido para los procesos sqlservr.exe que se ejecutan en las réplicas de proceso.This layer is the distributed storage engine for the sqlservr.exe processes running on the compute replicas. Cada servidor de páginas solo contiene datos transitorios y almacenados en caché, como la memoria caché de RBPEX de cobertura en la SSD conectada y las páginas de datos almacenadas en memoria caché.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áginas tiene un servidor de páginas emparejadas en una configuración activa-activa para proporcionar equilibrio de carga, redundancia y una alta disponibilidad.Each page server has a paired page server in an active-active configuration to provide load balancing, redundancy, and high availability.
  • Una capa de almacenamiento de registro de transacciones con estado formada por el nodo de proceso que ejecuta el proceso de servicio de registro, la zona de entrada del registro de transacciones y el almacenamiento a largo plazo del registro de transacciones.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. La zona de aterrizaje y el almacenamiento a largo plazo usan Azure Storage, que proporciona disponibilidad y redundancia para el registro de transacciones, lo que garantiza la durabilidad de los datos para las transacciones confirmadas.Landing zone and long term storage use Azure Storage, which provides availability and redundancy for transaction log, ensuring data durability for committed transactions.
  • Una capa de almacenamiento de datos con estado con los archivos de base de datos (.mdf/.ndf) que se almacenan en Azure Storage y que los servidores de páginas actualizan.A stateful data storage layer with the database files (.mdf/.ndf) that are stored in Azure Storage and are updated by page servers. Esta capa utiliza las características de disponibilidad de datos y redundancia de Azure Storage.This layer uses data availability and redundancy features of Azure Storage. Garantiza que todas las páginas de un archivo de datos se conserven aunque se bloqueen los procesos de otras capas de la arquitectura de Hiperescala o si se produzca un error en los nodos de proceso.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.

Los nodos de proceso de todas las capas de Hiperescala se ejecutan en Azure Service Fabric, que controla el estado de cada nodo y realiza conmutaciones por error en los nodos correctos disponibles según sea necesario.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 más información sobre la alta disponibilidad en Hiperescala, consulte Alta disponibilidad de base de datos en Hiperescala.For more information on high availability in Hyperscale, see Database High Availability in Hyperscale.

Configuración de redundancia de zonaZone redundant configuration

De forma predeterminada, el clúster de nodos del modelo de disponibilidad premium se crea en el mismo centro de datos.By default, the cluster of nodes for the premium availability model is created in the same datacenter. Con la incorporación de Azure Availability Zones, SQL Database puede colocar diferentes réplicas de la base de datos Crítico para la empresa en diferentes zonas de disponibilidad de la misma región.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 un punto de error único, también se duplica el anillo de control en varias zonas como tres anillos de puerta de enlace.To eliminate a single point of failure, the control ring is also duplicated across multiple zones as three gateway rings (GW). El enrutamiento a un anillo de puerta de enlace específico se controla mediante Azure Traffic Manager (ATM).The routing to a specific gateway ring is controlled by Azure Traffic Manager (ATM). Como la configuración de redundancia de zona de los niveles de servicio premium y crítico para la empresa no crean redundancia adicional de base de datos, puede habilitarla sin costo 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. Si selecciona una configuración de redundancia de zona, puede hacer que las bases de datos de los niveles premium o crítico para la empresa sean resistentes a un número mucho mayor de errores, como interrupciones catastróficas de los centros de datos, sin necesidad de cambiar la lógica de la aplicación.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. También puede aplicar la configuración de redundancia de zona a cualquier grupo o base de datos existente del nivel Premium o Crítico para la empresa.You can also convert any existing Premium or Business Critical databases or pools to the zone redundant configuration.

Como las bases de datos con redundancia de zona tienen réplicas en distintos centros de datos situados a cierta distancia entre ellos, la mayor latencia de red puede aumentar el tiempo de confirmación y, por lo tanto, afectar al rendimiento de algunas cargas de trabajo 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. Siempre puede volver a la configuración de zona única; para ello, deshabilite la configuración de redundancia de zona.You can always return to the single-zone configuration by disabling the zone redundancy setting. Este proceso es una operación en línea similar a la actualización normal del nivel de servicio.This process is an online operation similar to the regular service tier upgrade. Al final del proceso, la base de datos o el grupo se migra desde un anillo con redundancia de zona a un anillo de zona única, o viceversa.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

Los grupos elásticos y las bases de datos con redundancia de zona solo se admiten actualmente en los niveles de servicio premium y crítico para la empresa de algunas regiones.Zone redundant databases and elastic pools are currently only supported in the Premium and Business Critical service tiers in select regions. Cuando se usa el nivel crítico para la empresa, la configuración de redundancia de zona solo está disponible cuando se selecciona el hardware de proceso Gen5.When using the Business Critical tier, zone redundant configuration is only available when the Gen5 compute hardware is selected. Para información actualizada sobre las regiones que admiten bases de datos con redundancia de zona, consulte Soporte técnico de servicios por región.For up to date information about the regions that support zone redundant databases, see Services support by region.
Esta característica no está disponible en Instancia administrada.This feature is not available in Managed instance.

En el diagrama siguiente se ilustra la versión con redundancia de zona de la arquitectura de alta disponibilidad:The zone redundant version of the high availability architecture is illustrated by the following diagram:

arquitectura de alta disponibilidad con redundancia de zona

Recuperación de base de datos acelerada (ADR)Accelerated Database Recovery (ADR)

Recuperación de base de datos acelerada (ADR) es una nueva característica del motor de base de datos SQL que mejora considerablemente la disponibilidad de la base de datos, en especial en presencia de transacciones de larga duración.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á actualmente disponible para bases de datos únicas, grupos elásticos y Azure SQL Data Warehouse.ADR is currently available for single databases, elastic pools, and Azure SQL Data Warehouse.

Prueba de la resistencia a errores de la aplicaciónTesting application fault resiliency

La alta disponibilidad es una parte fundamental de la plataforma Azure SQL Database que funciona de modo transparente para la aplicación de base de datos.High availability is a fundamental part of Azure SQL Database platform that works transparently for your database application. Sin embargo, podría ser conveniente probar el modo en que las operaciones de conmutación por error automáticas iniciadas durante los eventos planeados o no planeados afectarían a la aplicación antes de implementarla para producción.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. Puede llamar a una API especial para reiniciar una base de datos o un grupo elástico, que a su vez activará una conmutación por error.You can call a special API to restart a database or an elastic pool, which will in turn trigger a failover. En el caso de una base de datos con redundancia de zona o un grupo elástico, la llamada a la API daría lugar a la redirección de las conexiones de cliente al nuevo elemento principal en una zona de disponibilidad diferente a la zona principal anterior.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. Por lo tanto, además de probar cómo afecta la conmutación por error a las sesiones de base de datos existentes, también puede comprobar si cambia el rendimiento de un extremo a otro debido a los cambios en la latencia de la red.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. Dado que la operación de reinicio es intrusiva y un gran número de ellas podría agotar la plataforma, solo se permite una llamada de conmutación por error cada 30 minutos para cada base de datos o grupo 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.

Se puede iniciar una conmutación por error mediante la API de REST o PowerShell.A failover can be initiated using REST API or PowerShell. Para más información sobre la API de REST, consulte Conmutación por error de la base de datos y Conmutación por error del grupo elástico.For REST API, see Database failover and Elastic pool failover. Para PowerShell, consulte Invoke-AzSqlDatabaseFailover y Invoke-AzSqlElasticPoolFailover.For PowerShell, see Invoke-AzSqlDatabaseFailover and Invoke-AzSqlElasticPoolFailover. También se pueden realizar llamadas a la API de REST desde la CLI de Azure mediante el comando az rest.The REST API calls can also be made from Azure CLI using az rest command.

Importante

El comando de conmutación por error no está disponible actualmente en el nivel de servicio Hiperescala ni para Instancia administrada.The Failover command is currently not available in the Hyperscale service tier and for Managed Instance.

ConclusiónConclusion

Azure SQL Database presenta una solución de alta disponibilidad incorporada, que está totalmente integrada con la plataforma Azure.Azure SQL Database features a built-in high availability solution, that is deeply integrated with the Azure platform. Depende de Service Fabric para la detección y la recuperación de errores, de Azure Blob Storage para la protección de datos y de Availability Zones para la mayor tolerancia a errores.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 mismo tiempo, Azure SQL Database aprovecha la tecnología Grupo de disponibilidad AlwaysOn de SQL Server para la replicación y la conmutación por error.In addition, Azure SQL database leverages the Always On Availability Group technology from SQL Server for replication and failover. La combinación de estas tecnologías permite que las aplicaciones obtengan todos los beneficios de un modelo de almacenamiento mixto y puedan admitir los SLA más exigentes.The combination of these technologies enables applications to fully realize the benefits of a mixed storage model and support the most demanding SLAs.

Pasos siguientesNext steps