Replicación y creación de reflejo de la base de datos (SQL Server)Database Mirroring and Replication (SQL Server)

SE APLICA A: síSQL Server noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

La creación de reflejo de la base de datos se puede usar conjuntamente con la replicación para mejorar la disponibilidad para la base de datos de publicación.Database mirroring can be used in conjunction with replication to improve availability for the publication database. La creación de reflejo de la base de datos incluye la creación de dos copias de una sola base de datos que suelen residir en diferentes equipos.Database mirroring involves two copies of a single database that typically reside on different computers. En cada momento, solo una copia de la base de datos está disponible para los clientes.At any given time, only one copy of the database is currently available to clients. Esta copia se conoce como la base de datos principal.This copy is known as the principal database. Las actualizaciones realizadas por los clientes en la base de datos de la entidad de seguridad se aplican a la otra copia de la base de datos, conocida como la base de datos reflejada.Updates made by clients to the principal database are applied on the other copy of the database, known as the mirror database. La creación de reflejo incluye la aplicación a la base de datos reflejada del registro de transacciones con todas las inserciones, actualizaciones o eliminaciones efectuadas en la base de datos de la entidad de seguridad.Mirroring involves applying the transaction log from every insertion, update, or deletion made on the principal database onto the mirror database.

La conmutación por error de replicación en un reflejo se admite totalmente para las bases de datos de publicación, con compatibilidad limitada con las bases de datos de suscripciones.Replication failover to a mirror is fully supported for publication databases, with limited support for subscription databases. La creación de reflejo de la base de datos no se admite para la base de datos de distribución.Database mirroring is not supported for the distribution database. Para obtener información sobre la recuperación de una base de datos de distribución o una base de datos de suscripciones sin necesidad de volver configurar la replicación, vea Back Up and Restore Replicated Databases (Realizar copias de seguridad y restaurar bases de datos replicadas).For information about recovering a distribution database or subscription database without any need to reconfigure replication, see Back Up and Restore Replicated Databases.

Nota

Después de una conmutación por error, la entidad reflejada se convierte en la entidad de seguridad.After a failover, the mirror becomes the principal. En este tema, los términos "entidad de seguridad" y "reflejada" siempre hacen referencia a las entidades de seguridad y reflejada originales.In this topic, "principal" and "mirror" always refer to the original principal and mirror.

Requisitos y consideraciones para el uso de la replicación con la creación de reflejo de la base de datosRequirements and Considerations for Using Replication with Database Mirroring

Se deben tener en cuenta los siguientes requisitos y consideraciones al utilizar la replicación con la creación de reflejo de la base de datos:Be aware of the following requirements and considerations when using replication with database mirroring:

  • Las entidades de seguridad y reflejada deben compartir un distribuidor.The principal and mirror must share a Distributor. Se recomienda que éste sea un distribuidor remoto, ya que proporciona mayor tolerancia a errores si se produce una conmutación por error imprevista en el publicador.We recommend that this be a remote Distributor, which provides greater fault tolerance if the Publisher has an unplanned failover.

  • La replicación admite la creación de reflejo de la base de datos de publicación en la replicación de mezcla y en la replicación transaccional con suscriptores de solo lectura o suscriptores de actualización en cola.Replication supports mirroring the publication database for merge replication and for transactional replication with read-only Subscribers or queued updating Subscribers. No se admiten suscriptores de actualización inmediata, publicadores de Oracle, publicadores en una topología punto a punto ni republicación.Immediate updating Subscribers, Oracle Publishers, Publishers in a peer-to-peer topology, and republishing are not supported.

  • Los metadatos y los objetos que existen fuera de la base de datos, incluidos inicios de sesión, trabajos, servidores vinculados, etc., no se copian en la entidad reflejada.Metadata and objects that exist outside the database are not copied to the mirror, including logins, jobs, linked servers, and so on. Si se requieren los metadatos y los objetos en la entidad reflejada, se deben copiar manualmente.If you require the metadata and objects at the mirror, you must copy them manually. Para obtener más información, vea Administración de inicios de sesión y trabajos tras la conmutación de roles (SQL Server).For more information, see Management of Logins and Jobs After Role Switching (SQL Server).

Configurar la replicación con la creación de reflejo de la base de datosConfiguring Replication with Database Mirroring

