Suscriptores de replicación y grupos de disponibilidad AlwaysOn (SQL Server)
Cuando el grupo de disponibilidad AlwaysOn que contiene una base de datos que es un suscriptor de replicación realiza una conmutación por error, se puede producir un error en la suscripción de replicación. Para los suscriptores transaccionales, el agente de escucha seguirá replicando automáticamente si la suscripción usa el nombre del agente de escucha del grupo de disponibilidad del suscriptor. Para los suscriptores de mezcla, un administrador de replicación debe volver a configurar manualmente el suscriptor volviendo a crear la suscripción.
Qué se admite
La replicación de SQL Server admite la conmutación por error automática del publicador, la conmutación por error de 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 de una base de datos de disponibilidad. AlwaysOn no puede combinarse con los escenarios Websync y ssNoVersion Compact.
Conmutación por error de una suscripción de extracción de mezcla
Se produce un error en una suscripción de extracción 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 de servidor que hospeda la réplica principal, que no está disponible porque se ha producido un error en la instancia de servidor.
Conmutación por error de una suscripción de inserción de mezcla
Se produce un error en una suscripción de inserción tras la conmutación por error del grupo de disponibilidad porque el agente de inserción ya no puede conectarse a la base de datos de suscripciones original en el suscriptor original.
Cómo crear una suscripción transaccional en un entorno de AlwaysOn
Para la replicación transaccional, utilice los pasos siguientes para configurar y conmutar por error un grupo de disponibilidad de suscriptor:
Antes de crear la suscripción, agregue la base de datos del suscriptor al grupo de disponibilidad AlwaysOn adecuado.
Agregue el agente de escucha del grupo de disponibilidad del suscriptor como un servidor vinculado a 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.
Mediante el script de la sección Crear una suscripción de inserción de replicación transaccional puede crear la suscripción con el nombre del agente de escucha de 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]
La suscripción se debe crear mediante un script Transact-SQL (no se puede crear mediante Management Studio).
Si se va a crear una suscripción de extracción:
En Management Studio, en el nodo principal del suscriptor, abra el árbol del Agente SQL Server.
Identifique el trabajo Agente de distribución de extracción y edite el trabajo.
En el paso de trabajo Ejecutar agente, active los parámetros -Publisher y -Distributor. Asegúrese de que estos parámetros contienen los nombres de servidor y de instancia directos correctos del servidor del publicador y del distribuidor.
Cambie el parámetro -Subscriber al nombre del agente de escucha del grupo de disponibilidad del suscriptor.
Cuando cree la suscripción siguiendo estos pasos, no tendrá que hacer nada tras una conmutación por error.
Crear una suscripción de inserción 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 que el grupo de disponibilidad del suscriptor conmuta por error
Para la replicación de mezcla, un administrador de replicación debe volver a configurar manualmente el suscriptor con los pasos siguientes:
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).
Vuelva a crear la suscripción, para ello cree una nueva suscripción, comenzando por una nueva instantánea.
[!NOTA]
El proceso actual no es apto para los suscriptores de replicación de mezcla, aunque el escenario principal para la replicación de mezcla son los usuarios desconectados (escritorio, equipos portátiles, dispositivos de auricular) que no utilizarán los grupos de disponibilidad AlwaysOn en el suscriptor.