Descripción de las opciones de alta disponibilidad y recuperación ante desastres para implementaciones de PaaS
En lo que respecta a la disponibilidad, PaaS es diferente; solo puede configurar las opciones que proporciona Azure.
Para las opciones basadas en SQL Server de Azure SQL Database e Instancia administrada de Azure SQL Database, las opciones son las de replicación geográfica activa (solo Azure SQL Database) y grupos de conmutación por error automáticos (Azure SQL Database o Instancia administrada de Azure SQL Database).
Azure Database for MySQL tiene un acuerdo de nivel de servicio que garantiza una disponibilidad del 99,99 %, lo que significa que el tiempo de inactividad es prácticamente nulo. Para Azure Database for MySQL, si se produce un problema de nivel de nodo, como un error de hardware, se iniciará un mecanismo integrado de conmutación por error. Todos los cambios transaccionales en la base de datos MySQL se escriben de forma sincrónica en el almacenamiento en el momento de la confirmación. Si se produce una interrupción en el nivel de nodo, el servidor de bases de datos crea automáticamente otro nodo y adjunta el almacenamiento de datos.
Desde el punto de vista de una aplicación, tendrá que programar la lógica de reintento necesaria, ya que todas las conexiones se quitan como parte de la rotación del nuevo nodo y se pierden todas las transacciones activas. Este proceso se considera un procedimiento recomendado para cualquier aplicación en la nube, ya que se debe diseñar para controlar los errores transitorios.
Azure Database for PostgreSQL usa un modelo similar a MySQL en su modelo de implementación estándar; pero Azure PostgreSQL también ofrece una solución de Hiperescala de escalabilidad horizontal denominada Citus. Citus proporciona escalabilidad horizontal y alta disponibilidad adicional para un grupo de servidores. Si está habilitada, se configura una réplica en espera para cada nodo de un grupo de servidores, lo que también aumentaría el costo, ya que se duplicaría el número de servidores del grupo. En caso de que el nodo original sufra un problema, como dejar de responder o conmutar por error, el modo de espera toma su lugar. Los datos se mantienen sincronizados por medio de la replicación de streaming sincrónica de PostgreSQL.
Como sucede con Azure Database for MySQL, las soluciones en las que se usa Azure Database for PostgreSQL también deben incluir lógica de reintento en la aplicación debido a la pérdida de conexiones y de transacciones en curso.
Tanto Azure Database for MySQL como PostgreSQL admiten la opción de una réplica de lectura. Esto significa que se puede usar una réplica para actividades como la creación de informes a fin de descargar el trabajo de la base de datos principal. Una réplica de lectura también mejora la disponibilidad porque existe en otra región.