Replicación transaccional punto a puntoPeer-to-Peer - Transactional Replication

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 replicación punto a punto proporciona una solución escalada y de alta disponibilidad manteniendo copias de datos en varias instancias de servidor, también denominadas nodos.Peer-to-peer replication provides a scale-out and high-availability solution by maintaining copies of data across multiple server instances, also referred to as nodes. Generada en la base de replicación transaccional, la replicación punto a punto propaga transaccionalmente los cambios coherentes en tiempo casi real.Built on the foundation of transactional replication, peer-to-peer replication propagates transactionally consistent changes in near real-time. Esto permite a las aplicaciones que requieran una escalada de las operaciones de lectura distribuir las lecturas de los clientes en varios nodos.This enables applications that require scale-out of read operations to distribute the reads from clients across multiple nodes. Dado que los datos se mantienen en los nodos en tiempo casi real, la replicación punto a punto proporciona redundancia de datos, lo que aumenta la disponibilidad de los mismos.Because data is maintained across the nodes in near real-time, peer-to-peer replication provides data redundancy, which increases the availability of data.

Imagine una aplicación web.Consider a Web application. Ésta se puede beneficiar de la replicación punto a punto de las maneras siguientes:This can benefit from peer-to-peer replication in the following ways:

  • Las consultas del catálogo y otras lecturas se expanden por varios nodos.Catalog queries and other reads are spread across multiple nodes. Esto permite que el rendimiento permanezca coherente conforme aumentan las lecturas.This enables performance to remain consistent as reads increase.

  • Si se produce un error en uno de los nodos del sistema, un nivel de aplicación puede redirigir las escrituras para dicho nodo a otro.If one of the nodes in the system fails, an application layer can redirect the writes for that node to another node. Así se mantiene la disponibilidad.This maintains availability.

  • Si un nodo requiere el mantenimiento o el sistema completo requiere una actualización, cada nodo se puede tomar sin conexión y agregar de nuevo al sistema sin que se vea afectada la disponibilidad de la aplicación.If a node requires maintenance or the whole system requires an upgrade, each node can be taken offline and added back to the system without affecting the availability of the application.

Aunque la replicación punto a punto habilita la escalada de las operaciones de lectura, el rendimiento de escritura para la topología es similar para un nodo único.Although peer-to-peer replication enables scaling out of read operations, write performance for the topology is like that for a single node. Esto se debe a que en última instancia todas las inserciones, actualizaciones y eliminaciones se propagan a todos los nodos.This is because ultimately all inserts, updates, and deletes are propagated to all nodes. La replicación reconoce cuándo se ha aplicado un cambio a un nodo determinado y evita cambios cíclicos en los nodos más de una vez.Replication recognizes when a change has been applied to a given node and prevents changes from cycling through the nodes more than one time. Se recomienda encarecidamente que las operaciones de escritura para cada fila se realicen en un solo nodo, por las razones siguientes:We strongly recommend that write operations for each row be performed at only node, for the following reasons:

  • Si una fila se modifica en más de un nodo, puede producirse un conflicto o incluso la pérdida de una actualización cuando la fila se propaga a otros nodos.If a row is modified at more than one node, it can cause a conflict or even a lost update when the row is propagated to other nodes.

  • Siempre hay alguna latencia implicada cuando se replican los cambios.There is always some latency involved when changes are replicated. Para las aplicaciones que requieren que se vea el cambio más reciente inmediatamente, el equilibrio de carga dinámico de la aplicación en varios nodos puede ser problemático.For applications that require the latest change to be seen immediately, dynamically load balancing the application across multiple nodes can be problematic.