La configuración de la replicación y la creación de reflejo de la base de datos implica cinco pasos.Configuring replication and database mirroring involves five steps. Cada paso se describe en detalle en la siguiente sección.Each step is described in more detail in the following section.

  1. Configurar el publicadorConfigure the Publisher.

  2. Configurar la creación de reflejo de la base de datos.Configure database mirroring.

  3. Configurar la entidad reflejada de manera que utilice el mismo distribuidor que la entidad de seguridadConfigure the mirror to use the same Distributor as the principal.

  4. Configurar los agentes de replicación para la conmutación por errorConfigure replication agents for failover.

  5. Agregue las entidades de seguridad y reflejada al Monitor de replicación.Add the principal and mirror to Replication Monitor.

El orden de los pasos 1 y 2 se puede invertir.Steps 1 and 2 can also be performed in the opposite order.

Para configurar la creación de reflejo de la base de datos para una base de datos de publicaciónTo configure database mirroring for a publication database

  1. Configure el publicador:Configure the Publisher:

    1. Se recomienda el uso de un distribuidor remoto.We recommend using a remote Distributor. Para obtener más información sobre cómo configurar la distribución, vea Configure Distribution (Configurar la distribución).For more information about configuring distribution, see Configure Distribution.

    2. Se puede habilitar una base de datos para publicaciones transaccionales y de instantáneas y/o para publicaciones de combinación.You can enable a database for snapshot and transactional publications and/or merge publications. Para las bases de datos reflejadas que incluirán más de un tipo de publicación, se debe habilitar la base de datos para ambos tipos en el mismo nodo mediante sp_replicationdboption.For mirrored databases that will contain more than one type of publication, you must enable the database for both types at the same node using sp_replicationdboption. Por ejemplo, puede ejecutar el siguiente procedimiento almacenado en la entidad de seguridad:For example, you could execute the following stored procedure calls at the principal:

      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='publish', @value=true;  
      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='mergepublish', @value=true;  
      

      Para obtener más información sobre la creación de publicaciones, vea Publish Data and Database Objects (Publicar datos y objetos de base de datos).For more information about creating publications, see Publish Data and Database Objects.

  2. Configurar la creación de reflejo de la base de datos.Configure database mirroring. Para obtener más información, vea Establecer una sesión de creación de reflejo de la base de datos mediante la autenticación de Windows (SQL Server Management Studio) y Configurar la creación de reflejo de la base de datos (SQL Server).For more information, see Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio) and Setting Up Database Mirroring (SQL Server).

  3. Configurar la distribución para la entidad reflejada.Configure distribution for the mirror. Indique el nombre de la entidad reflejada como el publicador y especifique el mismo distribuidor y la misma carpeta de instantáneas que se utilizan en la entidad de seguridad.Specify the mirror name as the Publisher, and specify the same Distributor and snapshot folder that the principal uses. Por ejemplo, si está configurando la replicación con procedimientos almacenados, ejecute sp_adddistpublisher en el distribuidor y, después, ejecute sp_adddistributor en la entidad reflejada.For example, if you are configuring replication with stored procedures, execute sp_adddistpublisher at the Distributor; and then execute sp_adddistributor at the mirror. Para sp_adddistpublisher:For sp_adddistpublisher:

    • Establezca el valor del parámetro **@publisher** en el nombre de red de la entidad reflejada.Set the value of the **@publisher** parameter to the network name of the mirror.

    • Establezca el valor del parámetro **@working_directory** en la carpeta de instantáneas que se usa en la entidad de seguridad.Set the value of the **@working_directory** parameter to the snapshot folder used by the principal.

  4. Especifique el nombre de la entidad reflejada para el parámetro de agente - PublisherFailoverPartner.Specify the mirror name for the -PublisherFailoverPartner agent parameter. Este parámetro es necesario para que los siguientes agentes identifiquen la entidad reflejada después de una conmutación por error:Agent This parameter is required for the following agents to identify the mirror after failover:

    • Agente de instantáneas (para todas las publicaciones)Snapshot Agent (for all publications)

    • Agente de registro del LOG (para todas las publicaciones transaccionales)Log Reader Agent (for all transactional publications)

    • Agente de lectura de cola (para las publicaciones transaccionales que admiten suscripciones de actualización en cola)Queue Reader Agent (for transactional publications that support queued updating subscriptions)

    • Agente de mezcla (para suscripciones de mezcla)Merge Agent (for merge subscriptions)

    • SQL ServerSQL Server Escucha de replicación (replisapi.dll: para suscripciones de mezcla sincronizadas mediante sincronización web)replication listener (replisapi.dll: for merge subscriptions synchronized using Web synchronization)

    • Control ActiveX de mezcla de SQL (para suscripciones de mezcla sincronizadas con el control)SQL Merge ActiveX Control (for merge subscriptions synchronized with the control)

    El Agente de distribución y el Control ActiveX de distribución de SQL no tienen este parámetro porque no se conectan al publicador.The Distribution Agent and Distribution ActiveX Control do not have this parameter because they do not connect to the Publisher.

    Los cambios en los parámetros del agente tendrán efecto la próxima vez que se inicie el agente.Agent parameter changes take effect the next time the agent is started. Si el agente se ejecuta sin interrupción, debe detenerlo y reiniciarlo.If the agent runs continuously, you must stop and restart the agent. Los parámetros se pueden especificar en perfiles de agente y desde el símbolo del sistema.Parameters can be specified in agent profiles and from the command prompt. Para obtener más información, vea:For more information, see:

    Se recomienda agregar el parámetro -PublisherFailoverPartner a un perfil de agente y, después, especificar el nombre de la entidad reflejada en el perfil.We recommend adding the -PublisherFailoverPartner to an agent profile, and then specifying the mirror name in the profile. Por ejemplo, si configura la replicación con procedimientos almacenados:For example, if you are configuring replication with stored procedures:

    -- Execute sp_help_agent_profile in the context of the distribution database to get the list of profiles.  
    -- Select the profile id of the profile that needs to be updated from the result set.  
    -- In the agent_type column returned by sp_help_agent_profile:   
    -- 1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 4 = Merge Agent; 9 = Queue Reader Agent.  
    
    exec sp_help_agent_profile;  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Snapshot Agent profile (profile 1).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Merge Agent profile (profile 6).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 6, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
  5. Agregue las entidades de seguridad y reflejada al Monitor de replicación.Add the principal and mirror to Replication Monitor. Para obtener más información, vea Agregar y quitar publicadores del Monitor de replicación.For more information, see Add and Remove Publishers from Replication Monitor.

