La replicación de base de datos es una herramienta muy potente en el mundo de las aplicaciones distribuidas. Sus aplicaciones en el mundo real son muy variadas. Sin embargo, para que se pueda utilizar de forma correcta y funcione como esperamos es importante conocer realmente cómo funciona y las diferentes opciones que nos ofrece. En principio este artículo está orientado a la replicación sobre bases de datos SQL Server 2000/2005 aunque la teoría es extrapolable a otros gestores del mercado.
En este artículo entenderemos la replicación y veremos cómo planificar una replicación:
Beneficios de la Replicación
Los beneficios o los entornos donde es aplicable la replicación de bases de datos son los siguientes:
Modelo de Replicación
Antes de empezar, vamos a clarificar los conceptos y términos que se utilizan cuando hablamos de la replicación. Los elementos que componen la replicación son los siguientes:
Tipos de Replicación
Una vez claros los conceptos, tenemos que decidir qué tipo de replicación se adecua de mejor manera a nuestro entorno de servidores. Lógicamente, independientemente de la replicación elegida, la aplicación sobre la que trabajemos debe estar preparada para funcionar en este tipo de entornos. Los tipos de replicación existentes son los siguientes:
Replicación Transaccional: también es conocida como replicación dinámica. En la replicación transaccional, las modificaciones en la publicación son propagadas a los suscriptores de forma incremental. Las características de este tipo de replicación son:
Una vez que tenemos decidido el tipo de replicación a utilizar y que mejor se adapta a nuestro entorno, tendremos que decidir qué tipo de suscripción vamos a configurar. Existen dos tipos:
Artículos de la Publicación
Una vez que tengamos definidos toda la replicación tendremos que decidir qué artículos replicar. Este estudio es importante puesto que será la información que se transmita entre los suscriptores y publicadores. No hay que incluir en la replicación elementos extras que no influyan en ella.
El administrador de cada aplicación le orientará en este aspecto.
Conclusión
La replicación es, sin lugar a dudas, una herramienta muy importante en entornos distribuidos de trabajo. Sin embargo, mal utilizada puede llevar a pérdidas de información y desestabilizaciones de sistemas. La replicación como tal no es un sustituto real del balanceo de carga de servidores de bases de datos (Oracle RAC), pero usada correctamente nos puede permitir una movilidad de trabajo muy grande.
En este artículo entenderemos la replicación y veremos cómo planificar una replicación:
- Beneficios de la Replicación
- Elementos que influyen en la Replicación
- ¿Qué Replicación se adecua mejor a mi entorno?
- ¿Qué tipo de suscripción debo utilizar?
- ¿Qué artículos debo publicar?
Beneficios de la Replicación
Los beneficios o los entornos donde es aplicable la replicación de bases de datos son los siguientes:
- Usuarios trabajando en ubicaciones geográficamente alejados trabajando con sus propias copias locales de la base de datos.
- Entornos en los que se replica la base de datos principal en una secundaria como copia de seguridad. En el caso que la primaria caiga, la secundaria toma el control.
- En entornos en los que la carga de usuarios sea muy grande para un sólo gestor, se pueden replicar las bases de datos en varios servidores asignando a cada usuario un servidor. Balanceando de esta manera la carga podremos aliviar a los gestores.
Modelo de Replicación
Antes de empezar, vamos a clarificar los conceptos y términos que se utilizan cuando hablamos de la replicación. Los elementos que componen la replicación son los siguientes:
- Publicador: es la instancia que pone sus datos a disposición de otras localizaciones mediante la replicación. El Publicador puede tener varias publicaciones configuradas cada una relacionada con un conjuntos lógico de objetos y datos.
- Distribuidor: es la base de datos destinada a almacenar la información específica asociada a la replicación de uno o más publicadores. Cada publicador es asociado con una base de datos (conocida como la base de datos de distribución) en el Distribuidor. La base de datos de distribución guarda el estado de la replicación, metadatos y en algunos casos hace de cola de distribución entre el publicador y el suscriptor. En la mayoría de los casos, la misma base de datos actúa como Publicador y Distribuidor. Cuando el Publicador y el Distribuidor se encuentran en servidores separados, el Distribuidor es conocido como "Distribuidor Remoto".
- Suscriptores: es una base de datos configurada para recibir datos replicados. Un suscriptor puede recibir datos de múltiples Publicadores y publicaciones. Dependiendo del tipo de replicación elegida, el suscriptor también puede pasarle datos al Publicador.
- Artículo: un artículo identifica un objeto de base de datos que es incluido en la publicación. Una publicación puede tener varios tipos de artículos: procedimientos almacenados, vistas, tablas y otro tipo de objetos. Cuando las tablas son publicadas, se pueden establecer filtros para restringir los datos y/o columnas que se envían al suscriptor.
- Publicación: es una colección de no o más artículos de una base de datos. La agrupación de artículos en una publicación hace más fácil especificar el conjunto de datos asociados en la replicación como una sola unidad.
- Suscripción: es una petición para que una copia de la publicación sea enviada al suscriptor. La suscripción define qué publicación será recibida, cuando y donde. Hay dos tipos de suscripción: de inserción y de extracción.
- Agentes: son los encargados de gestionar la comunicación y el envío de los datos entre los suscriptores y los publicadores.
Tipos de Replicación
Una vez claros los conceptos, tenemos que decidir qué tipo de replicación se adecua de mejor manera a nuestro entorno de servidores. Lógicamente, independientemente de la replicación elegida, la aplicación sobre la que trabajemos debe estar preparada para funcionar en este tipo de entornos. Los tipos de replicación existentes son los siguientes:
Replicación Transaccional: también es conocida como replicación dinámica. En la replicación transaccional, las modificaciones en la publicación son propagadas a los suscriptores de forma incremental. Las características de este tipo de replicación son:
- El publicador y el suscriptor siempre están sincronizados.
- El entorno de transacción es respetado, si una transacción involucra a 5 registros, se replican estos 5 registros o ninguno.
- El publicador y el suscriptor deben estar siempre conectados.
- Los suscriptores siempre necesitan estar al día en la información.
- Mantener las transacciones es importante.
- Los cambios de datos se realizan tanto en el suscriptor como en el publicador.
- Los datos se mezclan según una planificación o bajo demanda.
- Permite a los usuarios trabajar offline y sincronizarse en el momento que quieran.
- La autonomía de las diferentes localizaciones es crítica.
- Múltiples suscriptores necesitan actualizar datos al mismo o diferente tiempo en el publicador.
- Los suscriptores son actualizados con todos los datos modificados no por transacciones individuales.
- La propagación de cambios hacia el suscriptor lleva más tiempo, siendo un proceso que se ejecuta pocas veces al día y de forma programada.
- Los objetos de base de datos no se modifican frecuentemente.
- La cantidad de información a replicar no es grande.
- Los usuarios suelen trabajar de manera desconectada no siendo importante el que trabajen con la información actualizada.
Una vez que tenemos decidido el tipo de replicación a utilizar y que mejor se adapta a nuestro entorno, tendremos que decidir qué tipo de suscripción vamos a configurar. Existen dos tipos:
- Suscripción de Inserción: el agente es gestionado por el publicador. Según las planificaciones realizadas, el agente se conectará al suscriptor que tenga configurado y le insertará la información. En el caso que los cambios se propaguen desde el suscriptor al publicador, este agente se encargará también de esta tarea.
- Suscripción de Extracción: en este caso, cada suscriptor tendrá su propio agente que se conectará al distribuidor para obtener la información de la replicación.
Artículos de la Publicación
Una vez que tengamos definidos toda la replicación tendremos que decidir qué artículos replicar. Este estudio es importante puesto que será la información que se transmita entre los suscriptores y publicadores. No hay que incluir en la replicación elementos extras que no influyan en ella.
El administrador de cada aplicación le orientará en este aspecto.
Conclusión
La replicación es, sin lugar a dudas, una herramienta muy importante en entornos distribuidos de trabajo. Sin embargo, mal utilizada puede llevar a pérdidas de información y desestabilizaciones de sistemas. La replicación como tal no es un sustituto real del balanceo de carga de servidores de bases de datos (Oracle RAC), pero usada correctamente nos puede permitir una movilidad de trabajo muy grande.
7 comentarios:
Buen Dìa Amigo,
Actualmente tengo un problemita con una replica, te doy el ejemplo tengo dos publicadores y un suscriptor...cuando el primer publicador actualiza monta bien los datos pero cuando el segundo publicador mando los datos borra los datos del primer publicador y deja los de el...aprecio mucho tu ayuda
desde Venezuela glapmigue@gmail.com
Buenos días Miguel,
hace ya mucho tiempo que no toco el tema de las replicaciones pero lo que dices creo que el problema que tienes es el tipo de replicación del publicador 2. Sin embargo, ¿tienes 2 publicadores y un suscriptor o 2 suscriptores de 1 publicación? Lo normal es tener varios suscriptores de un publicador que vayan actualizando los datos de todo el mundo. Revisa la replicación porque puede ser que el problema pueda venir por ahí también. Resumiendo, lo que te recomiendo es que:
1.- Revises cómo tienes configurado el tipo de la publicación porque debe ser de tipo "mezcla".
2.- Revises la configuración de publicadores y suscriptores para ver si es correcta.
Buen articulo, en pocos minutos me aclaraste bastante mi situación y lo que debo elegir!
Salu2 desde Chile.
Hola
siguiendo tu tutorial, he montado replicacion entre dos SQL SERVER 2005. Transaccional, uno hace de publisher y distributor, y el segundo hace de subscriptor.
Lo tengo todo casi casi bien, pero algo que no me gusta es que cuando se hace la replicación de las Stored Procedures, no se porque demonios, les cambia el nombre.
Ejemplo:
en origen:
dbo.v1_SP_Contenido
en destino:
dbo.sp_MSdel_dboContenido
estoy probando cosas a ver si lo soluciono...¿es normal?
saludos, muy buena guía :)
Tengo el mismo problema de Miguel R.
mi topologia de replica es muchos pluicadores y un solo SUSCRIPTOR.
Replica transaccional.
y me borra los datos y me sobreescribe
Hola esta buena la informacion, pero podrias haber elegido otro fondo para que fuera mas legible...
Saludos.
Gracias por la información.
Publicar un comentario