La replicación punto a punto incluye la opción de habilitar la detección de conflictos en una topología punto a punto.Peer-to-peer replication includes the option to enable conflict detection across a peer-to-peer topology. Esta opción ayuda a evitar problemas que se producen por conflictos no detectados, como comportamientos incoherentes de las aplicaciones y actualizaciones perdidas.This option helps prevent the issues that are caused from undetected conflicts, including inconsistent application behavior and lost updates. Habilitando esta opción, de forma predeterminada, un cambio conflictivo se trata como un error crítico que produce el error del Agente de distribución.By enabling this option, by default a conflicting change is treated as a critical error that causes the failure of the Distribution Agent. En caso de un conflicto, la topología permanece en un estado incoherente hasta que se resuelve el conflicto manualmente y los datos se hacen coherentes en toda la topología.In the event of a conflict, the topology remains in an inconsistent state until the conflict is resolved manually and the data is made consistent across the topology. Para más información, consulte Conflict Detection in Peer-to-Peer Replication.For more information, see Conflict Detection in Peer-to-Peer Replication.

Nota

Para evitar la posible incoherencia de datos, asegúrese de evitar los conflictos en una topología punto a punto, incluso con la detección de conflictos habilitada.To avoid potential data inconsistency, make sure that you avoid conflicts in a peer-to-peer topology, even with conflict detection enabled. Para asegurarse de que las operaciones de escritura para una fila determinada se realizan en un solo nodo, las aplicaciones que tienen acceso y cambian datos deben particionar las operaciones de inserción, actualización y eliminación.To ensure that write operations for a particular row are performed at only one node, applications that access and change data must partition insert, update, and delete operations. Este particionamiento asegura que las modificaciones a una fila determinada que se originan en un nodo están sincronizadas con todos los demás nodos en la topología antes de que se modifique la fila por un nodo diferente.This partitioning ensures that modifications to a given row originating at one node are synchronized with all other nodes in the topology before the row is modified by a different node. Si una aplicación requiere funcionalidades sofisticadas de detección y resolución de conflictos, use la replicación de mezcla.If an application requires sophisticated conflict detection and resolution capabilities, use merge replication. Para obtener más información, consulte Replicación de mezcla y Detectar y solucionar conflictos de replicación de mezcla.For more information, see Merge Replication and Detect and Resolve Merge Replication Conflicts.

Topologías punto a puntoPeer-to-Peer Topologies

En los siguientes escenarios se ilustran los usos típicos de la replicación punto a punto.The following scenarios illustrate typical uses for peer-to-peer replication.

Topología en la que participan dos bases de datosTopology That Has Two Participating Databases

Replicación punto a punto: dos nodosPeer-to-peer replication, two nodes

En las ilustraciones anteriores se muestran dos bases de datos participantes, con tráfico de usuario dirigido a las bases de datos a través de un servidor de aplicaciones.Both of the preceding illustrations show two participating databases, with user traffic directed to the databases through an application server. Esta configuración se puede usar en varias aplicaciones, desde sitios web hasta aplicaciones de grupos de trabajo, y proporciona las siguientes ventajas:This configuration can be used for a variety of applications, from Web sites to workgroup applications, and provides the following benefits:

  • Rendimiento de lectura mejorado, porque las lecturas se reparten en dos servidores.Improved read performance, because reads are spread out over two servers.

  • Alta disponibilidad si se requiere mantenimiento o en caso de error en un nodo.Higher availability if maintenance is required or in case of failure at one node.