Mantener una base de datos de publicación reflejadaMaintaining a Mirrored Publication Database

El mantenimiento de una base de datos de publicación reflejada se realiza básicamente de la misma forma que para una base de datos no reflejada, con las siguientes salvedades:Maintaining a mirrored publication database is essentially the same as maintaining a non-mirrored database, with the following considerations:

  • La administración y la supervisión deben tener lugar en el servidor activo.Administration and monitoring must occur at the active server. En SQL Server Management StudioSQL Server Management Studio, las publicaciones aparecen debajo de la carpeta Publicaciones locales solo para el servidor activo.In SQL Server Management StudioSQL Server Management Studio, publications appear under the Local Publications folder only for the active server. Por ejemplo, si produce la conmutación por error a la entidad reflejada, las publicaciones se muestran en la entidad reflejada y dejan de aparecer en la entidad de seguridad.For example, if you failover to the mirror, the publications are displayed at the mirror and are no longer displayed at the principal. Si se produce la conmutación por error de la base de datos a la entidad reflejada, puede que sea necesario actualizar manualmente Management StudioManagement Studio y el Monitor de replicación para que se refleje el cambio.If the database fails over to the mirror, you might need to manually refresh Management StudioManagement Studio and Replication Monitor for the change to be reflected.

  • El Monitor de replicación muestra los nodos del publicador en el árbol de objetos de la entidad de seguridad y reflejada.Replication Monitor displays Publisher nodes in the object tree for both the principal and the mirror. Si la entidad de seguridad es el servidor activo, la información de publicación solo se mostrará debajo del nodo de la entidad de seguridad en el Monitor de replicación.If the principal is the active server, publication information is displayed only under the principal node in Replication Monitor.

    Si la entidad reflejada es el servidor activo:If the mirror is the active server:

    • Si se produce un error en un agente, solo se indicará en el nodo de la entidad de seguridad, no en el nodo de la entidad reflejada.If an agent has an error, the error is indicated only on the principal node, not on the mirror node.

    • Si la entidad de seguridad no está disponible, los nodos de la entidad de seguridad y reflejada muestran listas de publicaciones idénticas.If the principal is unavailable, the principal and mirror nodes display identical lists of publications. La supervisión debe realizarse en las publicaciones debajo del nodo de la entidad reflejada.Monitoring should be performed on the publications under the mirror node.

  • Si se utilizan procedimientos almacenados o Replication Management Objects (RMO) para administrar la replicación en la entidad reflejada, en los casos en que se especifica el nombre del publicador, se debe especificar el nombre de la instancia en la que la base de datos se habilitó para la replicación.When using stored procedures or Replication Management Objects (RMO) to administer replication at the mirror, for cases in which you specify the Publisher name, you must specify the name of the instance on which the database was enabled for replication. Para determinar el nombre correcto, use la función publishingservername.To determine the appropriate name, use the function publishingservername.

    Cuando se crea el reflejo de una base de datos de publicación, los metadatos de la replicación que se encuentran almacenados en la base de datos reflejada son idénticos a los que se encuentran almacenados en la base de datos de la entidad de seguridad.When a publication database is mirrored, the replication metadata stored in the mirrored database is identical to the metadata stored in the principal database. En consecuencia, para las bases de datos de publicación habilitadas para replicación en la entidad de seguridad, el nombre de la instancia del publicador que está almacenado en las tablas del sistema en la entidad reflejada es el nombre de la entidad de seguridad, en lugar del nombre de la entidad reflejada.Consequently, for publication databases enabled for replication at the principal, the Publisher instance name stored in system tables at the mirror is the name of the principal, not the mirror. Esto afecta a la configuración y al mantenimiento de la replicación si se produce la conmutación por error de la base de datos de publicación a la entidad reflejada.This affects replication configuration and maintenance if the publication database fails over to the mirror. Por ejemplo, si se configura la replicación con procedimientos almacenados en la entidad reflejada después de una conmutación por error y se quiere agregar una suscripción de extracción a una base de datos de publicación que estaba habilitada en la entidad de seguridad, se debe especificar el nombre de la entidad de seguridad, en lugar del nombre de la entidad reflejada, para el parámetro **@publisher** de sp_addpullsubscription o sp_addmergepullsubscription.For example, if you are configuring replication with stored procedures on the mirror after a failover, and you want to add a pull subscription to a publication database that was enabled at the principal, you must specify the principal name rather than the mirror name for the **@publisher** parameter of sp_addpullsubscription or sp_addmergepullsubscription.

    Si se habilita una base de datos de publicación en la entidad reflejada después de una conmutación por error a dicha entidad, el nombre de la instancia del publicador que está almacenado en las tablas del sistema es el nombre de la entidad reflejada. En este caso, se debe utilizar el nombre de la entidad reflejada para el parámetro **@publisher** .If you enable a publication database at the mirror after failover to the mirror, the Publisher instance name stored in system tables is the name of the mirror; in this case, you would use the name of the mirror for the **@publisher** parameter.

    Nota

    En algunos casos, por ejemplo sp_addpublication, el parámetro **@publisher** solo se admite para publicadores que no sean deSQL ServerSQL Server . En estos casos, no es relevante para la creación de reflejo de la base de datos de SQL ServerSQL Server .In some cases, such as sp_addpublication, the **@publisher** parameter is supported only for non-SQL ServerSQL Server Publishers; in these cases, it is not relevant for SQL ServerSQL Server database mirroring.

  • Para sincronizar una suscripción en Management StudioManagement Studio tras una conmutación por error: sincronice las suscripciones de extracción del suscriptor y sincronice las suscripciones de inserción del publicador activo.To synchronize a subscription in Management StudioManagement Studio after a failover: synchronize pull subscriptions from the Subscriber; and synchronize push subscriptions from the active Publisher.

