jueves, 20 de junio de 2013

Libro de Replicacion y Cluster de Bases de Datos.




Libro que documenta paso a paso los proyectos de replicacion y cluster realizados por los estudiantes de Bases de Datos de la Universidad Nacional de El Salvador. Empleando los diferentes gestores del mercado.


Descargar Haciendo Donacion.

DESCARGAR LIBRO GRATIS





Leer nota completa...

miércoles, 19 de junio de 2013

Replicación con SQL Server


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...