En ambas ilustraciones, la actividad de lectura tiene equilibrio de carga entre las bases de datos participantes, pero las actualizaciones se controlan de forma diferente:In both illustrations, read activity is load-balanced between the participating databases, but updates are handled differently:

  • En la izquierda, las actualizaciones se particionan entre los dos servidores.On the left, updates are partitioned between the two servers. Si la base de datos contiene un catálogo de productos, podría, por ejemplo, hacer que una aplicación personalizada dirija las actualizaciones al nodo A para los nombres de productos que empiecen con la letra A hasta la M y que dirija las actualizaciones al nodo B para los nombres de productos que empiecen con la letra N hasta la Z. Más tarde, las actualizaciones se replican en el otro nodo.If the database contained a product catalog, you could, for example, have a custom application direct updates to node A for product names that start with A through M, and direct updates to node B for product names that start with N through Z. Updates are then replicated to the other node.

  • A la derecha, todas las actualizaciones se dirigen al nodo B. Desde ahí, las actualizaciones se replican en el nodo A. Si B se encuentra en modo sin conexión (por ejemplo, por motivos de mantenimiento), el servidor de aplicaciones puede dirigir toda la actividad a A. Cuando B vuelve a estar en línea, las actualizaciones pueden pasar a él, y el servidor de aplicaciones puede mover todas las actualizaciones de vuelta al nodo B o seguir dirigiéndolas al nodo A.On the right, all updates are directed to node B. From there, updates are replicated to node A. If B is offline (for example, for maintenance), the application server can direct all activity to A. When B is back online, updates can flow to it, and the application server can move all updates back to B or keep directing them to A.

La replicación punto a punto puede admitir este método, pero el ejemplo de actualización centralizada de la derecha también se utiliza frecuentemente con la replicación transaccional estándar.Peer-to-peer replication can support either approach, but the central update example on the right is also often used with standard transactional replication.

Topología en la que participan tres o más bases de datosTopologies That Have Three or More Participating Databases

Replicación punto a punto en ubicaciones dispersasPeer-to-peer replication to dispersed locations

En la ilustración anterior se muestran tres bases de datos participantes que proporcionan datos para una organización de soporte de software internacional, con oficinas en Los Ángeles, Londres y Taipei.The preceding illustration shows three participating databases that provide data for a worldwide software support organization, with offices in Los Angeles, London, and Taipei. Los ingenieros de soporte de cada oficina reciben llamadas de clientes e incluyen y actualizan la información de las llamadas de los clientes.The support engineers at each office take customer calls and enter and update information about each customer call. Las zonas horarias de las tres oficinas tienen una diferencia de ocho horas, por lo que no se superponen en la jornada laboral.The time zones for the three offices are eight hours apart, so there is no overlap in the workday. Cuando la oficina de Taipei cierra, se abre la oficina de Londres.As the Taipei office closes, the London office is opening for the day. Si hay una llamada en curso cuando se cierra una oficina, la llamada se transfiere a un representante de la siguiente oficina abierta.If a call is still in progress as one office is closing, the call is transferred to a representative at the next office to open.

Cada ubicación tiene una base de datos y un servidor de aplicaciones, que los ingenieros de soporte utilizan para incluir y actualizar la información de las llamadas de los clientes.Each location has a database and an application server, which are used by the support engineers as they enter and update information about customer calls. La topología se particiona por tiempo.The topology is partitioned by time. Por consiguiente, las actualizaciones solo se producen en el nodo que está abierto; a continuación, las actualizaciones pasan al resto de bases de datos participantes.Therefore, updates occur only at the node that is currently open for business, and then the updates flow to the other participating databases. Esta topología proporciona las siguientes ventajas:This topology provides the following benefits:

  • Independencia sin aislamiento: cada oficina puede insertar, actualizar o eliminar datos de forma independiente, pero también puede compartirlos porque se replican en el resto de bases de datos participantes.Independence without isolation: Each office can insert, update, or delete data independently but can also share the data because it is replicated to all other participating databases.

  • Alta disponibilidad en caso de error o para permitir el mantenimiento en una o más de las bases de datos participantes.Higher availability in case of failure or to allow maintenance at one or more of the participating databases.

    Replicación punto a punto: tres y cuatro nodosPeer-to-peer replication, three and four nodes

La ilustración anterior muestra la adición de un nodo a la topología de tres nodos.The preceding illustration shows the addition of a node to the three-node topology. Se podría agregar un nodo en este escenario por las razones siguientes:A node could be added in this scenario for the following reasons:

  • Porque se abre otra oficina.Because another office is opened.

  • Para proporcionar mayor disponibilidad para admitir el mantenimiento o aumentar la tolerancia a errores si se produce un error de disco u otro error principal.To provide higher availability to support maintenance or increase fault tolerance if a disk failure or other major failure occurs.