Comportamiento de la replicación si se quita la creación de reflejoReplication Behavior if Mirroring is Removed

Tenga en cuenta las siguientes consideraciones si se quita la creación de reflejo de la base de datos de una base de datos publicada:Keep the following issues in mind if database mirroring is removed from a published database:

  • Si la base de datos de publicación de la entidad de seguridad ya no está reflejada, la replicación continúa funcionando sin variaciones con la entidad de seguridad original.If the publication database at the principal is no longer mirrored, replication continues to work unchanged against the original principal.

  • Si se produce la conmutación por error de la base de datos de publicación de la entidad de seguridad a la entidad reflejada y, por consiguiente, se deshabilita o quita la relación de creación de reflejo, los agentes de replicación no funcionarán con la entidad reflejada.If the publication database fails over from the principal to the mirror and the mirroring relationship is subsequently disabled or removed, replication agents will not function against the mirror. Si la entidad de seguridad se pierde de forma permanente, deshabilite y, a continuación, vuelva a configurar la replicación con la entidad reflejada especificada como publicador.If the principal is permanently lost, disable and then reconfigure replication with the mirror specified as the Publisher.

  • Si se quita por completo la creación de reflejo de la base de datos, la base de datos reflejada se encontrará en un estado de recuperación y deberá restaurarse para ser funcional.If database mirroring is removed completely, the mirror database is in a recovery state and must be restored in order to become functional. El comportamiento de la base de datos recuperada con respecto a la replicación depende de si se ha especificado la opción KEEP_REPLICATION.The behavior of the recovered database with respect to replication depends on whether the KEEP_REPLICATION option is specified. Esta opción obliga a la operación de restauración a conservar la configuración de la replicación cuando restaure una base de datos publicada en un servidor distinto del servidor en el que se creó la copia de seguridad.This option forces the restore operation to preserve replication settings when restoring a published database to a server other than that on which the backup was created. Utilice la opción KEEP_REPLICATION solo cuando la otra base de datos de publicación no esté disponible.Use the KEEP_REPLICATION option only when the other publication database is unavailable. Esta opción no es compatible si la otra base de datos de publicación sigue intacta y continúa con la replicación.The option is not supported if the other publication database is still intact and replicating. Para obtener más información sobre KEEP_REPLICATION, vea RESTORE (Transact-SQL).For more information about KEEP_REPLICATION, see RESTORE (Transact-SQL).

