Share via


Configurar la replicación para grupos de disponibilidad AlwaysOn (SQL Server)

La configuración de la replicación y los grupos de disponibilidad AlwaysOn requiere 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.

  2. Configurar el grupo de disponibilidad AlwaysOn.

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

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

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

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

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

Los pasos 1 y 2 se pueden realizar en cualquier orden.

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

Configurar el distribuidor

El distribuidor no debe ser un host para ninguna de las réplicas actuales (o previstas) del grupo de disponibilidad del que la base de datos de publicación es (o será) un miembro.

  1. Configure la distribución en el distribuidor. Si se utilizan procedimientos almacenados para la configuración, ejecute sp_adddistributor. Use el parámetro de @password para identificar la contraseña que se utilizará 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
    EXEC sys.sp_adddistributor
        @distributor = 'MyDistributor',
        @password = '**Strong password for distributor**';
    
  2. Cree la base de datos de distribución en el distribuidor. Si se utilizan procedimientos almacenados para la configuración, ejecute sp_adddistributiondb.

    USE master;
    GO
    EXEC sys.sp_adddistributiondb
        @database = 'distribution',
        @security_mode = 1;
    
  3. Configure el publicador remoto. Si se utilizan procedimientos almacenados para configurar el distribuidor, ejecute sp_adddistpublisher. El parámetro de @security\_mode se utiliza para determinar cómo se conecta a la réplica principal actual el procedimiento almacenado de validación del publicador que se ejecuta desde los agente de replicación. 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, la autenticación de SQL Server se usa con los valores especificados @login y @password. 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
    EXEC 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, vea sp_adddistpublisher (Transact-SQL).

Configurar el publicador en el publicador original

  1. Configure el distribuidor remoto. Si se emplean procedimientos almacenados para configurar el publicador, ejecute sp_adddistributor. Especifique para @password el mismo valor que utilizó cuando sp_adddistrbutor se ejecutaba en el distribuidor para configurar la distribución.

    exec sys.sp_adddistributor
        @distributor = 'MyDistributor',
        @password = 'MyDistPass'
    
  2. Habilite la base de datos para replicación. Si se emplean procedimientos almacenados para configurar el publicador, ejecute sp_replicationdboption. Si la replicación transaccional y de mezcla se configuran para la base de datos, cada una debe estar habilitada.

    USE master;
    GO
    EXEC sys.sp_replicationdboption
        @dbname = 'MyDBName',
        @optname = 'publish',
        @value = 'true';
    
    EXEC 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.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

2.Configurar el grupo de disponibilidad AlwaysOn

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 utiliza DDL para configurar el grupo de disponibilidad, el siguiente ejemplo de código se puede usar para especificar un agente de escucha para un grupo de disponibilidad denominado MyAG:

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

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

Icono de flecha usado con el vínculo Volver al principio[Arriba]

3.Asegurarse de que todos los hosts de la 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 int;
EXEC @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.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

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

Una réplica secundaria no puede actuar como un publicador o republicador de la replicación, pero la replicación debe configurarse de modo que la secundaria pueda asumir 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, utilice 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.

EXEC 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 se utiliza al ejecutar sp_adddistributor originalmente en el distribuidor. Si se utilizan procedimientos almacenados para configurar la distribución, el parámetro @password de sp_adddistributor se utiliza para especificar la contraseña.

EXEC 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 emplean procedimientos almacenados para configurar los publicadores remotos, use sp_addlinkedserver para agregar los suscriptores (si todavía no están presentes) como servidores vinculados para los publicadores.

EXEC sys.sp_addlinkedserver 
    @server = 'MySubscriber';

Icono de flecha usado con el vínculo Volver al principio[Arriba]

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

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

USE distribution;
GO
EXEC sys.sp_redirect_publisher 
@original_publisher = 'MyPublisher',
    @publisher_db = 'MyPublishedDB',
    @redirected_publisher = 'MyAGListenerName';

Icono de flecha usado con el vínculo Volver al principio[Arriba]

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

En el distribuidor, en la base de datos de distribución, ejecute el procedimiento almacenado sp_validate_replica_hosts_as_publishers para comprobar que ahora todos los hosts de la réplica se configuran para servir como publicadores de la base de datos publicada.

USE distribution;
GO
DECLARE @redirected_publisher sysname;
EXEC 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 se debe ejecutar desde un inicio de sesión con autorización suficiente en cada host de réplica del grupo de disponibilidad para consultar información acerca del grupo de disponibilidad. A diferencia de sp_validate_redirected_publisher, utiliza las credenciales de autor de llamada y no utiliza el inicio de sesión que se conserva en msdb.dbo.MSdistpublishers para conectarse a las réplicas del grupo de disponibilidad.

[!NOTA]

sp_validate_replica_hosts_as_publishers producirá el error siguiente al validar los hosts de réplica secundaria que no permiten el acceso de lectura o requieren intención de lectura para especificarse.

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

Error '976' en la consulta en el publicador redirigido 'MyReplicaHostName' para determinar si hubiera entradas de sysserver para suscriptores del publicador original 'MyOriginalPublisher', mensaje de error 'Error 976, nivel 14, estado 1, mensaje: La base de datos de destino 'MyPublishedDB', participa en un grupo de disponibilidad y no se encuentra accesible en este momento para consultas. El movimiento de datos se ha suspendido o la réplica de disponibilidad no está habilitada para el 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, vea 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 comportamiento es el 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.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

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.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Tareas relacionadas

Replicación

Para crear y configurar un grupo de disponibilidad

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Vea también

Conceptos

Requisitos previos, restricciones y recomendaciones para Grupos de disponibilidad AlwaysOn (SQL Server)

Información general de los grupos de disponibilidad AlwaysOn (SQL Server)

Grupos de disponibilidad AlwaysOn: interoperabilidad (SQL Server)

Replicación de SQL Server