Observe que en ambas topologías de tres y cuatro nodos, todas las bases de datos publican y se suscriben a todas las demás bases de datos.Notice that in both the three- and four-node topologies, all databases publish and subscribe to all other databases. Esto proporciona la máxima disponibilidad en caso de necesidades de mantenimiento o error de uno o más nodos.This provides maximum availability in case of maintenance needs or failure of one or more nodes. Al agregar nodos, se deben equilibrar las necesidades de disponibilidad y escalabilidad respecto al rendimiento y la complejidad de implementación y administración.As nodes are added, you must balance availability and scalability needs against performance and the complexity of deployment and administration.

Configurar la replicación punto a puntoConfiguring Peer-to-Peer Replication

La configuración de una topología de replicación punto a punto es muy similar a la configuración de una serie de suscripciones y publicaciones transaccionales estándar.Configuring a peer-to-peer replication topology is very similar to configuring a series of standard transactional publications and subscriptions. En los pasos descritos en los temas siguientes se muestra la configuración de un sistema de tres nodos, similar a la configuración mostrada a la izquierda en la ilustración anterior que muestra topología punto a punto.The steps described in the following topics show the configuration of a three-node system, similar to the configuration shown on the left in the previous illustration that shows peer-to-peer topology.

Consideraciones para utilizar la replicación punto a puntoConsiderations for Using Peer-to-Peer Replication

Esta sección proporciona información e instrucciones para tener en cuenta al usar la replicación punto a punto.This section provides information and guidelines to consider when you use peer-to-peer replication.

Consideraciones generalesGeneral Considerations

  • La replicación punto a punto solo está disponible en las versiones Enterprise de SQL ServerSQL Server.Peer-to-peer replication is available only in Enterprise versions of SQL ServerSQL Server.

  • Todas las bases de datos que participan en la replicación punto a punto deberían contener datos y esquema idénticos:All databases that participate in peer-to-peer replication should contain identical schema and data:

    • Los nombres de objeto, esquema de objeto y nombres de publicación deberían ser idénticos.Object names, object schema, and publication names should be identical.

    • Las publicaciones deben permitir la replicación de los cambios de esquema.Publications must allow schema changes to be replicated. (Este es un valor de 1 para la propiedad de publicación replicate_ddl, que es el valor predeterminado). Para obtener más información, vea Make Schema Changes on Publication Databases (Realizar cambios de esquema en bases de datos de publicaciones).(This is a setting of 1 for the publication property replicate_ddl, which is the default setting.) For more information, see Make Schema Changes on Publication Databases.

    • No se admite el filtrado de filas y columnas.Row and column filtering are not supported.

  • Se recomienda que cada nodo use su propia base de datos de distribución.We recommend that each node use its own distribution database. Esto elimina la posibilidad de tener un punto de error único.This eliminates the potential of having a single point of failure.

  • Las tablas y otros objetos no se pueden incluir en varias publicaciones punto a punto de una única base de datos de publicación.Tables and other objects cannot be included in multiple peer-to-peer publications in a single publication database.

  • Debe habilitarse una publicación para la replicación punto a punto antes de crear las suscripciones.A publication must be enabled for peer-to-peer replication before any subscriptions are created.

  • Las suscripciones se deben inicializar con una copia de seguridad o con la opción 'Solo compatibilidad con replicación' .Subscriptions must be initialized by using a backup or with the 'replication support only' option. Para obtener más información, consulte Initialize a Transactional Subscription Without a Snapshot.For more information, see Initialize a Transactional Subscription Without a Snapshot.

  • No se recomienda el uso de columnas de identidad.We do not recommend the use of identity columns. Cuando se utilizan identidades, se deben administrar manualmente los intervalos asignados a las tablas en cada base de datos participante.When using identities, you must manually manage the ranges assigned to the tables at each participating database. Para obtener más información, vea la sección sobre cómo asignar rangos para la administración manual de rangos de identidad en el tema Replicar columnas de identidad.For more information, see the section "Assigning Ranges for Manual Identity Range Management" in Replicate Identity Columns.