Comportamiento del Agente de registro del LOGLog Reader Agent Behavior

En la siguiente tabla se describe el comportamiento del Agente de registro del LOG en los distintos modos de funcionamiento de la creación de reflejo de la base de datos.The following table describes Log Reader Agent behavior for the various operating modes of database mirroring.

Modo de funcionamientoOperating mode Comportamiento del Agente de registro del LOG si la entidad reflejada no está disponibleLog Reader Agent behavior if the mirror is unavailable
Modo de seguridad alta con conmutación automática por errorHigh-safety mode with automatic failover Si la entidad reflejada no está disponible, el Agente de registro del LOG propaga los comandos a la base de datos de distribución.If the mirror is unavailable, the Log Reader Agent propagates commands to the distribution database. La entidad de seguridad no puede realizar la conmutación por error a la entidad reflejada hasta que la entidad reflejada vuelva a estar en línea e incluya todas las transacciones de la entidad de seguridad.The principal cannot failover to the mirror until the mirror is back online and has all transactions from the principal.
Modo de alto rendimientoHigh-performance mode Si la entidad reflejada no está disponible, la base de datos de la entidad de seguridad se ejecuta de forma expuesta (es decir, sin reflejo).If the mirror is unavailable, the principal database is running exposed (that is, unmirrored). Sin embargo, el Agente de registro del LOG solo replica las transacciones reforzadas en la entidad reflejada.However, the Log Reader Agent only replicates those transactions that are hardened on the mirror. Si se fuerza el servicio y el servidor reflejado asume el rol de la entidad de seguridad, el Agente de registro del LOG trabajará con la entidad reflejada y comenzará a recoger las transacciones nuevas.If service is forced and the mirror server assumes the role of the principal, the Log Reader Agent will work against the mirror and start picking up the new transactions.

Tenga en cuenta que aumentará la latencia de replicación si la entidad reflejada se retrasa con respecto a la entidad de seguridad.Be aware that replication latency will increase if the mirror falls behind the principal.
Modo de alta seguridad sin conmutación automática por errorHigh-safety mode without automatic failover Se garantiza que todas las transacciones confirmadas se refuerzan en disco en la entidad reflejada.All committed transactions are guaranteed to be hardened to disk on the mirror. El Agente de registro del LOG solo replica las transacciones reforzadas en la entidad reflejada.The Log Reader Agent replicates only those transactions that are hardened on the mirror. Si la entidad reflejada no está disponible, la entidad de seguridad no permite que continúe la actividad en la base de datos; por lo tanto, el Agente de registro del LOG no contará con transacciones para replicar.If the mirror is unavailable, the principal disallows further activity in the database; therefore the Log Reader Agent has no transactions to replicate.

Consulte tambiénSee Also

Replicación de SQL Server SQL Server Replication
Trasvase de registros y replicación (SQL Server)Log Shipping and Replication (SQL Server)