2. REPLICACION SQL SERVER
SQL Server : replicación
La replicación es un conjunto de tecnologías para copiar y distribuir datos y objetos de bases de
datos de una base de datos a otra y, a continuación, sincronizar las diferentes bases de datos para
mantener la coherencia. Mediante la replicación, podrá distribuir los datos a diferentes
ubicaciones y usuarios remotos o móviles a través de redes de área local y extensa, conexiones de
acceso telefónico, conexiones inalámbricas e Internet.
El tipo de replicación que se elige para una aplicación depende de muchos factores, como el
entorno físico de la replicación, el tipo y la cantidad de datos que se desean replicar y si los datos
se actualizan en el suscriptor. El entorno físico incluye el número y la ubicación de los equipos que
participan en la replicación, y si estos equipos son clientes (estaciones de trabajo, equipos
portátiles o dispositivos de mano) o servidores.
Por lo general, cada tipo de replicación comienza con una sincronización inicial de los objetos
publicados entre el publicador y los suscriptores. Esta sincronización inicial puede llevarse a cabo
mediante la replicación con una instantánea, que es una copia de todos los objetos y datos
especificados por una publicación. Una vez creada la instantánea, se envía a los suscriptores. Para
algunas aplicaciones, la replicación de instantáneas es lo único que se necesita. Para otros tipos de
aplicaciones, es importante que los cambios de datos posteriores fluyan al suscriptor de forma
incremental a lo largo del tiempo. Algunas aplicaciones también requieren que los cambios
vuelvan del suscriptor al publicador. La replicación transaccional y la replicación de mezcla
proporcionan opciones para estos tipos de aplicaciones.
1. Replicación transaccional.
Por lo general, la replicación de transacciones se usa en escenarios de servidor a servidor, que
requieren un rendimiento alto, donde se incluye: la mejora de la escalabilidad y disponibilidad; el
almacenamiento datos y generación de informes; la integración de datos desde múltiples sitios; la
integración de datos heterogéneos y la descarga de procesamiento por lotes.
¿Cómo funciona la replicación transaccional?
La replicación transaccional se implementa con el Agente de instantáneas, el Agente de registro del LOG y el
Agente de distribución de SQL Server. El Agente de instantáneas prepara archivos de instantáneas que
contienen esquemas y datos de las tablas y objetos de base de datos publicados, almacena los archivos en la
carpeta de instantáneas y registra los trabajos de sincronización en la base de datos de distribución del
distribuidor.
El Agente de registro del LOG supervisa el registro de transacciones de cada base de datos configurada
para la replicación transaccional y copia las transacciones marcadas para ser replicadas desde el registro de
transacciones a la base de datos de distribución, que actúa como una cola de almacenamiento y reenvío
confiable. El Agente de distribución copia los archivos de instantáneas iníciales de la carpeta de
BASES DE DATOS UES 2012
3. REPLICACION SQL SERVER
instantáneas y las transacciones almacenadas en las tablas de la base de datos de distribución a los
suscriptores.
Los cambios incrementales realizados en el publicador se transfieren a los suscriptores de acuerdo con la
programación del Agente de distribución, que se puede ejecutar continuamente para que la latencia sea
mínima o a intervalos programados. Puesto que los datos deben cambiarse en el publicador (cuando se
utiliza la replicación transaccional sin las opciones de actualización inmediata ni de actualización en cola), se
evita que se produzcan conflictos de actualización. Al final, todos los suscriptores disponen de los mismos
valores que el publicador. Si se utilizan las opciones de actualización inmediata o de actualización en cola
con la replicación transaccional, las actualizaciones pueden realizarse en el suscriptor y, con la actualización
en cola, pueden producirse conflictos.
En la siguiente ilustración se muestran los principales componentes de la replicación transaccional.
BASES DE DATOS UES 2012
4. REPLICACION SQL SERVER
Conjunto de datos inicial.
Antes de que un suscriptor de replicación transaccional pueda recibir los cambios incrementales desde un
publicador, debe contener tablas con el mismo esquema y los mismos datos que las tablas del publicador. El
conjunto de datos inicial es normalmente una instantánea que se crea con el Agente de instantáneas y se
distribuye y aplica a través del Agente de distribución. También se puede suministrar el conjunto de datos
inicial mediante una copia de seguridad u otro medio, como SQL Server Integration Services.
Cuando se distribuyen y se aplican instantáneas a los suscriptores, solo se ven afectados los suscriptores que
estén esperando instantáneas iniciales. Otros suscriptores de esa publicación (aquellos que ya se han
inicializado) no se ven afectados.
Procesamiento simultaneo de instantáneas.
La replicación de instantáneas coloca bloqueos compartidos en todas las tablas publicadas como parte de la
replicación mientras dure la generación de instantáneas. Así se puede evitar que se realicen actualizaciones
en las tablas de publicación. El procesamiento simultáneo de instantáneas, que es el valor predeterminado
con la replicación transaccional, no mantiene los bloqueos compartidos durante la generación completa de
la instantánea, lo que permite a los usuarios continuar el trabajo sin interrupción mientras la replicación
crea los archivos de instantáneas iniciales.
Agente de instantáneas.
Los procedimientos por los que el Agente de instantáneas implementa la instantánea inicial en la replicación
transaccional son los mismos que se utilizan en la replicación de instantáneas (excepto en lo indicado
anteriormente acerca del procesamiento simultáneo de instantáneas).
Después de generarse los archivos de instantáneas, podrá verlos en la carpeta de instantáneas mediante el
Explorador de Microsoft Windows.
Modificar datos y el agente de registro LOG
El Agente de registro del LOG se ejecuta en el distribuidor. Normalmente se ejecuta de forma
continua, pero también puede hacerlo siguiendo una programación establecida. Al ejecutarse, el
Agente de registro del LOG lee primero el registro de transacciones de la publicación (el mismo
registro de la base de datos que se utiliza para el seguimiento de las transacciones y la
recuperación durante las operaciones normales del motor de base de datos de SQL Server) e
identifica las instrucciones INSERT, UPDATE y DELETE, u otras modificaciones efectuadas en los
datos de las transacciones que se hayan marcado para ser replicadas. A continuación, el agente
BASES DE DATOS UES 2012
5. REPLICACION SQL SERVER
copia por lotes dichas transacciones a la base de datos de distribución del distribuidor. El
Agente de registro del LOG utiliza el procedimiento almacenado interno sp_replcmds para
obtener el siguiente conjunto de comandos marcados para replicación desde el registro. La base
de datos de distribución se convierte así en una cola de almacenamiento y reenvío desde la que se
envían los cambios a los suscriptores. A la base de datos de distribución solo se envían las
transacciones confirmadas.
El lote completo de transacciones se confirma después de que se ha escrito correctamente en la
base de datos de distribución. A continuación de la confirmación de cada lote de comandos en el
distribuidor, el Agente de registro del LOG llama a sp_repldone para marcar hasta dónde se ha
llegado en la replicación. Por último, el agente marca las filas del registro de transacciones que
están listas para ser purgadas. Las filas que están en espera de ser replicadas no se purgan.
Los comandos de transacción se almacenan en la base de datos de distribución hasta que se
propagan a todos los suscriptores o hasta que se ha alcanzado el período máximo de retención de
distribución. Los suscriptores recibirán las transacciones en el mismo orden en que fueron
aplicadas en el publicador.
Agente de distribución
El Agente de distribución se ejecuta en el distribuidor para las suscripciones de inserción y en el suscriptor
para las suscripciones de extracción. El Agente mueve las transacciones desde la base de datos de
distribución al suscriptor. Si se ha marcado una suscripción para validarla, el Agente de distribución
comprueba también si los datos en el publicador y en el suscriptor coinciden.
2. Replicación de mezcla.
La replicación de mezcla se ha diseñado principalmente para aplicaciones móviles que presentan
posibles conflictos de datos. Los escenarios comunes incluyen: intercambio de datos con usuarios
móviles; aplicaciones de puntos de venta (POS) para el consumidor e integración de datos desde
varias ubicaciones.
La replicación de mezcla, como la replicación transaccional, normalmente se inicia con una
instantánea de los objetos y datos de una base de datos de publicaciones. Los cambios de datos y
las modificaciones de esquema posteriores que se lleven a cabo en el publicador y en los
suscriptores se controlan mediante desencadenadores. El suscriptor se sincroniza con el
publicador cuando están conectados a la red e intercambian todas las filas que han cambiado
entre el publicador y el suscriptor desde la última vez que se produjo la sincronización.
BASES DE DATOS UES 2012
6. REPLICACION SQL SERVER
La replicación de mezcla se suele utilizar en entornos de servidor a cliente. La replicación de
mezcla es adecuada en las siguientes situaciones:
Varios suscriptores actualizan los mismos datos en diferentes ocasiones y propagan los
cambios al publicador y a otros suscriptores.
Los suscriptores necesitan recibir datos, realizar cambios sin conexión y sincronizar más
adelante los cambios con el publicador y otros suscriptores.
Cada suscriptor requiere una partición de datos diferente.
Se pueden producir conflictos y, cuando ocurren, debe poder detectarlos y resolverlos.
La aplicación requiere el cambio de datos neto en lugar de acceso a los estados
intermedios de los datos. Por ejemplo, si una fila cambia cinco veces en el suscriptor antes
de que éste se sincronice con el publicador, la fila cambiará solo una vez en el publicador
para reflejar el cambio de datos neto (es decir, el quinto valor).
La replicación de mezcla permite que diferentes sitios funcionen de forma autónoma y, después,
mezclen las actualizaciones en un solo resultado uniforme. Puesto que las actualizaciones tienen
lugar en más de un nodo, los mismos datos pueden haber sido actualizados por el publicador y por
más de un suscriptor. Por lo tanto, se pueden producir conflictos al mezclar las actualizaciones y la
replicación de mezcla proporciona varias maneras de controlar los conflictos.
El Agente de instantáneas y el Agente de mezcla de SQL Server implementan la replicación de
mezcla. Si la publicación no se filtra o utiliza filtros estáticos, el Agente de instantáneas crea una
sola instantánea. Si la publicación utiliza filtros con parámetros, el Agente de instantáneas crea
una instantánea para cada partición de datos. El Agente de mezcla aplica las instantáneas iniciales
a los suscriptores. También combina los cambios incrementales de los datos que tienen lugar en el
publicador o en los suscriptores después de la creación de la instantánea inicial y detecta y
resuelve los conflictos según las reglas que configure.
Para realizar un seguimiento de los cambios, la replicación de mezcla (y la replicación transaccional
con suscripciones de actualización en cola) deben poder identificar de forma única cada fila de
todas las tablas publicadas. Para conseguirlo, l.La replicación de mezcla agrega la
columna rowguid a todas las tablas, a menos que la tabla ya tenga una columna del tipo de
datos uniqueidentifier con la propiedad ROWGUIDCOL definida (en cuyo caso se usa dicha
columna). Si la tabla se quita de la publicación, la columna rowguid se quita; si se ha usado una
columna existente para realizar el seguimiento, la columna no se quita. Un filtro no debe incluir
la columna rowguidcol que usa la replicación para identificar filas. La función newid() se
proporciona como valor predeterminado para la columna de rowguid; no obstante, los clientes
BASES DE DATOS UES 2012
7. REPLICACION SQL SERVER
pueden proporcionar un GUID para cada fila si es necesario. Sin embargo, no proporcione el
valor 00000000-0000-0000-0000-000000000000.
En el siguiente diagrama se muestran los componentes que se utilizan en la replicación de mezcla.
BASES DE DATOS UES 2012