Restricciones de característicasFeature Restrictions

La replicación punto a punto admite las características principales de replicación transaccional pero no admite las opciones siguientes:Peer-to-peer replication supports the core features of transactional replication, but does not support the following options:

  • Inicialización y reinicialización con una instantánea.Initialization and reinitialization with a snapshot.

  • Filtros de filas y columnas.Row and column filters.

  • Columnas de marca de tiempo.Timestamp columns.

  • Suscriptores y publicadores que no son deSQL ServerSQL Server .Non-SQL ServerSQL Server Publishers and Subscribers.

  • Suscripciones de actualización inmediata y de actualización en cola.Immediate updating and queued updating subscriptions.

  • Suscripciones anónimas.Anonymous subscriptions.

  • Suscripciones parciales.Partial subscriptions.

  • Suscripciones adjuntables y suscripciones transformablesAttachable subscriptions and transformable subscriptions. (Ambas opciones han quedado desusadas en SQL Server 2005 (9.x)SQL Server 2005 (9.x)).(Both of these options were deprecated in SQL Server 2005 (9.x)SQL Server 2005 (9.x).)

  • Agentes de distribución compartidos.Shared Distribution Agents.

  • El parámetro -SubscriptionStreams del Agente de distribución y el parámetro -MaxCmdsInTrandel Agente de registro del LOG.The Distribution Agent parameter -SubscriptionStreams and the Log Reader Agent parameter -MaxCmdsInTran.

  • Las propiedades de artículo **@destination_owner** y **@destination_table** .The article properties **@destination_owner** and **@destination_table**.

  • La replicación transaccional punto a punto no admite la creación de una suscripción transaccional unidireccional para una publicación punto a punto.Peer-to-Peer transactional replication does not support creating a one-way transactional subscription to a Peer-to-Peer publication

Las siguientes propiedades requieren consideraciones especiales:The following properties have special considerations:

  • La propiedad de publicación **@allow_initialize_from_backup** requiere un valor de true.The publication property **@allow_initialize_from_backup** requires a value of true.

  • La propiedad de artículo **@replicate_ddl** requiere un valor de true; **@identityrangemanagementoption** requiere un valor de manual; y **@status** requiere que la opción 24 esté establecida.The article property **@replicate_ddl** requires a value of true; **@identityrangemanagementoption** requires a value of manual; and **@status** requires that option 24 is set.

  • El valor de las propiedades de artículo **@ins_cmd** , **@del_cmd** y **@upd_cmd** no puede establecerse en SQL.The value for article properties **@ins_cmd**, **@del_cmd**, and **@upd_cmd** cannot be set to SQL.

  • La propiedad de suscripción **@sync_type** requiere un valor de none o automatic.The subscription property **@sync_type** requires a value of none or automatic.

Consideraciones de mantenimientoMaintenance Considerations

Las acciones siguientes requieren que el sistema esté inactivo.Some actions require the system to be quiescent. Esto significa que hay que detener la actividad de las tablas publicadas en todos los nodos y asegurarse de que cada nodo haya recibido todos los cambios de los demás nodos.This means stopping activity on published tables at all nodes and making sure that each node has received all changes from all other nodes.

