Replicación
con SQL Server
Autores:
·
Cisneros Cente, Rolando Alexis
·
Ibarra Bonilla, Luis Armando
·
Orellana Hugo, Rosembel
Introducción a la replicación con SQL Server
La replicación es un conjunto de
tecnologías destinadas a la copia y distribución de datos y objetos de base de
datos desde una base de datos a otra, para luego sincronizar ambas bases de
datos y mantener su coherencia. La replicación permite distribuir datos entre
diferentes ubicaciones y entre usuarios remotos o móviles mediante redes
locales y de área extensa, conexiones de acceso telefónico, conexiones
inalámbricas e Internet.
La réplica tiene una analogía al
sector editorial para representar los componentes de una topología de réplica,
que incluyen el publicador, el distribuidor, los suscriptores, las
publicaciones, los artículos y las suscripciones. Resulta útil pensar en la
réplica de Microsoft SQL Server como si fuera una revista:
- El publicador (editor) de
una revista produce una o más publicaciones.
- Una publicación contiene
artículos.
- El publicador distribuye la
revista directamente o a través de un distribuidor.
- Los suscriptores reciben las
publicaciones a las que se han suscrito.
Es importante señalar que la réplica de SQL Server incluye funciones como:
la posibilidad de que un suscriptor realice actualizaciones y de que un
publicador envíe cambios incrementales a los artículos de una publicación.
Existen varios procesos de réplica (denominados agentes) que son
responsables de copiar y mover los datos entre el publicador y los
suscriptores. En la siguiente figura se muestra información general acerca de
los componentes y procesos que participan en la réplica.
Los elementos que participan en
la replicación Sql Server son los siguientes:
Es una instancia de base de datos
que permite que los datos estén disponibles para otras ubicaciones a través de
la réplica. El publicador puede tener una o más publicaciones, cada una de las
cuales representa un conjunto de objetos y datos relacionados lógicamente para
replicar.
Es una instancia de base de datos
que funciona como almacén para datos específicos de réplica asociados con uno o
más publicadores. Cada publicador está asociado con una sola base de datos
(conocida como la base de datos de distribución) en el distribuidor. La base de
datos de distribución almacena los datos de estado de la réplica, metadatos
acerca de la publicación y, en algunos casos, funciona como cola para los datos
que se transfieren del publicador a los suscriptores. En muchos casos, una sola
instancia de servidor de bases de datos funciona como publicador y como
distribuidor Esto se conoce como un distribuidor local.
Cuando el publicador y el distribuidor se configuran en instancias distintas
del servidor de bases de datos, el distribuidor se denomina un distribuidor
remoto.
Es una instancia de base de datos
que recibe datos replicados. Un suscriptor puede recibir datos de varios
publicadores y publicaciones. En función del tipo de réplica elegida, el
suscriptor también puede devolver los datos modificados al publicador o volver
a publicar los datos en otros suscriptores.
Un artículo identifica un objeto
de base de datos incluido en una publicación. Una publicación puede contener
diferentes tipos de artículos, como tablas, vistas, procedimientos almacenados
y otros objetos. Cuando las tablas se publican como artículos, se pueden usar
filtros para restringir las columnas y filas de datos que se envían a los
suscriptores.
Es un conjunto de uno o más
artículos de una base de datos. La agrupación de varios artículos en una
publicación permite especificar más fácilmente un conjunto de objetos y datos
de bases de datos relacionados lógicamente, que se replican como una unidad.
Es una solicitud de una copia de
una publicación que se entrega a un suscriptor. La suscripción define qué
publicación se recibirá, dónde y cuándo. Hay dos tipos de suscripciones: de
inserción y de extracción.
Agentes necesarios para configurar apropiadamente
la replicación SQL Server
El Agente SQL Server aloja y
programa los agentes utilizados en la réplica, y proporciona una manera
sencilla de ejecutar los agentes de réplica. El Agente SQL Server también
controla y supervisa las operaciones fuera de la réplica.
|
De manera
predeterminada, el servicio del Agente SQL Server está deshabilitado cuando
se instala SQL Server 2005, a menos que se elija explícitamente iniciar el
servicio automáticamente durante la instalación.
|
Por lo general, el Agente de
instantáneas se utiliza con todos los tipos de réplica. Prepara esquemas y
archivos de datos iniciales de tablas publicadas y otros objetos, almacena los
archivos de instantáneas y registra la información acerca del estado de sincronización
en la base de datos de distribución. El Agente de instantáneas se ejecuta en el
distribuidor.
El Agente de registro del LOG se
utiliza en la réplica transaccional. Mueve las transacciones marcadas para
réplica desde el registro de transacciones del publicador a la base de datos de
distribución. Cada base de datos publicada con la réplica transaccional tiene
su propio Agente de registro del LOG, que se ejecuta en el distribuidor y se
conecta al publicador (el distribuidor puede estar en el mismo equipo que el
publicador).
El Agente de distribución se
utiliza en la réplica de instantáneas y transaccional. Aplica la instantánea
inicial al suscriptor y mueve las transacciones contenidas en la base de datos
de distribución a los suscriptores. El Agente de distribución se ejecuta en el
distribuidor, para las suscripciones de inserción, o en el suscriptor, para las
suscripciones de extracción.
El Agente de mezcla se utiliza
con la réplica de mezcla. Aplica la instantánea inicial al suscriptor, y
transfiere y reconcilia los cambios incrementales de datos que se producen.
Cada suscripción de mezcla tiene su propio Agente de mezcla, que se conecta con
el publicador y con el suscriptor, y los actualiza. El Agente de mezcla se
ejecuta en el distribuidor, para las suscripciones de inserción, o en el
suscriptor, para las suscripciones de extracción. De forma predeterminada, el
Agente de mezcla carga los cambios del suscriptor al publicador y, a
continuación, descarga los cambios del publicador al suscriptor..
El Agente de lectura de cola se
utiliza con la réplica transaccional y la opción de actualización en cola. El
agente se ejecuta en el distribuidor y transfiere los cambios realizados en el
suscriptor de vuelta al publicador. A diferencia del Agente de distribución y
del Agente de mezcla, sólo existe una instancia del Agente de lectura de cola
para todos los publicadores y las publicaciones de una determinada base de
datos.
Servicio SQL Server Browser
El programa SQL Server Browser se ejecuta como un servicio de Windows. SQL
Server Browser escucha las solicitudes entrantes de recursos de
Microsoft SQL Server y proporciona información acerca de las instancias de
SQL Server instaladas en el equipo utilizando el puerto UDP 1434. SQL Server
Browser permite efectuar las siguientes acciones:
- Examinar una lista de los servidores disponibles
- Conectarse a la instancia correcta del servidor
- Conectarse a los extremos de la conexión de administrador dedicada
(DAC)
Para cada instancia de Motor de
base de datos y SSAS, el servicio SQL Server Browser (sqlbrowser) proporciona
el nombre de la instancia y el número de versión. SQL Server Browser se instala
con SQL Server y proporciona este servicio para las versiones anteriores de SQL
Server que se ejecutan en el equipo, empezando por SQL Server 7.0.
SQL Server Browser se puede
configurar durante la instalación o utilizando el Administrador de
configuración de SQL Server. De manera
predeterminada, el servicio SQL Server Browser se inicia automáticamente:
- Cuando se actualiza una instalación.
- Cuando se instala simultáneamente con una instancia de SQL Server
2000.
- Cuando se instala en un clúster.
- Cuando se instala una instancia con nombre de SQL Server Database
Engine (Motor de base de datos de SQL Server) que incluye todas las
instancias de SQL Server Express.
- Cuando se instala una instancia con nombre de Analysis Services.
Tipos de réplica en SQL Server
· Réplica transaccional.
Se
inicia con una instantánea de los datos y los objetos de la base de datos de
publicaciones. En cuanto se obtiene la instantánea inicial, los posteriores
cambios de datos y modificaciones de los esquemas realizados en el publicador
habitualmente se entregan en el suscriptor cuando se producen (casi en tiempo
real). Los cambios de datos se aplican al suscriptor en el mismo orden y dentro
de los mismos límites de la transacción que cuando se produjeron en el
publicador. Por tanto, en una publicación, se garantiza la coherencia
transaccional.
· Réplica de mezcla.
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.
La réplica de mezcla se suele
utilizar en entornos de servidor a cliente.
· Réplica de instantáneas.
La réplica de instantáneas distribuye los datos
exactamente como aparecen en un momento específico en el tiempo y no supervisa
las actualizaciones de los datos. Cuando se produce la sincronización, se
genera la instantánea completa y se envía a los suscriptores.
Desarrollo de escenario practico
de replicación
Base de datos:
La base de datos que se utilizara
en la demostración está compuesta de 4 tablas y simula un pequeño centro
comercial para su ilustración práctica se presenta la siguiente figura con el
diagrama de base de datos y sus respectivas tablas, esta será la base de datos
a replicar:
Escenario de replicación:
El diagrama nos muestra la ip que
cada una de las computadoras servidoras deben tener (se asume para el presente
tutorial que cada una de las computadoras posea la interfaz de red en el
segmento que se indica, para nuestra demostración 192.168.254.X)
Como se puede observar en la figura anterior la base de
datos estará en los tres servidores el servidor con el nombre distribuidor será
el encargado de realizar la publicación y las sucursales Sonsonate y Santa Ana
respectivamente realizaran la suscripción al servidor central que para nuestra
simulación estará en San Salvador.
Bien….. Comencemos!!!!
Lo primero será verificar que los
servicios necesarios estén activos en el sistema operativo y corriendo para
poder realizar las publicaciones desde el servidor central para ello seguimos
los pasos siguientes:
Clic en el menú inicio, Todos los
programas luego buscamos: Microsoft SQL Server 2005, Configuration Tools y
luego SQL Server Configuration Manager.
Si los servicios de Agente,
Browser e Instancia no están corriendo tendremos que iniciarlos manualmente
para ello daremos click derecho a cada uno y luego Start.
Iniciamos sesión en SQL Server
Management Studio, ya sea con credenciales de Usuario de Sql o Credenciales de
Sistema Operativo (Windows) En este caso utilizaremos Credenciales de Usuario
Sql server llamada “sa”
Vemos que tenemos la base de
datos mostrada anteriormente con sus respectivas tablas y diagramas:
El siguiente paso será crear la replicación para ello comenzaremos
cambiando algunos permisos en la base de datos, para ello hacemos clic derecho
en Replication y luego en Publisher
properties.
En la ventana siguiente seleccionamos Publications Databases y
permitimos Transactional y Merge asi nuestras publicaciones de bases de datos
podrán realizarse tanto para transaccionales como para mezcla.
Luego de esto
hacemos clic en OK, haremos clic en local Publications para comenzar con el
asistente de creación de publicación nueva y Luego clic en
New Publication.
Se abrirá la ventana siguiente donde
buscaremos las bases de datos a replicar. Luego daremos clic en next para luego
elegir qué tipo de replicación queremos hacer; recuerde que son 3 tipos
diferentes de replicación en SQL Server.
En la siguiente ventana colocaremos el tipo
de replicación en este caso haremos una replicación transaccional.
Hacemos clic en next.
Ahora lo que tenemos
que hacer es seleccionamos los objetos que deseamos publicar en este caso
dejaremos seleccionada la tabla producto, ahora la razón para ello es que: los
servidores esclavos no podrán modificar ni realizar transacciones a la tabla
productos solamente el administrador podrá hacerlo. Luego de esto hacemos clic
en Next.
En la siguiente
ventana daremos clic en next, y después podremos ver la siguiente figura:
En esta configuraremos
algunos atributos de las instantáneas que se enviaran en la replicación, para
ello seleccionamos los checkbox que se muestran en la imagen y daremos clic en
el botón change.
La siguiente ventana
que saldrá muestra algunos parámetros de la frecuencia con la cual el agente de
instantáneas monitoreara la base de datos en esta ventana, para nuestro caso
dejaremos Occurs Daily y en Daily Frecuency colocaremos 30 minutes, en la
sección Duration pondremos No end date, estas configuraciones las mostramos en
la siguiente imagen.
Daremos clic en Ok
luego en la siguiente ventana haremos clic en next, en la siguiente figura
daremos clic en el boton Security Settings... Para configurar algunos
parámetros de seguridad.
Después de esto
tendremos que proporcionar ciertas credenciales para acceder al publicador.
Estas se muestran en
la imagen siguiente el usuario que usaremos será: "sa" y le
colocaremos una contraseña.
Hacemos clic en OK y
en la siguiente imagen en siguiente (next).
Colocamos un nombre
para finalizar con el asistente de publicaciones este caso será el nombre:
Pubproductos.
Damos clic en finish y
si hemos realizado todo correctamente esperamos ver la siguiente ventana,
veremos que todo ha concluido con éxito.
Cerramos la ventana de
asistente de publicación nueva, y veremos en local publications que ahora
tenemos una publicación nueva creada.
La publicación para
productos se ha definido, ahora crearemos la otra publicación para compartir la
tabla stock ventas y sucursal.
Ahora seguimos los
mismos pasos anteriores pero nos detendremos en la parte donde escogemos el
tipo de replicación pero ahora seleccionaremos replicación por mezcla pues
nuestro ejemplo podrán los servidores secundarios replicar también en el
servidor matriz pues el servidor matriz podrá monitorear todas las
transacciones de las sucursales secundarias.
En la siguiente
ventana escogemos base de datos SQL Server 2005.
En la siguiente
ventana crearemos los filtros necesarios para que los datos que repliquemos se
vayan a la sucursal que corresponde para lo cual seleccionamos las 3 tablas a
replicar las cuales son: stock, sucursales y venta.
Ahora damos clic en
next y realizamos el filtro dando clic en el botón addfilter.
Escogeremos el filtro
para la sucursal 1 luego seleccionamos la tabla stock, por lo tanto tendremos
que escribir la consulta siguiente:
Hacemos clic en Ok y
luego en add para añadir un nuevo filtro para otra tabla.
Luego hacemos lo mismo
para la tabla sucursal y venta.
Ahora tendríamos
creados los filtros:
En la siguiente
ventana dejamos los checkbox así como aparecen pero hacemos clic en el botón
change y luego hacemos los cambios mostrados en la siguiente ventana.
Luego tendremos que
aplicar la seguridad el usuario que colocaremos será "sa".
En las 2 ventanas
siguientes hacemos clic en next para luego ponerle un nombre a la publicación
en este caso le pondremos el nombre: "PubSucursal1".
Si todo lo hemos
realizado de forma correcta tendríamos que ver la siguiente ventana.
En este momento
tendríamos creadas las 2 publicaciones que utilizaremos, ahora hacemos los
mismos pasos que acabamos de hacer para la sucursal 2.
Luego tendremos que
realizar las pruebas.
Ahora lo que aremos
será una conexión con un servidor remoto, para lo cual tendremos que estar
conectados con el servidor remoto y habilitar los puertos 1433 y 1434
respectivamente en el firewall de Windows.
En Sql server
realizamos las siguientes configuraciones:
Hacemos clic en el
boton Connect, luego en Database Engine luego en la opcion Browse for more.
Luego en la pestaña
NetworkServer Expandimos el árbol DataBase Engine y veremos que tenemos el
servidor remoto damos clic en el que nos queremos conectar y luego clic en Ok
Para la Authentication
nos conectaremos con autenticación de SQL Server para ello usaremos el usuario
"sa"
Después de conectar
podremos ingresar a las configuraciones del servidor remoto, luego crearemos
una suscripción, para ello, hacemos clic derecho en la carpeta Local
Subscriptions y después en New Subscription.
En La siguiente
ventana daremos clic en Find SQL Server Publisher, para buscar el servidor
publicador y poder suscribirnos a sus publicaciones.
Luego daremos clic en
Server Name, damos clic en el combo y seleccionaremos Browse for more, luego en
la pestaña Network Servers y esperamos a que nos aparezca el árbol de
Servidores remotos, del cual seleccionaremos el servidor publicador y hacemos
clic en Ok
Después de esto nos
autenticaremos con cuenta de SQL Server y utilizaremos el usuario
"publicador" y la contraseña que definió el publicador luego daremos
clic en connect.
Luego hacemos clic een
PubProductos y luego en next.
En esta ventana
definiremos que el distribuidor está en el publicador
En la siguiente
ventana configuraremos una nueva base de datos hacemos clic en New database
Luego definiremos la
base de datos con nombre Demo y dejaremos lo demás tal cual nos aparece
Luego daremos clic en
next y después en la siguiente ventana daremos clic en el botón que se muestra
en la siguiente imagen
Luego realizaremos las
configuraciones de seguridad utilizaremos el usuario "sa" para la
autenticación luego daremos clic en Ok
En las 4 ventanas
siguientes daremos clic en next y luego en finalizar, veremos que todo se ha
creado con exito
Cerramos la ventana y
luego hacemos clic derecho en Local Subscriptions y luego en Refresh, ahora
crearemos la suscripción de mezcla para ello seguimos los mismos pasos que
acabamos de seguir pero en la siguiente ventana seleccionamos pubSucursal1
Los siguientes pasos
serán igual que para la suscripción anterior, hasta llegar a la parte de
Synchronization Schedule, En esta parte Seleccionaremos el Agent schedule como
Run continuously para que sea más rápida la sincronización, hacemos clic en
next.
En la siguiente ventana
seleccionaremos en el parámetro Initialize When: Inmediately, para que los
cambios se realicen inmediatamente, por lo tanto veremos en el transcurso de un
minutos que los registros que ingresamos en la base de datos inicial se
replicaran en esta sucursal
En la siguiente
ventana Susbcription type seleccionamos Client y damos clic en next.
En la siguiente
ventana damos clic en siguiente y luego en finish, tendriamos que ver la
siguiente imagen si todo ha sucedido satisfactoriamente.
Luego tendremos que
dar clic derecho en local subscriptions y luego refresh para, refrescar las
subscripciones y luego realizamos el mismo procedimiento para la base de datos
Demo luego abrimos la base de datos y la tabla producto y veremos que los datos
del servidor principal se replican en el servidor secundario.
Referencias:
Leer nota completa...