Compartir a través de


Suscriptores de replicación y grupos de disponibilidad AlwaysOn (SQL Server)

Cuando un grupo de disponibilidad AlwaysOn que contiene una base de datos que es un suscriptor de replicación realiza un failover, la suscripción de replicación podría fallar. Para los suscriptores de inserción de replicación transaccional, el agente de distribución se seguirá replicando automáticamente después de una conmutación por error si la suscripción se creó mediante el nombre de la escucha de grupo de disponibilidad. Para los suscriptores de extracción de replicación transaccional, el agente de distribución se seguirá replicando automáticamente después de una conmutación por error si la suscripción se creó mediante el nombre de la escucha de grupo de disponibilidad y el servidor del suscriptor original está activo y en ejecución. El motivo es que los trabajos del agente de distribución solo se crean en el suscriptor original (réplica principal del grupo de disponibilidad). Para los suscriptores de mezcla, un administrador de replicación debe volver a configurar manualmente el suscriptor volviendo a crear la suscripción.

¿Qué está respaldado?

La replicación de SQL Server admite la conmutación automática por error del publicador, la conmutación automática por error de los suscriptores transaccionales y la conmutación por error manual de los suscriptores de mezcla. No se admite la conmutación por error de un distribuidor en una base de datos de disponibilidad. AlwaysOn no se puede combinar con escenarios de Websync y SQL Server Compact.

Conmutación por error de una suscripción de extracción de mezcla

Una suscripción de extracción falla tras la conmutación por error del grupo de disponibilidad, porque el agente de extracción no puede encontrar los trabajos almacenados en la base de datos msdb de la instancia del servidor que hospeda la réplica principal. Esto se debe a que dicha instancia del servidor ha fallado y no está disponible.

Conmutación por error de una suscripción de publicación de mezcla

Una suscripción de inserción falla cuando ocurre una conmutación por error en el grupo de disponibilidad, porque el agente de inserción ya no puede conectarse a la base de datos de suscripción original en el suscriptor original.

Cómo crear una suscripción transaccional en un entorno AlwaysOn

Para la replicación transaccional, siga estos pasos para configurar y conmutar por error un grupo de disponibilidad de suscriptor:

  1. Antes de crear la suscripción, agregue la base de datos de suscriptor al grupo de disponibilidad AlwaysOn adecuado.

  2. Agregue el Listener del grupo de disponibilidad del suscriptor como servidor vinculado para todos los nodos del grupo de disponibilidad. Este paso garantiza que todos los posibles asociados de conmutación por error sean conscientes del agente de escucha y se puedan conectar al mismo.

  3. Con el script de la sección Creación de una suscripción de inserción de replicación transaccional siguiente, cree la suscripción con el nombre del agente de escucha del grupo de disponibilidad del suscriptor. Después de una conmutación por error, el nombre del agente de escucha siempre sigue siendo válido, mientras que el nombre de servidor real del suscriptor dependerá del nodo real que se convirtió en el nuevo primario.

    Nota:

    Es preciso que la suscripción se cree mediante un script de Transact-SQL y no se puede crear con Management Studio.

  4. Si crea una suscripción de extracción:

    1. En Management Studio, en el nodo de suscriptor principal, abra el árbol del Agente SQL Server.

    2. Identifique el trabajo del Agente de Distribución Pull y edite el trabajo.

    3. En el paso Ejecutar trabajo del Agente , compruebe los -Publisher parámetros y -Distributor . Asegúrese de que estos parámetros contienen los nombres de instancia y servidor directo correctos del servidor publicador y distribuidor.

    4. Cambie el parámetro -Subscriber al nombre del oyente del grupo de disponibilidad del suscriptor.

Al crear la suscripción siguiendo estos pasos, no tendrá que hacer nada después de una conmutación por error.

Creación de una suscripción push de replicación transaccional

-- commands to execute at the publisher, in the publisher database:  
use [<publisher database name>]  
EXEC sp_addsubscription @publication = N'<publication name>',   
       @subscriber = N'<availability group listener name>',   
       @destination_db = N'<subscriber database name>',   
       @subscription_type = N'Push',   
       @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0;  
GO  
  
EXEC sp_addpushsubscription_agent @publication = N'<publication name>',   
       @subscriber = N'<availability group listener name>',   
       @subscriber_db = N'<subscriber database name>',   
       @job_login = null, @job_password = null, @subscriber_security_mode = 1;  
GO  

Para reanudar los agentes de mezcla después de la conmutación por error del grupo de disponibilidad del suscriptor

Para la replicación de mezcla, un administrador de replicación debe volver a configurar manualmente el suscriptor con los pasos siguientes:

  1. Ejecute sp_subscription_cleanup para eliminar la suscripción antigua del suscriptor. Realice esta acción en la nueva réplica principal (que era antes la réplica secundaria).

  2. Vuelva a crear la suscripción, para ello cree una nueva suscripción, comenzando por una nueva instantánea.

Nota:

El proceso actual es inconveniente para los suscriptores de replicación de combinación; sin embargo, el escenario principal para la replicación de combinación son los usuarios desconectados (equipos de escritorio, portátiles, dispositivos móviles) que no utilizarán los grupos de disponibilidad AlwaysOn en el suscriptor.