Solo sistemas SQL Server 2005 del mismo nivel o una mezcla de sistemas SQL Server 2005 del mismo nivel con sistemas SQL Server 2008 y superiores del mismo nivelSQL Server 2005 peers only or mix of SQL Server 2005 peers with SQL Server 2008 peers and higher Solo sistemas SQL Server 2005 del mismo nivel o una mezcla de sistemas SQL Server 2005 del mismo nivel con sistemas SQL Server 2008 y superiores del mismo nivelSQL Server 2005 peers only or mix of SQL Server 2005 peers with SQL Server 2008 peers and higher Sistemas SQL2008 y versiones posteriores del mismo nivelSQL2008 peers and higher Sistemas SQL2008 y versiones posteriores del mismo nivelSQL2008 peers and higher
Agregar un nodo a la topologíaAdding a node to the topology Dos nodos en una topología completa: no es necesario aplicar inactividad.2 nodes in complete topology: No quiescing required. Utilice sync_type = 'initialize with backup'.Use sync_type = 'initialize with backup'. Más de dos nodos: es necesario aplicar inactividad.More than 2 nodes: Quiescing required. sync_type = 'replication support only': es necesario aplicar inactividad.sync_type = 'replication support only': Quiescing required. sync_type = 'initialize with backup' y 'initialize from lsn': no es necesario aplicar inactividad.sync_type = 'initialize with backup' and 'initialize from lsn': No quiescing required.

Los cambios de esquema de la topología (agregar o quitar un artículo) requieren la aplicación de inactividad.Topology schema changes (adding or dropping an article) requires quiescing. Para obtener más información, consulte Administrar una topología punto a punto (programación de la replicación con Transact-SQL).For more information, see Administer a Peer-to-Peer Topology (Replication Transact-SQL Programming).

Quitar un nodo de la topología no requiere nunca la aplicación de inactividad.Removing a node from the topology never requires quiescing.

Cambiar las propiedades de artículo mediante sp_changearticle no requiere nunca la aplicación de inactividad.Changing the article properties by using sp_changearticle never requires quiescing. Los cambios permitidos (para P2P) son las propiedades description, ins_cmd, upd_cmdy del_cmd .Allowable changes (for P2P) are the description, ins_cmd, upd_cmd, and del_cmd properties.

Los cambios de esquema de artículo (agregar o quitar columnas) no requieren la aplicación de inactividad.Article Schema changes (adding/dropping column) never requires quiescing.

  • Adición de un artículo: para agregar un artículo a una configuración existente, es necesario poner el sistema en modo de inactividad, ejecutar la instrucción CREATE TABLE y cargar los datos iniciales en cada nodo de la topología, además de agregar el artículo nuevo a cada nodo de la topología.Adding article: For adding an article to an existing configuration- we need to quiesce the system, execute CREATE TABLE statement & load initial data at each node in the topology and add the new article at each node in the topology.

  • Quitar un artículo: si se quiere un estado coherente en todos los nodos, es necesario poner la topología en modo inactivo.Dropping article: If we want a consistent state on all nodes, we need to quiesce the topology

Para obtener más información, consulte Quiesce a Replication Topology (Replication Transact-SQL Programming) (Cómo detener una topología de replicación [programación de la replicación con Transact-SQL]) y Administrar una topología punto a punto (programación de la replicación con Transact-SQL).For more information, see Quiesce a Replication Topology (Replication Transact-SQL Programming) and Administer a Peer-to-Peer Topology (Replication Transact-SQL Programming).

  • Si agrega un nuevo nodo a una topología punto a punto, solo debe restaurar a partir de las copias de seguridad que se crearon una vez agregado el nuevo nodo.If you add a new node to a peer-to-peer topology, you should restore only from backups that were created after the new node was added.

  • No puede reinicializar las suscripciones en una topología punto a punto.You cannot reinitialize subscriptions in a peer-to-peer topology. Si tiene que asegurarse de que un nodo tiene una copia nueva de los datos, restaure una copia de seguridad en el nodo.If you have to ensure that a node has a new copy of the data, restore a backup at the node.

Consulte tambiénSee Also

Administrar una topología punto a punto (programación de la replicación con Transact-SQL) Administer a Peer-to-Peer Topology (Replication Transact-SQL Programming)
Estrategias para hacer copias de seguridad y restaurar replicación de instantáneas o replicación transaccional Strategies for Backing Up and Restoring Snapshot and Transactional Replication
Replicación transaccionalTransactional replication