Compartir por


Configuración de la replicación con grupos de disponibilidad Always On

Se aplica a:SQL Server en Windows

La configuración de la replicación y los grupos de disponibilidad AlwaysOn de SQL Server conlleva siete pasos. Cada paso se describe con más detalle en las secciones siguientes.

1. Configurar las publicaciones y suscripciones de la base de datos

Configurar el distribuidor

La base de datos de distribución no se puede colocar en un grupo de disponibilidad con SQL Server 2012 y SQL Server 2014. La colocación de la base de datos de distribución en un grupo de disponibilidad es compatible con SQL 2016 y versiones posteriores, excepto para las bases de datos de distribución que se usan en topologías de replicación de mezcla, bidireccional o punto a punto. Para obtener más información, consulte Configuración de la base de datos de distribución de replicación en el grupo de disponibilidad AlwaysOn.

  1. Configure la distribución en el distribuidor. Si se usan procedimientos almacenados para la configuración, ejecute sp_adddistributor Use el parámetro @password para identificar la contraseña que se usará cuando un publicador remoto se conecte al distribuidor. También se necesitará la contraseña de cada publicador remoto cuando el distribuidor remoto está configurado.

    USE master;
    GO
    
    EXECUTE sys.sp_adddistributor
        @distributor = 'MyDistributor',
        @password = '**Strong password for distributor**';
    
  2. Cree la base de datos de distribución en el distribuidor. Si se usan procedimientos almacenados para la configuración, ejecute sp_adddistributiondb

    USE master;
    GO
    
    EXECUTE sys.sp_adddistributiondb
        @database = 'distribution',
        @security_mode = 1;
    
  3. Configure el publicador remoto. Si se usan procedimientos almacenados para configurar el distribuidor, ejecute sp_adddistpublisher El parámetro @security_mode se usa para determinar cómo el procedimiento almacenado de validación del publicador, ejecutado desde los agentes de replicación, se conecta al servidor principal actual. Si se establece en 1, la autenticación de Windows se usa para conectarse a la réplica principal actual. Si se establece en 0, se usa la autenticación de SQL Server con los valores especificados de @inicio de sesión y @contraseña. El inicio de sesión y la contraseña especificados deben ser válidos en cada réplica secundaria para que el procedimiento almacenado de validación se conecte correctamente a esa réplica.

    Nota:

    Si algunos agentes de replicación modificados se ejecutan en un equipo distinto del distribuidor, el uso de la autenticación de Windows para la conexión a la principal requerirá que la autenticación Kerberos se configure para la comunicación entre equipos host de réplica. El uso de un inicio de sesión de SQL Server para la conexión a la principal actual no necesita la autenticación Kerberos.

    USE master;
    GO
    
    EXECUTE sys.sp_adddistpublisher
        @publisher = 'AGPrimaryReplicaHost',
        @distribution_db = 'distribution',
        @working_directory = '\\MyReplShare\WorkingDir',
        @login = 'MyPubLogin',
        @password = '**Strong password for publisher**';
    

Para obtener más información, consulte sp_adddistpublisher.

Configura el editor en el editor original

  1. Configure el distribuidor remoto. Si se usan procedimientos almacenados para configurar el publicador, ejecute sp_adddistributor Especificar el mismo valor para @password que usó cuando sp_adddistrbutor se ejecutó en el distribuidor para configurar la distribución.

    EXECUTE sys.sp_adddistributor
        @distributor = 'MyDistributor',
        @password = 'MyDistPass';
    
  2. Habilite la base de datos para replicación. Si se usan procedimientos almacenados para configurar el publicador, ejecute sp_replicationdboption Si se va a configurar la replicación transaccional y de mezcla para la base de datos, cada uno debe estar habilitado.

    USE master;
    GO
    
    EXECUTE sys.sp_replicationdboption
        @dbname = 'MyDBName',
        @optname = 'publish',
        @value = 'true';
    
    EXECUTE sys.sp_replicationdboption
        @dbname = 'MyDBName',
        @optname = 'merge publish',
        @value = 'true';
    
  3. Cree la publicación de replicación, los artículos y las suscripciones. Para obtener más información acerca de cómo configurar la replicación, vea los objetos Publicar datos y Base de datos.

2. Configurar el grupo de disponibilidad

En la principal deseada, cree el grupo de disponibilidad con la base de datos publicada (o que va a ser publicada) como una base de datos de miembros. Si usa el Asistente para grupo de disponibilidad, puede permitir que el asistente sincronice inicialmente las bases de datos de réplica secundaria o puede realizar la inicialización manualmente mediante copias de seguridad y restauración.

Cree un agente de escucha DNS para el grupo de disponibilidad que utilizarán los agentes de replicación para conectarse a la principal actual. El nombre del agente de escucha especificado se utilizará como el destino de la redirección para el par publicador original y base de datos publicada. Por ejemplo, si usa DDL para configurar el grupo de disponibilidad, se puede usar el ejemplo de código siguiente para especificar un agente de escucha de grupo de disponibilidad para un grupo de disponibilidad existente denominado MyAG:

ALTER AVAILABILITY GROUP 'MyAG'
    ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));

Para más información, consulte Creación y configuración de grupos de disponibilidad (SQL Server).

3. Asegúrese de que todos los hosts de réplica secundaria están configurados para la replicación

Compruebe que se ha configurado SQL Server en cada host de réplica secundaria para admitir la replicación. La siguiente consulta se puede ejecutar en cada host de réplica secundaria para determinar si está instalada la replicación:

USE master;
GO

DECLARE @installed AS INT;

EXECUTE @installed = sys.sp_MS_replication_installed;

SELECT @installed;

Si @installed es 0, se debe agregar la replicación a la instalación de SQL Server.

4. Configurar los hosts de réplica secundaria como publicadores de replicación

Una réplica secundaria no puede actuar como publicador o republicador, pero la replicación debe configurarse para que la réplica secundaria pueda tomar el control después de una conmutación por error. En el distribuidor, configure la distribución para cada host de réplica secundaria. Especifique la misma base de datos de distribución y directorio de trabajo que se especificó cuando se agregó el publicador original en el distribuidor. Si usa procedimientos almacenados para configurar la distribución, use sp_adddistpublisher para asociar los publicadores remotos al distribuidor. Si el publicador original utilizó @login y @password , especifique los mismos valores al agregar los hosts de la réplica secundaria como publicadores.

EXECUTE sys.sp_adddistpublisher
    @publisher = 'AGSecondaryReplicaHost',
    @distribution_db = 'distribution',
    @working_directory = '\\MyReplShare\WorkingDir',
    @login = 'MyPubLogin',
    @password = '**Strong password for publisher**';

En cada host de réplica secundaria, configure la distribución. Identifique el distribuidor del publicador original como distribuidor remoto. Use la misma contraseña que fue utilizada cuando sp_adddistributor fue ejecutado originalmente por el distribuidor. Si se usan procedimientos almacenados para configurar la distribución, el parámetro @password de sp_adddistributor se usa para especificar la contraseña.

EXECUTE sp_adddistributor
    @distributor = 'MyDistributor',
    @password = '**Strong password for distributor**';

En cada host de réplica secundaria, asegúrese de que los suscriptores de inserción de publicaciones de la base de datos aparezcan como servidores vinculados. Si se usan procedimientos almacenados para configurar los publicadores remotos, use sp_addlinkedserver para agregar los suscriptores (si aún no están presentes) como servidores vinculados a los publicadores.

EXECUTE sys.sp_addlinkedserver @server = 'MySubscriber';

5. Redirigir el publicador original al nombre del agente de escucha del grupo de disponibilidad

En el distribuidor, en la base de datos de distribución, ejecute el procedimiento sp_redirect_publisher almacenado para asociar el editor original y la base de datos publicada con el nombre del agente de escucha del grupo de disponibilidad.

USE distribution;
GO

EXECUTE sys.sp_redirect_publisher
    @original_publisher = 'MyPublisher',
    @publisher_db = 'MyPublishedDB',
    @redirected_publisher = 'MyAGListenerName';

6. Ejecute el procedimiento almacenado de validación de replicación para comprobar la configuración.

En el distribuidor, en la base de datos de distribución, ejecute el procedimiento sp_validate_replica_hosts_as_publishers almacenado para comprobar que todos los hosts de réplica están configurados para que actúen como publicadores para la base de datos publicada.

USE distribution;
GO

DECLARE @redirected_publisher AS sysname;

EXECUTE sys.sp_validate_replica_hosts_as_publishers
    @original_publisher = 'MyPublisher',
    @publisher_db = 'MyPublishedDB',
    @redirected_publisher = @redirected_publisher OUTPUT;

El procedimiento almacenado sp_validate_replica_hosts_as_publishers debe ejecutarse desde una sesión de conexión con autorización suficiente en cada host réplica del grupo de disponibilidad a fin de obtener información sobre el grupo de disponibilidad. A diferencia de sp_validate_redirected_publisher, usa las credenciales del llamador y no usa las credenciales de inicio de sesión guardadas en msdb.dbo.MSdistpublishers para conectarse a las réplicas del grupo de disponibilidad.

Error al validar los hosts de réplica secundaria

sp_validate_replica_hosts_as_publishers falla con el siguiente error al validar hosts de réplica secundaria que no permiten el acceso de lectura o requieren que se especifique la intención de lectura.

Mensaje 21899, nivel 11, estado 1, procedimiento sp_hadr_verify_subscribers_at_publisher, línea 109

La consulta en el publicador redireccionado "MyReplicaHostName" para determinar si hay entradas de sysserver para los suscriptores del publicador original "MyOriginalPublisher" no se ha podido realizar por el error "976", mensaje de error "Error 976, Level 14, State 1, Message: La base de datos de destino "MyPublishedDB" participa en un grupo de disponibilidad y actualmente no es accesible para las consultas. El movimiento de datos está suspendido o la réplica de disponibilidad no está habilitada para acceso de lectura. Para permitir el acceso de solo lectura a esta y a otras bases de datos del grupo de disponibilidad, habilite el acceso de lectura en una o varias réplicas de disponibilidad secundarias del grupo. Para obtener más información, consulte la instrucción ALTER AVAILABILITY GROUP en los Libros en pantalla de SQL Server.

Se encontraron uno o varios errores de validación del publicador para el host de réplica 'MyReplicaHostName'.

Este es el comportamiento esperado. Debe comprobar la presencia de las entradas del servidor del suscriptor en estos host de réplica secundaria consultando las entradas de sysserver directamente en el host.

7. Agregar el publicador original al Monitor de replicación

En cada réplica del grupo de disponibilidad, agregue el publicador original al Monitor de replicación.

Replication

Creación y configuración de un grupo de disponibilidad