Replicación Y Cluster de Bases de Datos PDF
Replicación Y Cluster de Bases de Datos PDF
Replicación Y Cluster de Bases de Datos PDF
diosestinta.blogspot.com
Datos de catalogación bibliográfica
ii
diosestinta.blogspot.com
CONTENIDO
Introducción ....................................................................................... iv
Mysql: replicación ............................................................................... 1
iii
diosestinta.blogspot.com
Introducción
El área de Bases de datos se ha desarrollado como tecnología a pasos agigantados en los últimos años,
debido al hecho que las empresas consideran de vital importancia a la información, convirtiendo a la misma
en el activo principal de las organizaciones.
Por ello es que dentro de las organizaciones se montan infraestructuras tecnológicas de gran envergadura
para soportar en un primer momento los datos de sus operaciones transaccionales. Sin embargo el área de
Bases de Datos ha crecido enormemente, hasta el punto de convertirse en una especialidad de la
informática, existen Maestrías orientadas a especializar en el área de Bases de Datos. Esta área abarca:
Modelo Relacional y lenguaje SQL, datos NO SQL, big data, bases de datos distribuidas, bases de datos
multidimensionales, Almacenes de Datos, Minería de Datos y/o Inteligencia de Negocios.
El presente documento recoge una serie de proyectos académicos estudiantiles, que abordan de una forma
práctica los temas de Replicación y Clustering de Bases de Datos. Se han utilizado para la implementación
los principales gestores del mercado, enfatizando las diferencias que implica el concepto de réplica y clúster
para cada gestor.
Para cada proyecto se brinda a modo de tutorial paso a paso, las acciones a realizar para poder montar el
escenario de una bases de datos distribuida, los elementos que deben configurarse, las herramientas a
instalar, con lujo de detalles para facilitar la reproducción de dicho escenario en cualquier curso de bases de
datos.
Este aporte es realizado con mucho esfuerzo, mostrando la capacidad y deseo de aprendizaje que existe en
los estudiantes de la Universidad de El Salvador, los cuales a pesar de las enormes limitantes de equipo e
infraestructura, hemos realizado este aporte a la comunidad latinoamericana. Se han sorteado cantidad de
limitantes, por mencionar algunos: en nuestra universidad se carece de un centro de cómputo adecuado para
desarrollar los escenarios de bases de distribuidas, no se cuenta con aulas adecuadas para proyectar, hasta el
acceso a un proyector se vuelve complicado, en algunas de las exposiciones de los escenarios se tenía el lio
que el proyector no tenía entrada hdmi, o de repente por ser un equipo antiguo se le arruinaba un color en
plena presentación. Toda una suerte de aventura, a pesar de todo ello la capacidad de aprender supera las
limitantes, y pues; estamos en total disposición a recibir un apoyo de parte suya desde cualquier parte del
mundo que lea este documento, cualquier apoyo por mínimo que parezca será muy bien recibido por los
estudiantes de El Salvador. Puede escribir al correo calderonperaza@gmail.com si desea apoyarnos o
ayudarnos para mejorar las condiciones de aprendizaje.
Además del presente libro, puede acceder a diferentes recursos en línea, como artículos o tutoriales del blog,
así como también los videos que documentan cada proyecto, los cuales están en las siguientes URLs:
http://BasesdeDatosUES.blogspot.com/
iv
diosestinta.blogspot.com
http://www.youtube.com/channel/UCdb3GLHqHU6DIURmkpJjfgw
Si resulta un poco complicada la Url del canal de youtube, puede poner en el buscador: bases de datos ues
y encontrara rápidamente todos los videos de cada escenario de replicación.
Le invitamos a disfrutar del presente libro y de los recursos multimedia con los que se cuenta, que sea de
mucho provecho, se ha escrito con el mejor de los propósitos desde nuestro querido El Salvador, un país
muy pequeño pero muy cálido desde el corazón de Centro América.
Alex Calderón
diosestinta.blogspot.com
diosestinta.blogspot.com
MySQL: Replicación
Gómez Arévalo, Jacqueline Stephanie
Morán Monzón, Luis Antonio
Urquilla Campos, Edwin Alberto
Objetivos:
Conceptos:
MySQL
Es un sistema de gestión de bases de datos relacional, distribuido y multihilo. Es código abierto y el soporte
es brindado por Oracle. La más reciente distribución es la 5.6.11 y fue lanzada el 25 de abril de 2013.
Replicación
Es el proceso de copiar y mantener objetos de las base de datos en múltiples bases de datos que forman un
sistema de bases de datos distribuido. La replicación permite que los datos de un servidor de bases de datos
(el maestro), sean replicados en uno o más servidores de bases de datos (los esclavos).
Replicación en MySQL.
Las características de MySQL soportan replicación asíncrona unidireccional: un servidor actúa como
maestro y uno o más actúan como esclavos.
El servidor maestro escribe actualizaciones en el fichero de log binario, y mantiene un índice de los ficheros
para rastrear las rotaciones de logs. Estos logs sirven como registros de actualizaciones para enviar a los
servidores esclavos. Cuando un esclavo se conecta al maestro, informa al maestro de la posición hasta la que
el esclavo ha leído los logs en la última actualización satisfactoria. El esclavo recibe cualquier actualización
que ha tenido lugar desde entonces, y se bloquea y espera para que el master le envíe nuevas actualizaciones.
diosestinta.blogspot.com
Debe tenerse en cuenta que cuando se usa replicación, todas las actualizaciones de las tablas que se replican
deben realizarse en el servidor maestro. De otro modo, se debe ser cuidadoso para evitar conflictos entre
actualizaciones que hacen los usuarios a las tablas en el maestro y las actualizaciones que hacen en las tablas
de los esclavos.
Ventajas de la Replicación:
La replicación unidireccional tiene beneficios para la robustez, velocidad, y administración del sistema:
Desarrollo:
Se va a resolver un escenario en el cual se tiene un servidor de Bases de Datos actuando como Maestro o
Master y un servidor de Bases de Datos actuando como Esclavo o Slave; en caso se pueden realizar la
misma configuración para varios esclavos y la replicación seguirá funcionando de la misma manera. El
escenario es el siguiente:
Las configuraciones se realizan bajo dos computadoras con Sistema Operativo Debian Wheezy 7.0.
Si aún no se tiene instalado el servidor MySQL se instalará en una Terminal con la línea de comando:
diosestinta.blogspot.com
SERVIDOR MAESTRO:
Una vez instalado el servidor MySQL se procederá a las configuraciones correspondientes; primeramente se
realizará la configuración del servidor Maestro:2
# nano /etc/mysql/my.cnf
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=DATABASE_TO_BE_REPLICATED
server-id=1
skip-host-cache
skip-name-resolve
diosestinta.blogspot.com
2. Se reinicia el servicio mysql:
# /etc/init.d/mysql restart
3. Se accede como root a mysql, pedirá la contraseña del servidor, ésta será la que se ha configurado en la
instalación:
# mysql –u root –p
diosestinta.blogspot.com
Donde
% : Es la dirección donde está almacenado el esclavo, puede determinarse que la dirección sea
Este comando nos devolverá el archivo y la posición de la Base de Datos, es importante, tener
presentes estos datos, ya que serán utilizados en la configuración del esclavo.
9. Se congelará la base de datos para poder obtener el respaldo de la misma y poder restaurarla en el
servidor esclavo.
diosestinta.blogspot.com
11. Con mysqldump se va a crear un backup de la base de datos, para que luego sea restaurada en el
servidor esclavo.
Este comando generará un archivo .sql, el cual contendrá el backup de la base de datos, éste se
almacenará en la dirección hacia la cual apunta la terminal.
12. Luego se accede a la consola de mysql nuevamente para descongelar las tablas de la base de datos que
replicamos:
# mysql –u root –p
diosestinta.blogspot.com
SERVIDOR ESCLAVO:
En el servidor esclavo, será necesario copiar el archivo .sql que fue generado, para restaurar la base de datos
a partir de él, puede ser copiado a través de una memoria usb, transferencia punto a punto o por llaves SSH,
tal cual es el ejemplo de la configuración aquí detallada:
1. A través de claves SSH, se transfiere el archivo de la máquina que sirve como servidor maestro a la que
sirve como servidor esclavo:
Donde:
diosestinta.blogspot.com
rutaAlmacenamiento: Es la ruta donde se almacenará el archivo.
2. Se crea la base de datos en el servidor esclavo, por medio del archivo que contiene el backup de la
misma.
3. Con un editor de texto, ya sea vim, nano o cualquier otro se abre el archivo de configuración my.cnf
# nano /etc/mysql/my.cnf
server-id=2
replicate-do-db=DATABASE_TO_BE_REPLICATED
skip-host-cache
skip-name-resolve
diosestinta.blogspot.com
4. Se reiniciará el servicio mysql para poder aplicar los cambios.
# /etc/init.d/mysql restart
# mysql –u root –p
diosestinta.blogspot.com
7. Luego se hará referencia al servidor maestro del cual obtendrá las actualizaciones el servidor esclavo:
-> MASTER_USER='user',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='/var/log/mysql/mysql-bin.0000XX',
-> MASTER_LOG_POS=XXX;
Dónde:
MASTER_LOG_POS: Posición de los logs, también obtenida con SHOW MASTER STATUS en el
servidor maestro.
10
diosestinta.blogspot.com
8. Se inicia el servidor esclavo:
DEMOSTRACIÓN:
# mysql –u root –p
11
diosestinta.blogspot.com
Y luego verificamos las tablas con el comando:
2. En el servidor esclavo, se accederá a MySQL y se verán reflejados los cambios de la tabla creada en el
servidor maestro:
# mysql – u root –p
12
diosestinta.blogspot.com
Referencias:
2. Wallen J., Set up MySQL database replication to ensure up-to-date backups. Obtenida el 31 de abril
de 2013 en http://www.techrepublic.com/blog/itdojo/set-up-mysql-database-replication-to-
ensure-up-to-date-backups/3340?pg=1
13
diosestinta.blogspot.com
diosestinta.blogspot.com
PostgreSQL Cluster con PGPOOL-II
Henry Renderos, David García
Objetivos:
Aprender los conceptos básicos sobre el manejo de un clúster utilizando PostgreSQL 9.1 y
PGPOOL-II en Linux.
Comprender el funcionamiento de un clúster.
Establecer los parámetros de inicialización para el clúster.
Realizar un escenario demostrativo sobre el uso de un clúster empleando replicación de bases de
datos y sentencias SQL.
Visualizar el comportamiento de la replicación en la red.
Conceptos:
¿Qué es un clúster?
Un clúster es simplemente una colección de componentes que se unen y trabajan como un solo
componente para proveer alta disponibilidad. Cuando hablamos de clúster de bases de datos, nos referimos
a una arquitectura en la que tenemos varios equipos con parte de los datos del usuario trabajando al unísono
como un solo sistema. La arquitectura de un clúster de base de datos viene definida por la manera en que se
almacenan los datos en cada nodo.
¿Qué es PostgreSQL?
PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y
con su código fuente disponible libremente. Es el sistema de gestión de bases de datos de código abierto
más potente del mercado y en sus últimas versiones no tiene nada que envidiarle a otras bases de datos
comerciales.
PostgreSQL utiliza un modelo cliente/servidor y usa multiprocesos en vez de multihilos para garantizar la
estabilidad del sistema. Un fallo en uno de los procesos no afectará el resto y el sistema continuará
funcionando.
¿Qué es PGPOOL-II?
pgpool-II es un middleware que se encuentra entre los servidores de PostgreSQL y un cliente de base de
datos PostgreSQL. Ofrece las siguientes características:
Agrupación de conexiones
15
diosestinta.blogspot.com
pgpool-II mantiene las conexiones establecidas a los servidores PostgreSQL, y los reutiliza cada vez que una
nueva conexión con las mismas propiedades (es decir, nombre de usuario, bases de datos, la versión del
protocolo) entra en juego reduce la sobrecarga de la conexión, y mejora el rendimiento global del sistema.
Replicación
pgpool-II puede gestionar múltiples servidores PostgreSQL. La activación de la función de replicación hace
que sea posible la creación de una copia de seguridad en tiempo real en 2 o más grupos PostgreSQL, de
manera que el servicio pueda continuar sin interrupción si uno de esos grupos falla.
Balanceo de carga
Si se replica una base de datos (ya que se ejecuta en el modo replicación o modo maestro / esclavo), la
realización de una consulta SELECT en cualquier servidor devolverá el mismo resultado. pgpool-II se
aprovecha de la función de replicación con el fin de reducir la carga en cada servidor PostgreSQL. Lo hace
mediante la distribución de las consultas SELECT entre los servidores disponibles, mejorando el
rendimiento global del sistema. En un escenario ideal, el rendimiento de lectura podría mejorar
proporcionalmente al número de servidores PostgreSQL. El equilibrio de carga funciona mejor en un
escenario donde hay una gran cantidad de usuarios que ejecutan muchas consultas de sólo lectura al mismo
tiempo.
Hay un límite en el número máximo de conexiones simultáneas con PostgreSQL, y nuevas conexiones son
rechazados cuando se alcanza este número. Al aumentar este número máximo de conexiones, sin embargo,
aumenta el consumo de recursos y tiene un impacto negativo en el rendimiento general del sistema. pgpool-
II también tiene un límite en el número máximo de conexiones, pero las conexiones adicionales se pondrán
en cola en lugar de devolver un error de inmediato.
Consultas en paralelo
Con la función de consultas en paralelo, los datos se pueden dividir entre varios servidores, por lo que una
consulta se puede ejecutar en todos los servidores al mismo tiempo, reduciendo el tiempo de ejecución
total. La consulta paralela es la que funciona mejor en la búsqueda de datos a gran escala.
pgpool-II habla backend de PostgreSQL y el protocolo de interfaz, y transmite mensajes entre un backend y
un frontend. Por lo tanto, una aplicación de base de datos (frontend) piensa que pgpool-II es el servidor
PostgreSQL actual, y el servidor (backend) ve a pgpool-II como uno de sus clientes. Debido a que pgpool-
II es transparente para el servidor y el cliente, una aplicación de base de datos existente se puede utilizar con
pgpool-II casi sin un cambio en su código fuente.
16
diosestinta.blogspot.com
Desarrollo:
INSTALACIÓN
# apt-get install ntp openssl file psmisc sysstat bzip2 unzip nmap dstat
rsync wget ccze tcpdump pciutils dnsutils host
2. Configuraremos dos archivos del sistema de Debian, esto nos facilitará hacer referencias a nombres de
host y no a direcciones IP.
# nano /etc/hostname
# nano /etc/hosts
Acá agregaremos los nombres de host pertenecientes al clúster con sus respectivas direcciones IP.
17
diosestinta.blogspot.com
En este momento tenemos configurados los nodos del clúster de la siguiente forma, luego de esto debemos
reiniciar los nodos:
Nodo 1
o Hostname: pgsql1
o Dirección IP: 192.168.1.7
Nodo 2
o Hostname: pgsql2
o Dirección IP: 192.168.1.4
Máscara de red de 24 bits.
Dirección IP del enrutador: 192.168.1.1
3. Comenzaremos a configurar PostgreSQL en ambos nodos pero pgpool-II solo en el nodo pgsql1. Los
comandos deberán ejecutarse como root (#) o como el usuario postgres ($).
diosestinta.blogspot.com
# apt-get install postgresql-9.1 postgresql-contrib-9.1 postgresl-doc-9.1
uuid libdbd-pg-perl
CONFIGURACIÓN DE POSTGRESQL
Los siguientes pasos se aplican a las instancias de PosgreSQL en los nodos pgsql1 y pgsql2.
1. Comenzaremos, como usuario postgres, añadiendo el usuario de base de datos (role) pgpool2, sin
contraseña:
# su – postgres
# nano /etc/postgresql/9.1/main/pg_hba.conf
19
diosestinta.blogspot.com
3. Por último indicaremos a PostgreSQL que escuche en todas las interfaces pues, por defecto, sólo lo
hace en el localhost. Editamos el fichero /etc/postgresql/9.1/main/postgresql.conf y cambiamos la
siguiente directiva.
listen_addresses = ‘*’
También podemos restringirlo a que solo escuche peticiones provenientes de la dirección IP en donde se
encuentra pgpool-II
CONFIGURACIÓN DE PGPOOL-II
La configuración de pgpool-II la realizaremos únicamente en el nodo pgsql1, pues sólo ese host lo posee.
20
diosestinta.blogspot.com
1. Editaremos el archivo /etc/pgpool2/pgpool.conf
Pool de conexiones
Replicación
Balanceo de carga
Las únicas directivas que modificaremos se muestran a continuación, las demás las dejaremos intactas:
listen_addresses = ‘*’
port = 9999
backend_hostname0 = ‘pgsql1’
backend_port0 = ‘5432’
backend_weight0 = 1
backend_hostname1= ‘pgsql2’
backend_port1 = ‘5432’
backend_weight1 = 1
replication_mode = true
load_balance_mode = true
replicate_select = true
pgpool2_hostname = ‘pgsql1’
diosestinta.blogspot.com
# pgpool –n –d –f /etc/pgpool2/pgpool.conf
-h es el nombre del host al que nos vamos a conectar y en donde está instalado pgpool-II.
-p es el puerto que definimos en el archivo /etc/pgpool2/pgpool.conf
-U es el usuario que creamos en los dos nodos del clúster.
-d es la base de datos a la que nos vamos a conectar
Si todo va bien podremos ver que en la terminal se nos muestra algo como sigue:
postgres=#
Lo que nos indica que nos hemos podido conectar a través de pgpool-II
PRUEBAS DE REPLICACIÓN
1. Crearemos una base de datos que será replicada a través de pgpool-II de la siguiente forma:
2. Si nos loggeamos como usuario postgres en los dos nodos del clúster (su – postgres) y ejecutamos el
siguiente comando para visualizar las bases de datos, nos debería de aparecer en cada nodo la base de datos
que creamos en el paso anterior:
22
diosestinta.blogspot.com
$ psql -l
A continuación se muestran algunas capturas de lo que sucede en la red al momento de que se realiza una
sentencia SQL a través de pgpool-II en los nodos pertenecientes al clúster.
# wireshark &
2. Seleccionaremos la interfaz eth0 y capturaremos algunos paquetes, realizaremos una consulta insert a
través de pgpool-II y observaremos que aparecerán los siguientes paquetes en nuestra escucha:
23
diosestinta.blogspot.com
3. Observaremos con más detenimiento el paquete 874 y veremos que al momento de la replicación lo
que se transporta a través de la red son las sentencias SQL. La query que fue introducida en el nodo pgsql1
a través de pgpool-II fue “insert into usuario values („Base‟,‟Pass‟); y efectivamente vemos en el paquete que
esa sentencia es la replicada en el nodo pgsql2 con dirección IP 192.168.1.4.
Referencias:Jaume Sabater (2008). Replicación y alta disponibilidad de PostgreSQL con pgpool-II. (1 Nov –
2008) http://linuxsilo.net/articles/postgresql-pgpool.htmlpgpool Global Development Group (2003 –
2011). Pgpool-II user manual http://pgpool.projects.pgfoundry.org/pgpool-II/doc/pgpool-en.html
24
diosestinta.blogspot.com
Oracle Stream Replication
Portillo Alvarado, Pablo Oswaldo.
Gómez Arana, Herber Oswaldo.
Mendes Salgado, Rebeca Marcela.
Chicas Blanco, Karla Grisel.
Objetivos:
Explicar de forma clara los conceptos relacionados con la replicación Stream en Oracle database
11g R2.
Explicar la diferencia entre una replicación síncrona y una replicación asíncrona.
Presentar con claridad las configuraciones o pasos que se deben seguir para llevar a cabo una
replicación stream en Oracle database.
Replicar cambios DML de manera bidirectional en 2 Bases de Datos usando el gestor Oracle
Estándar Edition 11g.
25
diosestinta.blogspot.com
Conceptos:
Antes de seguir es importante conocer algunos conceptos.
Tipos de Streams:
Replicación Síncrona:
Este tipo de replicación tiene sus limitantes, principalmente debe ser utilizada para aplicaciones en las cuales
se necesite un flujo pequeño de información, ya que solo soporta la replicación de 1 o pocas tablas de un
esquema determinado y solo replica cambios DML; los DDL no son soportados. Utiliza queues llamadas
también colas que se encargan de capturar la replicación y encolarla hacia la otra base de datos, y viceversa.
Para más información consulte:
http://docs.oracle.com/cd/B28359_01/server.111/b28321/strms_capture.htm#STRMS168.
Replicación Asíncrona:
D
T
Replicación mediante procesos, los cambios se propagan a través de redo-logs. Puede propagar tanto
cambios DDL como DML.
Source Destinetion
Database Database
Cuando usted inserta un dato y luego que hace commit, se captura esa transacción, una vez hecho esto, los
datos se propagan hacia la base de Datos destino donde se aplican dichos cambios.
26
diosestinta.blogspot.com
Capture (captura):
Esta paso se lleva a cabo en la base de datos origen de la replicación capturando los cambios en el momento
en que son realizados, estos cambios pueden ser DML o DDL dependiendo del tipo de replicación q se este
realizando, y pueden ser realizados mediante COLAS o mediante PROCESOS dependiendo de si es
síncrona o asíncrona.
Propagation (propagación):
Este paso lo realiza la base de datos origen quien envía el cambio luego de capturarlo, este se envía mediante
redologs que son interpretados en la base de datos destino.
Apply (aplicacion):
Este paso se realiza en la base de datos destino quien toma los redologs y los aplica en sus tablas, esquemas
o base de datos.
27
diosestinta.blogspot.com
Desarrollo:
Este documento explica cómo implementar una replicación de ORACLE STREAM en ORACLE 11g R2 a
nivel de servidores Oracle entre 2 bases de datos diferentes en Sistemas Operativos Windows Server 2012,
arquitectura para 64bits. Desde nuestro punto de vista lo primero que hay que hacer es revisar el tipo de
instalación que realizamos ya que si es la Standar Edition la única forma de realizar la replicación de
Streams es atreves de un mecanismo sincrono ya que esta instalación no soporta la replicación a través de
procesos, este documento se encargara únicamente de la replicación síncrona (a través de
queues/colas) entre bases de datos.
Si usted necesita replicar grandes volúmenes de información ya sea una base de datos entera o un esquema
completo deberá utilizar otro tipo de instalación como la Enterprise que soporta la replicación de tipo
asíncrona. Vea Imagen 1
Imagen 1
Antes que todo, debemos crear las Bases de Datos en modo archive log.
En nuestro caso se creara la base de datos BDA en el servidor #1 y BDB en el servidor #2.
Si usted creo las bases de datos en modo archive log puede obviar el paso 1.
28
diosestinta.blogspot.com
2. Agregar las cadenas de conexión respectivas en el archivo TNSNAMES.ORA.
Estas nos ayudaran a lograr la conectividad entre ambos servidores a nivel de las bases de datos.
NOTA: ya existe en dichos archivos otra entrada con el nombre de la base de datos que creamos al inicio.
BDA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = BDA)
)
)
29
diosestinta.blogspot.com
Imagen 2
Imagen 3
30
diosestinta.blogspot.com
Imagen 4
31
diosestinta.blogspot.com
Imagen 5
32
diosestinta.blogspot.com
Imagen 6
Imagen 7
La lista de usuarios debe quedar como se muestra en la Imagen 8. Con esto tenemos a nuestro usuario
strmadmin con privilegios de Superadministrador.
33
diosestinta.blogspot.com
Imagen 8
34
diosestinta.blogspot.com
3.3.5 Agregación de variables de entorno necesarias para el Streams.
SQL> alter system set global_names=true;
SQL> alter system set Streams_pool_size=100m;
Para ello nos logeamos en el servidor 2 como nuestro usuario strmadmin utilizando la cadena de conexión
de nuestra base de datos en este caso BDB y Se crea el enlace hacia la Base de Datos de servidor #1 BDA.
Este paso debe llevarse a cabo en el Enterprise Manager, ingresando con el usuario que se creó
anteriormente y con su respectiva contraseña. Esto debe de realizarse en ambas Bases de Datos.
http://docs.oracle.com/cd/B28359_01/server.111/b28324/tdpii_common_ii.htm#CHDJHCAI
Ir a la pestaña Movimiento de Datos
En la sección Streams seleccionar la opción Gestionar Colas Avanzadas. Esto abrirá una nueva
ventana
Buscamos un botón que dice Crear.
Seleccionamos Cola Normal, Tipo de Dato SYS.ANYDATA
Creamos las colas capture_queue y apply_queue como se muestran en las Figuras Imagen 9 e
Imagen 10.
35
diosestinta.blogspot.com
Imagen 9
Imagen 10
36
diosestinta.blogspot.com
6 Creación de tabla en el esquema del usuario HR.
Esta tabla debe crearse en ambas bases de datos ya que nuestra replicación será síncrona, por lo tanto no
podremos replicar cambios de tipo DDL y al crear una tabla en una base de datos esta no se replicara en la
otra, para ello creamos esta tabla en este esquema y en ambas DB y la definiremos mas adelante para ser el
objeto que tenemos como objetivo de nuestra replicación, para ello:
Conectarse al esquema de la Base de Datos en el que se desea crear una nueva tabla.
Si no ha desbloqueado el esquema, puede hacer lo siguiente en SQLPLUS desde el usuario sys. Para este
caso se usara el esquema hr.
> sqlplus „/ as sysdba‟
SQL> alter user hr account unlock identified by hr;
7.1.2- Agregación de reglas del apply process en BDA ubicada en Servidor #1.
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
37
diosestinta.blogspot.com
queue_name => 'strmadmin.apply_queue',
END;
DBMS_APPLY_ADM.CREATE_APPLY(
END;
7.2.2- Agregación de reglas del apply process en BDB ubicada en Servidor #2.
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
END;
38
diosestinta.blogspot.com
8 Configuración de la Propagación para la notificación de cambios.
8.1. En Base de Datos BDA.
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
END;
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
END;
39
diosestinta.blogspot.com
9 Configuración de Captura Síncrona.
En ambas Bases de Datos hacer lo siguiente. Esto es necesario para capturar lo que se propaga de la otra
Base de Datos con la que se está conectado.
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
END;
iscn NUMBER;
BEGIN
iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@BDB(
END;
40
diosestinta.blogspot.com
10.2 En Base de Datos BDB.
DECLARE
iscn NUMBER;
BEGIN
iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@BDA(
END;
DBMS_APPLY_ADM.START_APPLY(
END;
Si nos conectamos en Base de Datos BDB como hr y hacemos un select de la siguiente forma obtendremos
el siguiente resultado.
De igual forma se pueden ingresar campos en la base de Datos BDB, y se propagaran los cambios a BDA.
41
diosestinta.blogspot.com
Referencias:
http://docs.oracle.com/cd/B28359_01/server.111/b28321/strms_capture.htm#STRMS168
http://docs.oracle.com/cd/B28359_01/server.111/b28324/tdpii_common_ii.htm#CHDJHCAI
42
diosestinta.blogspot.com
Oracle Data Guard
Samuel Menéndez, Lisandro Martínez, Isidro Flores, Erick Valenzuela
Objetivos
Documentar la creación de una base de datos standby (física) con la solución de Oracle Data Guard
11g R2.
Sincronizar una base de datos standby física con su contraparte de producción para la protección de
datos y la alta disponibilidad.
Permitir que una base de datos standby física esté abierta para acceso de solo lectura– para
informes, consultas simples o complejas, clasificación, acceso basado en la web, etc. mientras se
aplican cambios a la base de datos de producción.
Identificar todos requisitos necesarios tanto de software como de hardware para tener un óptimo
rendimiento en la tecnología Oracle en su versión Enterprise.
Conceptos
Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo
contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca
puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos
en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnológico de campos
como la informática y la electrónica, la mayoría de las bases de datos están en formato digital
(electrónico), y por ende se ha desarrollado y se ofrece un amplio rango de soluciones al problema
del almacenamiento de datos.
Oracle Corporation es una de las mayores compañías de software del mundo. Sus productos van
desde bases de datos (Oracle) hasta sistemas de gestión. Cuenta además, con herramientas propias
de desarrollo para realizar potentes aplicaciones, como Oracle Designer, Oracle JDeveloper y
Oracle Developer Suite. Hoy Oracle es el estándar de oro para la tecnología de base de datos y
aplicaciones en las empresas en todo el mundo. La compañía es el proveedor líder mundial de
software de gestión de información y la segunda mayor compañía de software independiente. La
adquisición de Sun le otorgó un papel de liderazgo en el campo del software.
Se considera a Oracle Database como uno de los sistemas de bases de datos más completos,
destacando:
43
diosestinta.blogspot.com
Soporte de transacciones: Una transacción es una interacción con una estructura de datos
compleja, compuesta por varios procesos que se han de aplicar uno después del otro. La
transacción debe realizarse de una sola vez y sin que la estructura a medio manipular pueda
ser alcanzada por el resto del sistema hasta que se hayan finalizado todos sus procesos.
Estabilidad: se dice que un sistema es estable cuando su nivel de fallos disminuye por
debajo de un determinado umbral, que varía dependiendo de la estabilidad que se requiera.
Escalabilidad: es la propiedad deseable de un sistema, una red o un proceso, que indica su
habilidad para reaccionar y adaptarse sin perder calidad, o bien manejar el crecimiento
continuo de trabajo de manera fluida, o bien para estar preparado para hacerse más grande
sin perder calidad en los servicios ofrecidos.
Soporte multiplataforma: es un atributo conferido a los programas informáticos o los
métodos de cálculo y los conceptos que se ejecutan e interoperar en múltiples plataformas
informáticas.
Las bases de datos de reserva o stanby pueden usarse para realizar tareas de mantenimiento
programadas en forma gradual. El mantenimiento se realiza primero en la base de datos de reserva.
Una vez completadas las tareas de mantenimiento, la producción pasa a la base de datos de reserva.
El único tiempo de inactividad es el necesario para efectuar la transición. De ese modo, aumenta la
disponibilidad y se reduce el riesgo al realizar mantenimiento de hardware o del sistema operativo,
mantenimiento de sitios o al aplicar nuevos grupos de parches a la base de datos, actualizar a
versiones completas o implementar otros cambios significativos en la base de datos.
Una base de datos física de reserva, como es una réplica exacta de la base principal, también
puede servir para aliviar a la base de datos principal de la sobrecarga de realizar backups.
Data Guard 11g versión 2 está diseñado para reducir el impacto del transporte sincrónico en el
rendimiento de la base de datos principal. Ahora los datos redo se transmiten a la base de datos de
reserva remota en paralelo con las E/S de archivos de registro locales en línea de la base principal, y
44
diosestinta.blogspot.com
así se evita que las E/S de reserva influyan sobre el total de tiempo de recorrido de ida y vuelta. De
ese modo, se permite mayor distancia geográfica entre las bases de datos principal y de reserva en
una configuración sincrónica con cero pérdidas de datos. En redes de baja latencia, puede reducir el
impacto de la replicación sincrónica en el rendimiento de la base de datos principal hasta alcanzar
un nivel cercano a cero, por lo cual resulta interesante para complementar una base de reserva
asincrónica remota a fin de lograr una protección de alta disponibilidad y cero pérdida de datos
contra fallas de las bases de datos y los componentes (fallas de redes SAN, por ejemplo).
Una transición es una operación planificada que se usa para reducir el tiempo de inactividad
durante el mantenimiento programado, como actualizaciones de hardware o del sistema operativo,
actualizaciones graduales de la base de datos de Oracle y otras tareas de mantenimiento que se
realizan en las bases de datos. Independientemente del servicio de transporte (ya sea sincrónico o
asincrónico) o el modo de protección que se utilice, una transición siempre es una operación en la
que no se pierde ningún dato.
El archivo pfile contiene todos los parámetros de inicialización de la base de datos. [2]
Un SPFILE (archivo de parámetros del servidor), por otro lado, es un archivo binario de servidor
persistente que sólo se puede modificar con el comando "ALTER SISTEMA DE JUEGO". Esto
significa que usted ya no necesita una copia local de la pfile para iniciar la base de datos desde un
equipo remoto. Edición de una SPFILE se corrompen, y usted no será capaz de iniciar la base de
datos más. [3]
SQL*Plus es un programa de línea de comandos de Oracle que puede ejecutar comandos SQL y
PL/SQL de forma interactiva o mediante un script. SQL*Plus opera como una herramienta
relativamente simple con una interfaz de líneas de comando básica. Los programadores y los
administradores de bases de datos (DBA's) lo usan de forma muy común como interfaz
fundamental en la mayoría de las instalaciones de software de Oracle. Oracle 2010, Oracle®
Database SQL Language Reference 11g, obtenida el 1 de mayo de 2013, de
http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6016.htm
Desarrollo
La práctica consta de dos bases de datos: una primaria y una secundaria que servirá de respaldo en caso de
fallar la primaria, en ese ese caso la base de datos secundaria lleva un backup de todos los datos y se pueden
acceder a ellos pero en modo protegido o de lectura.
Requisitos:
2 computadoras con características similares (una se utilizara como primaria y la otra como bases de
datos secundaria).
Un cable UTP cruzado.
Sistema operativo OpenSUSE en su versión 12.3 (32 bits).
Oracle Enterprise 11g R2 (32 bits), es necesario utilizar la versión Enterprise ya que en las demás
versiones no cuenta con las herramientas necesarias para configurar un Data guard.
La máquina primaria debe tener instalada una base de datos y la maquina secundaria
únicamente el software de Oracle (sin base de datos).
45
diosestinta.blogspot.com
Lo primero que debe hacerse es que cada computadora tenga una dirección IP del mismo rango para tener
conectividad entre las dos computadoras, en este caso se utilizan las siguientes:
En esta explicación estamos utilizando el puerto 7438 y el archivo listener.ora queda de la siguiente manera:
46
diosestinta.blogspot.com
Verificar que la base de datos está en modo archivelog:
LOG_MODE
------------
NOARCHIVELOG
SQL>
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
Inicialización de parámetros:
Verificar que los parámetros DB_NAME y DB_UNIQUE_NAME sean iguales, en este caso DB11G en la
base de datos primaria.
DB_NAME especifica un identificador de base de datos de hasta 8 caracteres. Este parámetro debe ser
especificado y debe corresponder con el nombre especificado en la sentencia CREATE DATABASE.
DB_UNIQUE_NAME especifica un nombre único global para la base de datos. De cada base de datos
DB_UNIQUE_NAME debe ser único dentro de la empresa. El valor de DB_UNIQUE_NAME puede ser
de hasta 30 caracteres y distingue entre mayúsculas y minúsculas. Los siguientes caracteres son válidos en un
nombre de base de datos: caracteres alfanuméricos, guion bajo (_), signo de número (#) y el signo de dólar
($). [4]
47
diosestinta.blogspot.com
El DB_NAME de la base de datos secundaria deberá ser el mismo (DB11G) de la primaria, pero deben
tener diferente valor de DB_UNIQUE_NAME. Los valores DB_UNIQUE_NAME de ambas bases serán
utilizadas en el DG_CONFIG configurando el parámetro LOG_ARCHIVE_CONFIG. Para esta
configuración la base secundaria será configurada con el valor “DB11G_STBY”.
LOG_ARCHIVE_CONFIG: este parámetro habilita o deshabilita el envío de redo logs a destinos remotos
y el recipiente de estos. Este parámetro tiene varios atributos pero el que utilizaremos será el siguiente:
DG_CONFIG especifica hasta 30 nombres de bases de datos únicas (Definidas con el parámetro
DB_UNIQUE_NAME) para todas las bases de datos en tu configuración de Data Guard. [5]
Se establece los destinos de los archivos remotos. En este caso se utiliza flash recovery área para la
ubicación local.
LOG_ARCHIVE_DEST_n controla diferente aspectos de como los servicios de transporte de los Redo
transfiere los datos de redo de la base de datos primaria a su destino de standby.
Este parámetro tiene varios atributos que son necesarios para configurar tu ambiente de Dataguard:
ASYNC (Default): Los datos generados de redo por transacción no tienen que haber sido recibidos
en cada uno de los destinos habilitados antes de cometerse ésta.
SYNC: Los datos generados de redo por transacción tienen que haber sido recibidos en cada uno
de los destinos habilitados antes de cometerse ésta.
AFFIRM y NOAFFIRM: Controla si un destino de transporte de redo acusa de recibo los datos de
redo antes o después de escribir estos al standby redo log.
DB_UNIQUE_NAME: Especifica un nombre único para la base de datos que va a recibir los
datos de redo. Tienes que especificar este nombre, no hay un valor por default.
VALID_FOR .- Identifica cuando el servicio de transporte de redo puede transmitir datos de redo
a los destinos, esto se basa en los siguiente factores:
redo_log_type: Si los archivos de Online Redo Log, Standby Redo log o ambos este siendo
archivados en la base de datos destinada.
database_role: Si el rol de la base de datos es la Primaria o la base de datos en Stanby. [6]
48
diosestinta.blogspot.com
Los parámetros LOG_ARCHIVE_FORMAT y LOG_ARCHIVE_MAX_PROCESSES deben
configurarse con los valores apropiados, así como el REMOTE_LOGIN_PASSWORDFILE debe
establecerse en modo exclusive.
Adicionalmente a la configuración previa es recomendable estar seguro de que la base de datos primaria esta
lista para cambiar de rol y convertirse en una secundaria.
Recordar que se debe reiniciar para que algunos parámetros tengan efecto.
Las siguientes configuraciones son necesarias tanto en la base primaria y secundaria en el siguiente archivo:
"$ORACLE_HOME/network/admin/tnsnames.ora", esto se puede configurar con la ayuda de la
herramienta Network Configuration (netca) o manualmente. A continuación se muestran las entradas para
este ejercicio:
49
diosestinta.blogspot.com
Respaldo de la base de datos primaria
Para un backup de la base de datos basado en duplicado, o en restaurado manual debe hacerse lo siguiente:
$ rman target=/
Crear control file para la base de datos secundaria usando el siguiente comando:
Una vez creado el archivo de parámetros, se procede a configurar las siguientes entradas:
*.db_unique_name='DB11G_STBY'
*.fal_server='DB11G'
*.log_archive_dest_2='SERVICE=db11g ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G'
FAL_SERVER especifica el servidor FAL (Fetch Archive Log) para un base de datos en Standby. Este
valor es un nombre de servicio de Oracle Net.
50
diosestinta.blogspot.com
SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 52428800;
Listener.ora
Tnsnames.ora
51
diosestinta.blogspot.com
Crear los siguientes directorios que son necesarios:
$ mkdir -p /u01/app/oracle/oradata/DB11G
$ mkdir -p /u01/app/oracle/flash_recovery_area/DB11G
$ mkdir -p /u01/app/oracle/admin/DB11G/adump
Se copian los siguientes archivos de configuración de la base de datos primaria hacia la secundaria.
#Control File
#Archivo de parametros
#Archivo de contraseña.
Es recomendable desactivar el firewall o añadir una regla de permitir escuchar por el puerto 22, ya que SCP
usa ese puerto para el copiado seguro (Secure CoPy).
Iniciar listener
52
diosestinta.blogspot.com
$ lsnrctl start
$ export ORACLE_SID=DB11G
$ sqlplus / as sysdba
$ export ORACLE_SID=DB11G
$ rman target=/
53
diosestinta.blogspot.com
SQL>ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo02.log')
SIZE 52428800;
Después de crear los online redo logs, se deben crear los standby redo logs
Si se prefiere, se puede establecer un retardo entre la llegada de los redo log archivados y el aplicado en el
servidor de reserva con los siguientes comandos.
En el servidor principal, consultar las últimas novedades de redo log archivados y forzar un cambio de
registro.
54
diosestinta.blogspot.com
SQL>ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
Compruebe el nuevo redo log archivados ha llegado al servidor en espera y se han aplicado.
Modo de protección
Cada vez que configuramos un Data Guard (StandBy mas envío de archives automáticos) siempre vamos a
quedar enmarcados en unos de estos tipos de disponibilidad de la StandBy :
Con los 3 modos siempre estamos protegiendo los datos, pero la gran diferencia está en cómo actúa la base
de datos primaria cuando la StandBy tiene problemas.
Este modo garantiza que no hay perdida de datos si la base de datos primaria falla
Con este nivel de protección cada redo data -vector de redo generado en la primaria- debe ser aplicado por
lo menos en una StandBy , en los on line redo logs y además en los redo de stanby de esa Standby sólo allí
se produce el commit.
Si por ABC motivo el redo data no es escrito en una StandBy , la base de datos primaria se viene abajo
(shutdown), si existen 2 StandBy en máxima protección , basta que los redo data sean escritos en 1 de ellas,
para que la base de datos productiva siga arriba.
Este modo de protección no afecta la base de datos y proporciona un alto nivel de protección de los datos,
tal cual en el modo de máxima protección, las transacciones no se comitean hasta que el redo data sea
aplicado en los redologs de la base de datos standby , por lo menos en una de ellas (si existe más de una)
Si no se puede escribir el redo data, en por lo menos una StandBy , la base de datos primaria no se cae.
55
diosestinta.blogspot.com
MAXIMA PERFORMANCE (MAXIMUM PERFORMANCE)
Este modo de protección ofrece la mayor seguridad en la base de datos sin perder nada en la performance
de la base de datos primaria, acá las transacciones de la base de datos primaria se les generá commit sólo
cuando la transacción llega a los redo locales.
Este modo se debiese usar cuando la red hacía la StandBy no es lo suficientemente óptima y se producen
delays al momento de traspasar paquetes a través de TCP.
De forma predeterminada, con la creación de una base de datos en espera, la base de datos primaria está en
modo de rendimiento máximo.
PROTECTION_MODE
--------------------
MAXIMUM PERFORMANCE
SQL>
El modo se puede cambiar el uso de los siguientes comandos. Tenga en cuenta las alteraciones en los
atributos de transporte redo.
Disponibilidad máxima.
Máximo rendimiento.
Máxima protección.
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
56
diosestinta.blogspot.com
Base de datos de conmutación (SWITHOVER) (primaria y secundaria)
Una base de datos puede estar en uno de dos modos mutuamente excluyentes (primaria o en espera). Estas
funciones se pueden modificar en tiempo de ejecución sin pérdida de datos o restablecimiento de registros
redo. Este proceso se conoce como conmutación (switchover) y puede llevarse a cabo mediante las
siguientes declaraciones
SQL>CONNECT / AS SYSDBA
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP NOMOUNT;
SQL>CONNECT / AS SYSDBA
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;
Failover
Si la base de datos principal no está disponible la base de datos standby se puede activar como base de datos
primaria con las siguientes sentencias.
Dado que la base de datos standby es ahora la base de datos principal debe estar respaldada
inmediatamente.
57
diosestinta.blogspot.com
La base de datos primaria original, ahora se puede configurar como un modo de espera. Si Flashback base
de datos se habilita en la base de datos primaria, a continuación, esto se puede hacer con relativa facilidad
(que se muestra aquí). De lo contrario, todo el proceso de instalación se deben seguir, pero esta vez
utilizando el servidor principal original como el modo de espera.
Una vez que se ha configurado una base de datos standby, se puede abrir en modo de sólo lectura para
permitir el acceso de consulta. Esto se utiliza a menudo para descargar información del servidor standby
para conseguir más recursos en el servidor principal. Cuando se abre en modo de sólo lectura, el envío de
archive log continúa, pero la recuperación gestionada se detiene, por lo que la base de datos standby se
convierte cada vez más obsoleta hasta que se reanude la recuperación gestionada (managed recovery).
Para cambiar la base de datos a solo lectura haga lo siguiente:
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
En 11g, Oracle introdujo la característica Active Data Guard. Esto permite que la base de datos en espera
de ser abierto en modo de sólo lectura, pero aún se aplica la información de los redo. Esto significa que una
base de datos stanby puede estar disponible para la consulta, y aun así estar al día o actualizada. Hay
implicaciones de licencia para esta función, pero los siguientes comandos muestran cómo Active Data
Guard se puede activar:
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
58
diosestinta.blogspot.com
Referencias:
Oracle 2010, Oracle® Database SQL Language Reference 11g, obtenida el 1 de mayo de 2013, de
http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6016.htm
Oracle 2009, Documento técnico de Oracle: Oracle Data Guard 11g versión 2, obtenida el 1 de
mayo de 2013, de http://www.oracle.com/technetwork/es/database/enterprise-
edition/documentation/tutorial-oracle-data-guard-11gr2-1707492-esa.pdf
Oracle 2012, Oracle® Data Guard Concepts and Administration 11g Release 2 (11.2), obtenida el 4
de mayo de 2013, de http://docs.oracle.com/cd/E11882_01/server.112/e17022/create_ps.htm
59
diosestinta.blogspot.com
60
diosestinta.blogspot.com
SQL SERVER CLUSTER
Ana Rosa Rosales Mancia
Silvia Yessenia Argueta Campos
OBJETIVOS
INTRODUCCION
SQL Server Cluster ofrece alta disponibilidad, escalabilidad y alto rendimiento. Esta compuesto por nodos
activo pasivo lo más recomendable es configurar máximo tres nodos. La construcción de los ordenadores
del clúster es más fácil y económica debido a su flexibilidad: pueden tener toda la misma configuración de
hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas
operativos similares (clúster semihomogéneo), o tener diferente hardware y sistema operativo (clúster
heterogéneo), lo que hace más fácil y económica su construcción.
SQL Server es un conjunto de objetos eficientemente almacenados. Los objetos donde se almacena la
información se denominan tablas, y éstas a su vez están compuestas de filas y columnas. En el centro de
SQL Server está el motor de SQL Server, el cual procesa los comandos de la base de datos. Los procesos se
ejecutan dentro del sistema operativo y entienden únicamente de conexiones y de sentencias SQL. SQL
Server incluye herramientas para la administración de los recursos que el ordenador nos proporciona y los
gestiona para un mejor rendimiento de la base de datos. Una buena instalación y configuración de SQL
Server, y sobre todo una buena administración de las herramientas que éste nos proporciona, logrará: · Qué
las consultas que se realicen mediante sentencias SQL obtengan un tiempo de Respuesta óptima.· Qué la
memoria y la CPU de la máquina estén aprovechadas al máximo.
CLÚSTER
61
diosestinta.blogspot.com
encima de la que es provista por un solo computador típicamente siendo más económico que computadores
individuales de rapidez y disponibilidad comparables. La construcción de los ordenadores del clúster es más
fácil y económica debido a su flexibilidad: pueden tener toda la misma configuración de hardware y sistema
operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares
(clúster semihomogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo), lo que hace
más fácil y económica su construcción. Para que un clúster funcione como tal, no basta solo con conectar
entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue
de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.
Alto rendimiento:
Son clústeres en los cuales se ejecutan tareas que requieren de gran capacidad computacional, grandes
cantidades de memoria, o ambos a la vez. El llevar a cabo estas tareas puede comprometer los recursos del
clúster por largos periodos de tiempo.
Alta disponibilidad:
Son clústeres cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Estos clústeres tratan
de brindar la máxima disponibilidad de los servicios que ofrecen. La confiabilidad se provee mediante
software que detecta fallos y permite recuperarse frente a los mismos, mientras que en hardware se evita
tener un único punto de fallos
.Alta eficiencia:
Son clústeres cuyo objetivo de diseño es el ejecutar la mayor cantidad de tareas en el menor tiempo posible.
Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del clúster no es
considerado un gran problema.
62
diosestinta.blogspot.com
Para configurar el servidor DNS click-> Administrador de servidor ->Agregar roles
63
diosestinta.blogspot.com
Hacer click en el boton instalar
64
diosestinta.blogspot.com
Click en el botón cerrar
65
diosestinta.blogspot.com
Aquí ya se tiene la característica de servidor de dominio luego se crea el nuevo bosque al cual se van a unir
los nodos de la red del cluster. Para esto ejecutamos la aplicación dcpromo.exe
66
diosestinta.blogspot.com
Escribir el nombre del bosque a crear click-> siguiente
Seleccionar la versión del Windows server en este caso Windows server 2008 r2 click ->siguiente
67
diosestinta.blogspot.com
Escribir la contraseña de administrador del dominio
Para finalizar muestra resumen del dominio a crear luego de hacer estas configuraciones hay que reiniciar la
computadora.
68
diosestinta.blogspot.com
En estos momentos ya se tiene el dominio ahora hay que crear un usuario con privilegios de administrador
de dominio para esto click -> inicio ->Herramientas del sistema->Usuarios y equipos de Active Directory -
>Users
Click derecho y seleccionar nuevo usuario luego ingresar el nombre de usuario como se muestra en la figura
y dar siguiente
69
diosestinta.blogspot.com
Colocar la contraseña para el nuevo usuario dar siguiente y listo ya se tiene el nuevo usuario.
Todas las computadoras que se utilicen como nodos del cluster tienen que pertenecer al dominio creado y
agregar este usuario en el grupo de administradores.
70
diosestinta.blogspot.com
2 -CONFIGURACION DEL SERVIDOR DE ALMACENAMIENTO ISCSI
El servidor de dns y almacenamiento están alojados en la misma computadora, para poder configurar el
servidor de almacenamiento iscsi hay que instalar el siguiente software iscsi Target 3.3 como se muestra a
continuación:
Click -> siguiente a todas las opciones dejar los valores por defecto.
71
diosestinta.blogspot.com
Luego de instalar esta aplicación el siguiente paso es crear un destino iscsi para esto Click-> herramientas
del sistema ->iscsiTarget aparecerá una ventana como la siguiente damos click derecho sobre Destinos iscsi
y seleccionamos crear destino iscsi
72
diosestinta.blogspot.com
Escribir el nombre del bosque a crear click-> siguiente
Seleccionar la versión del Windows server en este caso Windows server 2008 r2 click ->siguiente
73
diosestinta.blogspot.com
Escribir la contraseña de administrador del dominio
Para finalizar muestra resumen del dominio a crear luego de hacer estas configuraciones hay que reiniciar la
computadora.
74
diosestinta.blogspot.com
En estos momentos ya se tiene el dominio ahora hay que crear un usuario con privilegios de administrador
de dominio para esto click -> inicio ->Herramientas del sistema->Usuarios y equipos de Active Directory -
>Users
Click derecho y seleccionar nuevo usuario luego ingresar el nombre de usuario como se muestra en la figura
y dar siguiente
75
diosestinta.blogspot.com
Colocar la contraseña para el nuevo usuario dar siguiente y listo ya se tiene el nuevo usuario.
Todas las computadoras que se utilicen como nodos del cluster tienen que pertenecer al dominio creado y
agregar este usuario en el grupo de administradores.
76
diosestinta.blogspot.com
2 -CONFIGURACION DEL SERVIDOR DE ALMACENAMIENTO ISCSI
El servidor de dns y almacenamiento están alojados en la misma computadora, para poder configurar el
servidor de almacenamiento iscsi hay que instalar el siguiente software iscsi Target 3.3 como se muestra a
continuación:
Click -> siguiente a todas las opciones dejar los valores por defecto.
77
diosestinta.blogspot.com
Luego de instalar esta aplicación el siguiente paso es crear un destino iscsi para esto Click-> herramientas
del sistema ->iscsiTarget aparecerá una ventana como la siguiente damos click derecho sobre Destinos iscsi
y seleccionamos crear destino iscsi
78
diosestinta.blogspot.com
El cual abre un asistente como la figura siguiente click ->siguiente
Luego de esto nos pide agregar los destinos el cual son las ip de los nodos que van a poder acceder a los
discos
virtuales click->avanzados
Nos aparecerá la siguiente ventana aquí agregamos las ip de los nodos y damos aceptar.
79
diosestinta.blogspot.com
Y se finaliza el asistente.
Ahora ya tenemos el destino iscsi que tendrá los discos virtuales que utilizara el cluster para ello hay que
realizar l
os siguientes pasos:Hacer click derecho sobre el iniciador iscsi creado->seleccionar crear disco virtual, esta
acción:
80
diosestinta.blogspot.com
Seleccionamos siguiente y colocamos el nombre del disco virtual con extencion y seleccionamos siguiente.
81
diosestinta.blogspot.com
Se finalza el asistente estos mismos pasos hay que realizar todos los discos virtuales a utilizar en este caso
creamos tres.
82
diosestinta.blogspot.com
Ahora que ya se tiene el almacenamiento procedemos a realizar la conexión de los nodos con el servidor de
almacenamiento.
Para esto nos vamos a la computador que va servir de nodo1 y damos click ->Inicio ->Iniciador iscsi y
aparecerá una ventana como esta:
Luego click-> En la pestaña volúmenes y dispositivos ->Autoconfigurar aparecerán todos los discos
virtuales creados como se muestra a continuación.
83
diosestinta.blogspot.com
Luego le damos aceptar y listo ya se tiene la conexión con el servidor estos mismos pasos hay que realizar
en el otro nodo.
Ahora hay que poner en línea estos discos esto se realiza siempre en el nodo 1.
Aquí se muestran los discos virtuales hay que dar click derecho sobre cada uno de ellos y ponerlos en línea,
luego dar formato y listo.
84
diosestinta.blogspot.com
Ya se tiene el almacenamiento para el cluster.
Para poder realizar una configuración de cluster de conmutación por error es necesario instalar esa
característica en todos los nodos. Para ello hay que seguir los siguientes pasos:
85
diosestinta.blogspot.com
Y click en instalar
Ya que tenemos instalada la característica damos click -> Inicio ->Administrador de cluster de conmutación
por error damos click -> crear cluster.
86
diosestinta.blogspot.com
Nos pedirá ingresar los nombres de los nodos
87
diosestinta.blogspot.com
Realiza la confirmación de los datos click ->siguiente
88
diosestinta.blogspot.com
Realiza todos las validaciones si da algún error no se puede continuar, esto tarda varios minutos en
completarse.
diosestinta.blogspot.com
Finalizamos la creación del cluster
90
diosestinta.blogspot.com
Ahora bien ya tenemos el cluster creado falta crear un servicio para este cluster para esto damos click
derecho al cluster creado-> Servicios y aplicaciones ->Coordinador de transacciones distribuidas DTC -
>siguiente
Agregamos el nombre en este caso se deja el que da por defecto, agregamos la dirección ip, damos siguiente
y finalizamos.
91
diosestinta.blogspot.com
Ya tenemos toda la configuración del cluster de conmutación por error a nivel del sistema operativo solo
falta configurar el SQL server.
Ejecute setup.exe desde el disco de instalación de SQL Server para iniciar el Centro de instalación. Haga
click ->Instalacion->Nuevo sql server de conmutación por error
92
diosestinta.blogspot.com
En el cuadro de diálogo Configuración de las Reglas de Apoyo, validar que los controles devolver resultados
exitosos y haga click en Siguiente.
En el cuadro de diálogo Condiciones de Licencia, haga click en Acepto los términos de la licencia casilla de
verificación y haga clic en Siguiente.
93
diosestinta.blogspot.com
En el cuadro de diálogo Configuración de Apoyo a las Reglas, haga clic en Instalar. Validar que los controles
devolver resultados exitosos. Si los cheques devueltos algunas advertencias, asegúrese de corregirlos antes
de proceder con la instalación. Haga clic en Siguiente para continuar.
94
diosestinta.blogspot.com
En el cuadro de diálogo Selección de características, seleccione sólo los componentes que desea instalar.
Haga clic en Siguiente.
En el cuadro de diálogo Configuración de instancia, escriba el nombre de red de SQL Server. Este es el
nombre que estará disponible en la red para los clientes. Esto variará dependiendo de su selección si se trata
de una instancia predeterminada o con nombre. En este ejemplo, la instancia por defecto se selecciona
95
diosestinta.blogspot.com
Un par de cosas Hay que destacar en esta sección. De forma predeterminada, el nombre de instancia se
utiliza como identificador de la instancia. Esto se utiliza para identificar los directorios de instalación y las
claves del registro para la instancia de SQL Server y es útil cuando se desea ejecutar varias instancias en un
clúster. Este es el caso para las instancias predeterminadas y las instancias con nombre. Para una instancia
predeterminada, el nombre y el identificador serían MSSQLSERVER. Para utilizar un identificador de
instancia no predeterminado, se debe seleccionar la casilla de identificador de instancia y especifique un
valor.
96
diosestinta.blogspot.com
En el cuadro de diálogo Requisitos de espacio en disco haga clic en Siguiente.
En el cuadro de diálogo Grupo de recursos de clúster, consulte los recursos disponibles en Windows Server
2008 de clúster. Esto le dirá que un grupo de recursos se creará en el clúster de SQL Server. Para especificar
el clúster de SQL Server recurso de nombre de grupo, puede utilizar el cuadro desplegable para especificar
un grupo existente o escriba el nombre de un nuevo grupo para crearlo. Haga clic en Siguiente.
97
diosestinta.blogspot.com
En el cuadro de diálogo de selección de disco de clúster, seleccione los grupos de discos que están
disponibles en el clúster de SQL Server 2008 para su uso. Haga click en Siguiente.
98
diosestinta.blogspot.com
En el cuadro de diálogo Configuración de red de clúster, escriba la dirección IP y la máscara de subred que
el clúster de SQL Server 2008 va a utilizar. Desmarque la casilla bajo la columna de DHCP que va a utilizar
direcciones IP estáticas. Si no ha deshabilitado los adaptadores y protocolos IPv6, que sería mejor para
desactivar la fila para IPv6
En el cuadro de diálogo Directiva de seguridad del clúster, acepte el valor por defecto de uso de los
servicios SID (recomendado).
99
diosestinta.blogspot.com
En el cuadro de diálogo Configuración del servidor, escriba las credenciales que se utilizarán para sus
cuentas de servicio de SQL Server en la ficha Cuentas de servicio. En la ficha Clasificación, seleccione la
intercalación apropiada para ser utilizada por SQL Server. Tenga en cuenta que el tipo de inicio está
establecido en manual para todos los clústeres de servicios y no se puede cambiar durante el proceso de
instalación. Haga clic en Siguiente.
100
diosestinta.blogspot.com
En la ficha de datos de directorios, escriba la ruta donde se va a su sistema y archivos de usuario de base de
datos creada. Esto será por defecto y damos click siguiente.
101
diosestinta.blogspot.com
En el cuadro de diálogo Reglas de instalación del clúster, compruebe que todas las comprobaciones son
correctas y haga clic en Siguiente.
102
diosestinta.blogspot.com
En la página Preparado para instalar el cuadro de diálogo, compruebe que todas las configuraciones son
correctas. Haga clic en Siguiente.
103
diosestinta.blogspot.com
En el cuadro de diálogo completo, haga clic en Cerrar. Con esto concluye la instalación de un clúster de
conmutación por error de SQL Server 2008
En la realización de una correcta instalación y configuración del nodo, ahora tiene una instancia de
conmutación por error del clúster completamente funcional.
Ahora falta agregar un nuevo nodo los pasos son muy parecidos ya que so le especificamos el cluster de
conmutación por error al queremos pertenecer y la instancia.
104
diosestinta.blogspot.com
Para poder desarrollar un cluster de conmutación por error se pueden seguir estos pasos eso si hay que
tener cuidado en la infraestructura de red a utilizar y compatibilidad de los programas.
BIBLIOGRAFIA:
105
diosestinta.blogspot.com
Clúster en MySQL
Luis Josué Chávez Vigil, Josué Daniel Orellana Aguirre, Erick Stanley Cruz Martínez
Objetivos:
Conocer el funcionamiento del clúster en MySQL, así como de la manera de configurarlo en una
red local, además de distinguir los elementos que lo conforman.
Identificar las características, requerimientos hardware/software, ventajas y desventajas de un
clúster MySQL.
Definir lo que es un clúster, así como los diferentes tipos de nodos que el clúster MySQL maneja, y
además, aprender la manera correcta de configuración.
Introducción:
MySQL Cluster es la versión de MySQL pensada para alta disponibilidad, escalabilidad y alto rendimiento.
Un MySQL server que es parte de un MySQL Clúster difiere sólo en un aspecto de un servidor MySQL
normal (no clúster), en que emplea el motor NDB Clúster.
Este motor también se conoce simplemente como NDB, y las dos formas del nombre son sinónimas.
Desde que MySQL server es parte del clúster, necesita datos de configuración que sepa cómo acceder al
nodo MGM para obtener datos de configuración del clúster.
El comportamiento por defecto es buscar el nodo MGM en localhost. Sin embargo, puede necesitar
especificar su localización donde se encuentre, esto puede hacerse en my.cnf o en la línea de comandos del
servidor MySQL.
Antes de poderse usar el NDB, al menos un nodo MGM debe ser operacional, así como los nodos de datos
deseados.
Conceptos Básicos:
Clúster: Grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el
conjunto es visto como un único ordenador, más potente que los comunes de escritorio.
106
diosestinta.blogspot.com
De un clúster se espera lo siguiente:
Alto rendimiento
Alta disponibilidad
Equilibrio de carga
Escalabilidad
Una de las ventajas de MySQL Clúster es que puede ejecutarse en hardware normal sin ningún
requerimiento especial, aparte de grandes cantidades de RAM, debido al hecho que todos los datos se
almacenan en memoria.
Características:
Para comunicación entre nodos, el clúster soporta red TCP/IP en cualquier topología estándar, y como
mínimo se espera una red 100 Mbps Ethernet, más un switch, hub, o router para proporcionar conectividad
de red al clúster entero. Recomendamos que MySQL Clúster se ejecute en su subred que no está compartida
con máquinas no-clúster por las siguientes razones:
Seguridad: La comunicación entre nodos del clúster no está cifrada. La única forma de proteger
transmisiones dentro de un MySQL Clúster es ejecutar su clúster en una red protegida.
Eficiencia: Inicializar un MySQL Clúster en una red privada o protegida permite que el clúster
haga uso exclusivo del ancho de banda entre máquinas del clúster.
ndbd_mgm.
Es el nodo de Management. Tiene la configuración del clúster. No es necesario más de uno, pero consume
tan poco que se pueden tener dos. Nosotros lo usamos para lanzar backups, reiniciar nodos, activar el log…
además, los nodos ndbd lo usan al entrar en el clúster para recoger la configuración
ndbd:
Son los nodos de almacenamiento. Estos deben tener la capacidad de procesamiento y la memoria RAM
suficiente para trabajar con los datos. Al menos debemos tener dos nodos ndbd. Si queremos usar múltiples
cores, el demonio será ndbmtd mysqld. Al clúster se puede acceder usando la API o mediante un servicio.
mysqld:
Desventajas:
107
diosestinta.blogspot.com
Requiere gran cantidad de memoria RAM.
Índices en RAM siempre.
Datos en RAM o en disco duro.
El engine es ndbclúster, no se puede usar InnoDB o MyISAM en clúster.
No es una base de datos de propósito general.
Subqueries lentas
Joins lentas
No soporta integridad referencial y claves externas
No hay rollbacks parciales ni savepoints, solo rollbacks completos
No se garantiza el commit
Recomendaciones:
La web de MySQL recomienda 5 servidores:
2 ndbd
2 mysqld
1 ndb_mgmd
Podemos mejorar esta arquitectura y hacerla más barata montando un ndb_mgmd en cada mysqld
2 ndbd
2 mysqld + ndb_mgmd
108
diosestinta.blogspot.com
Topología:
Hardware:
Archivos de Configuración:
ndb_mgm
config.ini
Acá estan las configuraciones para el manejo de nodos. Dentro se encuentra los datadir y los database.
109
diosestinta.blogspot.com
ndbd
mysqld
Procedimiento:
Nos pedirá que ingresemos nuestra cuenta de Oracle. Si no posee una deberá crearla. Una vez descargado,
descomprimimos el archivo y genera una carpeta con los siguientes directorios:
110
diosestinta.blogspot.com
Arrancar Cluster
c:\mysql\bin\ndb_mgm -e show
Arrancar todo
Arrancando mysql
Apagando servicios
C:\Users\Chavez Vigil\my_cluster\ndb_data
Pasos a seguir:
Cree las siguientes carpetas en el directorio raíz del sistema. Para ello abrimos cmd y presionamos
Ctrl+Shift+Enter para abrirlo en modo administrador:
111
diosestinta.blogspot.com
Creamos una nueva carpeta llamada mysql:
112
diosestinta.blogspot.com
Abrimos una nueva consola en modo de administrador y copiamos el contenido de esta carpeta mysql en
mycluster:
Ahora bien, dentro de mycluster creamos un archivo config.ini Entramos en la carpeta conf. Lo que
continua será editar el archivo config.ini para los nodos de datos:
[ndb_mgmd]
HostName=192.168.4.1
DataDir=c:\my_cluster\ndb_data
Nodeid=1
Esto significa que el nodo de administrador tendra esa ip y que los log's que generen se estaran
almacenando el esa direccion de archivo.
113
diosestinta.blogspot.com
[Ndbd default]
NoOfReplicas=2
Esto significa que seran 2 nodos de datos por defecto; si queremos agregar mas solo incrementamos ese
numero.
[Ndbd]
HostName=192.168.4.2
DataDir=c:\my_cluster\ndb_data
Nodeid=3
Esto significa que es el primer nodo de datos y esta alojado en esa ip y los logs iran a parar a esa direccion.
Nodeid=4
HostName=192.168.4.3
DataDir=c:\my_cluster\ndb_data
Esto significa que es el segundo nodo de datos y esta alojado en esa ip y los logs iran a parar a esa direccion.
[Mysqld]
[Mysqld]
Y estas 2 lineas significan que por cada nodo de datos tendremos 1 nodo mysql
Ahora crearemos las variables de entorno del sistema. Desde el menú inico escribimos variables de entorno
y escogemos la que dice SISTEMA:
114
diosestinta.blogspot.com
En la ventana que aparece damos clic en el icono Variables de Entorno. Ahí buscamos la variable path que
es la que vamos a editar. Al final de la variable escribimos:
C:\mysql\bin:C;\my_cluster\ndb_data
Esto es para que ejecute los binarios necesarios para el funcionamiento del cluster. Reiniciamos la
computadora.
Abrimos una nueva consola y ejecutamos netstat –h para verificar si esta corriendo el cluster:
115
diosestinta.blogspot.com
En este momento ya está escuchando peticiones de los nodos de datos. En la misma terminal ejecutamos:
Por el momento NO tenemos nodos de datos conectados. Avanzando un poco, esto deberíamos ver
cuando los nodos de datos estén conectados. Note que están conectados con las ip que le definimos en el
archivo de configuración:
116
diosestinta.blogspot.com
Ahora pasamos a la configuración de los nodos de datos. Esto se hará en cada máquina que será nodo de
datos y mysql. Creamos la misma estructura de directorios que se hizo en el nodo de administrador.
Descomprimimos el archivo del cluster y hacemos lo siguiente:
Volvemos a copiar el contenido del archivo descomprimido, tal como en el administador. Una vez hecho
esto, entramos en la carpeta conf. Editamos (creamos mas bien dicho) un archivo llamado my.cnf que se
encuentra en el directorio conf. Cada uno de los nodos de datos lo poseerá:
117
diosestinta.blogspot.com
En síntesis, lo que este archivo significa es que el nodo mysql ocupará el motor ndbcluster para conectarse
al nodo de administrador a través del puerto 4002, la cadena de conexión muestra la ip del administrador y
el mysql_cluster se encontrará también en la misma máquina administrador.
Posteriormente abrimos la cmd de Windows y OJO, una vez arrancados los servicios, estas ventanas NO
deben cerrarse, de lo contrario se interrumpirá la comunicación.
Nos conectamos a una instancia mysql (hacemos constar que NO esta mysql instalado en ninguna PC):
118
diosestinta.blogspot.com
A manera de ejemplo, veamos los motores. Veremos que ndbcluster está corriendo usando el comando
show engines; (Este es el motor del cluster) y para ver las bases de datos usamos show databases;
En uno de los nodos de datos se ha creado una base de datos llamada prueba. Si ejecutamos nuevamente
show databases; debemos verla reflejada:
119
diosestinta.blogspot.com
Ahora bien, vamos a crear una tabla en este nodo de datos. Para ello escribimos use prueba; que representa
que ocuparemos la base de datos prueba. Luego creamos la tabla en ella llamada alumno, y al final de la
consulta de create table alumno escribimos engine=ndb;para que esta sentencia se ejecute en todos los
nodos conectados:
120
diosestinta.blogspot.com
Bibliografía
121
diosestinta.blogspot.com
Sincronización de Bases de Datos en Nube
González Martínez Mauricio Antonio, Ramírez Reyes Heysel Yanira, Zometa Sanchez Henry Mauricio
Objetivos
Conceptos
¿Qué es la sincronización de Bases de Datos en Nube?
Ventajas:
Desventajas:
122
diosestinta.blogspot.com
Escalabilidad a largo plazo. A medida que más usuarios empiecen a compartir la infraestructura de
la nube, la sobrecarga en los servidores aumentará, si no se posee un esquema de crecimiento
óptimo puede llevar a degradaciones en el servicio.
Windows Azure (anteriormente Azure Services Platform) es una plataforma ofrecida como servicio y alojada
en los Data Centers de Microsoft.
Una ventaja añadida es que los desarrolladores y el personal de IT no necesita instalar, actualizar y gestionar
la infraestructura de bases de datos. La alta disponibilidad, aspecto siempre complejo, es gestionado de
manera transparente.
La gran ventaja de utilizar SQL Azure frente a otros sistemas de almacenamiento en la nube es que todos
los conocimientos sobre bases de datos relacionales y el lenguaje de consulta SQL siguen siendo válidos. No
es necesario adaptar los conocimientos a nuevos paradigmas de almacenamiento, como pasa con otros
sistemas de almacenamiento en la nube no basados en bases de datos relacionales ni SQL. “Si sabes utilizar
SQL Server, todos tus conocimientos te valen para SQL Azure”.
Es cierto que hay ciertas características de SQL Server que SQL Azure no soporta, pero si soporta todas las
más usadas:
Transacciones distribuidas
El broker de mensajes de SQL Server
Consultas a servidores remotos
Acceso desde tecnologías antiguas, ya obsoletas, en concreto OleDb, etc.
123
diosestinta.blogspot.com
Sincronización con Windows Azure
Con la aparición de SQL Azure, se abre todo un mundo de posibilidades para el uso de bases de datos en la
nube; no solo para albergar aplicaciones sin necesidad de infraestructura y en régimen de pago por uso, sino
también para mantener versiones de bases de datos SQL Server sincronizadas en la nube, a modo de
herramienta de continuidad de negocio, que permita mantener los datos sincronizados y en una ubicación
física diferente a la empresarial. Asimismo, aquellas aplicaciones que cuenten con usuarios móviles, o que
necesiten proporcionar parte de la información a proveedores o clientes a través de Internet, son buenas
candidatas para sincronizar con los servidores de SQL Server on-premise.
Microsoft Data Sync es el marco de trabajo que nos proporciona la infraestructura necesaria para realizar
este tipo de sincronizaciones, permitiéndonos centrarnos solo en la parte más relacionada con el negocio y
abstrayendo la parte más "de detalle" del proceso.
Los requisitos previos para el uso de SQL Azure Data Sync son:
• Tener una cuenta de Windows Live ID. Si no se tiene, una cuenta de Windows Live
• Tener una cuenta de Windows Azure activa. Si no tiene una cuenta de Windows Azure ir a la página de
inicio de Windows Azure y regístrate o aplicar a la evaluación gratuita de 90 días.
• Tener una suscripción activa de base de datos de Windows Azure SQL Database.
Las bases de datos On-premises deben ser SQL Server 2005 Service Pack 3 o posterior.
Desarrollo
El escenario planteado consiste la replicación de una base de datos local de SQL Server, con otra
almacenada en la nube, para fines demostrativos solamente replicamos una tabla muy sencilla, cuya
124
diosestinta.blogspot.com
estructura deberá ser la misma en la base de datos Azure. Esto puede ser escalado y dependerá de que tablas
o campos queramos mantener sincronizados.
Para lograr la sincronización de Bases de Datos de SQL Server con la de SQL Azure se debe instalar el
Agent Client., el cual es el encargado de gestionar todo lo relacionado a la sincronización de la base de datos
local.
Una vez instalado el software requerido procedemos a la Instalación de Microsoft SQL Data Sync Agent
Preview como se muestra en las siguientes imágenes:
125
diosestinta.blogspot.com
Introducir un nombre de usuario y una contraseña
Elegir el directorio donde se va a instalar. A continuación solo dar click en siguiente hasta finalizar.
126
diosestinta.blogspot.com
Procedimiento para la Sincronización en Windows Azure con Data Sync
En este documento se hará referencia a una Base de Datos llamada “uesocc”, con una tabla llamada
“dbo_alumnos” la cual ya contiene algunos datos agregados.
127
diosestinta.blogspot.com
Dirigirse al sitio web de Windows Azure cuya dirección es www.windowsazure.com/es-es/ dentro del sitio
de Azure dar clic en la opción de Portal
128
diosestinta.blogspot.com
En el panel izquierdo damos clic en Bases de Datos SQL para crear una nueva base de datos
129
diosestinta.blogspot.com
Ahora creamos un Servidor dando clic en la opción SERVIDORES
Ingresamos el nombre del servidor, la contraseña de acceso al mismo y la región que este mas cerca a
nuestra zona. La contraseña debe contener letras mayúsculas, minúsculas y números. Después de llenar los
campos damos clic en el cheque o Aplicar.
130
diosestinta.blogspot.com
Una vez creado el servidor aparece en el panel inicial, ahora vamos a crear la base de datos dando clic en
BASE DE DATOS
131
diosestinta.blogspot.com
Se coloca el nombre de la Base de Datos, se define que es una edición web, se asigna el tamaño de
capacidad de almacenamiento, se define el tipo de lenguaje que se utilizara y por último se le indica que
pertenecerá al servidor que recién acabamos de crear. Luego dar clic en Aplicar
132
diosestinta.blogspot.com
Espera un momento mientras se carga el portal de administración. Iniciar sesión con el nombre de la Base
de Datos, el nombre de Usuario y Contraseña del servidor, luego dar clic en Iniciar Sesión
133
diosestinta.blogspot.com
Hay dos formas de crear una tabla:
134
diosestinta.blogspot.com
SEGUNDA - Con el diseñador.
2.- Comenzar a llenar los campos con la estructura que tendrá la tabla con nombre de la tabla, nombre de
las columnas, tipo de datos y longitud.
135
diosestinta.blogspot.com
Lo que sigue es crear el Agente de Sincronización. Dirigirse a la parte inferior del panel y dar clic en la
opción Agente de Sincronización, luego elegir Nuevo Agente de Sincronización.
Agregar un nombre al Nuevo Agente de Sincronización y una Contraseña, luego dar clic en Aplicar
136
diosestinta.blogspot.com
Lo que sigue es crear una clave de identificación con la cual se podrá tener acceso a la Base de Datos que se
encuentra en Azure.
Dar clic en el botón Generar y luego en la opción Copiar. Posteriormente clic en Aplicar.
En el equipo local ejecutar Microsoft SQL Data Sync Agent Preview y dar clic en Submit Agent Key y
pegar la contraseña generada con el Agente de Sincronizacion
137
diosestinta.blogspot.com
Para comprobar la conexión se hace un ping de servicio haciendo clic en Ping Sync Service, si todo esta bien
aparecerá un mensaje indicando el resultado positivo de conexión.
A continuación se hace el registro del servidor y de la Base de Datos que vamos a sincronizar dando clic en
Register. Seleccionar la autenticación de Windows, ingresar el nombre del servidor y el nombre de la Base
de Datos, luego dar clic en Test Conection para verificar que todo este bien de ser asi aparecerá un mensaje
corroborándolo
138
diosestinta.blogspot.com
Lo siguiente es crear un grupo de Sincronizacion, dicho grupo contendrá las bases de datos que participaran
en la sincronización. En el panel principal de Windows Azure dar clic en Agente de Sincronización luego
elegir la opción Nuevo Grupo de Sincronización
139
diosestinta.blogspot.com
Agregar un nombre al nuevo Grupo de Sincronización y seleccionar la región, luego clic en la flecha
siguiente
Seleccionar la Base de Datos que se encuentra en el servidor local, los otros campos quedan vacios. Dar clic
en el botón Siguiente.
140
diosestinta.blogspot.com
Lo que sigue es crear las reglas de sincronización. Seleccionar el grupo creado y luego dar clic en REGLAS
DE SINCRONIZACION
En el panel que aparece dar clic en DEFINIR REGLAS DE SINCRONIZACION, aparecerá un asistente
para crear la regla. Seleccionar el nombre del Servidor, los campos y la tabla que se quiere sincronizar para
finalizar dar clic en Guardar.
141
diosestinta.blogspot.com
Una vez creada la regla, ir a la opción CONFIGURAR ahí se hará lo siguiente:
Con esto ya tenemos listo todo el escenario, ahora queda por parte del usuario hacer las pruebas respectivas
para comprobar la funcionalidad con esta herramienta. Para una ayuda audiovisual puede ver el video donde
se encuentran los mismos pasos con mayor detalle, pueden verlo en la siguiente dirección:
http://www.youtube.com/watch?v=r-hPtf_iLjU
142
diosestinta.blogspot.com
Referencias
http://www.estoyenlanube.com/microsoft-sync-framework-y-sql-azure/
http://msdn.microsoft.com/en-us/library/hh456371.aspx
http://msdn.microsoft.com/en-us/library/jj823137.aspx
www.windowsazure.com/en-us/manage/services/sql-databases/getting-started-w-sql-data-sync/
http://jonathanvanderoost.com/2013/02/01/how-to-use-windows-azure-sql-data-sync-newportal/
geeks.ms/blogs/johnbulla/archive/2012/10/12/sql-azure-data-sync-sincronizaci-243-n-de-datos-entre-
bases-de-datos-sql-server-on-premise-y-base-de-datos-de-windows-azure-sql-database.aspx
143
diosestinta.blogspot.com
diosestinta.blogspot.com
Replicación con SQL Server
Autores:
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:
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.
145
diosestinta.blogspot.com
Los elementos que participan en la replicación Sql Server son los siguientes:
Publicador
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.
Distribuidor
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.
Suscriptores
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.
Artículo
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.
Publicación
146
diosestinta.blogspot.com
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.
Suscripción
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.
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.
Agente de instantáneas
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.
147
diosestinta.blogspot.com
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).
Agente de distribución
Agente de mezcla
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.
148
diosestinta.blogspot.com
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.
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.
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.
149
diosestinta.blogspot.com
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:
150
diosestinta.blogspot.com
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.
151
diosestinta.blogspot.com
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”
152
diosestinta.blogspot.com
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
153
diosestinta.blogspot.com
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
154
diosestinta.blogspot.com
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
155
diosestinta.blogspot.com
Ahora lo que tenemos que hacer es seleccionamos los objetos que deseamos publicar en este caso
dejaremos seleccionada la tabla producto, ahora la razon para ello es que: los servidores esclavos no podran
modificar ni realizar transacciones a la tabla productos. solamente el administrador podra hacerlo. luego de
esto hacemos clic en Next.
156
diosestinta.blogspot.com
En la siguiente ventana daremos clic en next, y despues podremos ver la siguiente figura:
En esta configuraremos algunos atributos de las instantaneas que se enviaran en la replicacion, para ello
seleccionamos los checkbox que se muestran en la imagen y daremos clic en el boton change.
la siguiente ventana que saldra muestra algunos parametros de la frecuencia con la cual el agente de
instantaneas 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.
157
diosestinta.blogspot.com
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 parametros de seguridad
Despues de esto tendremos que proporcionar ciertas credenciales para acceder al publicador
158
diosestinta.blogspot.com
Estas se muestran en la imagen siguiente el usuario que usaremos sera: "sa" y le colocaremos una contraseña
159
diosestinta.blogspot.com
Colocamos un nombre para finalizar con el asistente de publicacionen este caso será el nombre:
Pubproductos
Damos clic en finish y si hemos realizado todo correctamente esperamos ver la siguiente ventana, veremos
que todo a concluido con éxito
160
diosestinta.blogspot.com
Cerramos la ventana de asistente de publicación nueva, y veremos en local publications que ahora tenemos
una publicación nueva creada.
161
diosestinta.blogspot.com
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.
162
diosestinta.blogspot.com
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 boton addfilter
163
diosestinta.blogspot.com
Escogeremos el filtro para la sucursal 1 luego seleccionamos la tabla stock, por lo tanto tendremos que
escribir la consulta siguiente:
164
diosestinta.blogspot.com
Hacemos clic en Ok y luego en add para añadir un nuevo filtro para otra tabla
165
diosestinta.blogspot.com
Ahora tendríamos creados los filtros:
en la siguiente ventana dejamos los checkbox asi como aparecen pero hacemos clic en el boton change y
luego hacemos los cambios mostrados en la siguiente ventana
166
diosestinta.blogspot.com
luego tendremos que aplicar la seguridad el usuario que colocaremos será "sa"
167
diosestinta.blogspot.com
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
168
diosestinta.blogspot.com
En este momento tendríamos creadas las 2 publicaciones que utilizaremos, ahora hacemos los mismos
pasos que acabamos de hacer para la sucursal 2.
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 puerto 1433 y 1434 respectivamente en el firewall de
windows
Hacemos clic en el botón Connect, luego en Database Engine luego en la opción Browse for more
Luego en la pestaña NetworkServer Expandimos el arbol DataBase Engine y veremos que tenemos el
servidor remoto damos clic en el que nos queremos conectar y luego clic en Ok
169
diosestinta.blogspot.com
Para la Authentication nos conectaremos con autenticación de SQL Server para ello usaremos el usuario
"sa"
170
diosestinta.blogspot.com
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.
171
diosestinta.blogspot.com
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
172
diosestinta.blogspot.com
Después de esto nos autenticaremos con cuenta de SQL Server y utilizaremos el usuario "publicador" y la
contraseña que definio el publicador luego daremos clic en connect
173
diosestinta.blogspot.com
En esta ventana definiremos que el distribuidor esta en el publicador
En la siguiente ventana configuraremos una nueva base de datos hacemos clic en New database
174
diosestinta.blogspot.com
Luego definiremos la base de datos con nombre Demo y dejaremos lo demás tal cual nos aparece
175
diosestinta.blogspot.com
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 autenticacion luego
daremos clic en Ok
176
diosestinta.blogspot.com
en las 4 ventanas siguientes daremos clic en next y luego en finalizar , veremos que todo se ha creado con
éxito
177
diosestinta.blogspot.com
Cerramos la ventana y luego hacemos clic derecho en Local Subscriptions y luego en Refresh, ahora
crearemos la subscripcion 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 quee 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 mas rápida
la sincronización, hacemos clic en next
178
diosestinta.blogspot.com
En la siguiente ventana seleccionaremos en el parametro 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
179
diosestinta.blogspot.com
En la siguiente ventana damos clic en siguiente y luego en finish, tendriamos que ver la siguiente imagen si
todo a sucedido satisfactoriamente
180
diosestinta.blogspot.com
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.
181
diosestinta.blogspot.com
diosestinta.blogspot.com
183
diosestinta.blogspot.com
PostgreSQL Cluster con DRBD y
Heartbeat
Objetivos:
Conceptos:
Cluster:
Simplemente, un cluster es un grupo de múltiples computadores unidos mediante una red de alta
velocidad, de tal forma que el conjunto es visto como un único computador, más potente que los
comunes de escritorio.
PostgreSQL
Es un SGBD relacional orientado a objetos y libre, publicado bajo la licencia BSD. Como muchos otros
proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa y/o
persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma
desinteresada, altruista, libre y apoyada por organizaciones comerciales.
184
diosestinta.blogspot.com
PostgreSQL es un potente sistema de base de datos objeto-relacional de código abierto. Cuenta con
más de 15 años de desarrollo activo y una arquitectura probada que se ha ganado una sólida reputación
de fiabilidad e integridad de datos.
DRBD
Heartbeat
Replicacion
http://www.drbd.org/users-guide/s-replication-protocols.html
185
diosestinta.blogspot.com
Desarrollo:
Se necesitan dos servidores o máquinas de similares características (tanto en las arquitecturas de dichos
servidores y en sus sistemas operativos). En ambas es necesario tener una partición sin montar y sin
formatear que esta será utilizada para el DRBD.
A demás se utilizara un Switch y una tercera maquina que será utilizada como cliente y hará uso de los
servidores. La topología utilizada para este tutorial es la siguiente:
Secundario Primario
diosestinta.blogspot.com
1 maquina cliente para la conexión a la base de datos
Interfaces usb Lan Ethernet
# mv /etc/drbd.con /etc/drbd_backup.conf
187
diosestinta.blogspot.com
4. La primera línea de código hace referencia a una encuesta en la cual drbd nos invita a
participar y la segunda línea (common) la velocidad de sincronización entre las dos
maquinas.
8. De igual manera también se declaran los nodos que participaran en el proceso DRBD
los cuales cederán el recurso cuando uno se encuentre bajo o fuera de línea. Junto a
estos nodos internamente se le declaran:
9. Recordar que este archivo de configuración debe de estar presente en ambas maquinas
tanto en la primaria como en la secundaria
188
diosestinta.blogspot.com
Y observaremos un error al tratar de inicializar el drbd, la causa de este error es que aun no hemos
creado la meta-data del recurso que va a compartir.
Mediante el comando drbdadm (este comando permite usar comando para manipular drbd0) create-md
pg (pg es el nombre del recurso declarado anteriormente en el archivo drbd.conf) nos permite crear la
meta-data del dispositivo lógico drbd0 y el recurso. Recordad que estos comandos deben de realizarse
en ambos nodos.
189
diosestinta.blogspot.com
13. El paso siguiente es inicializar de nuevo el drbd, el cual no debería de darnos ningún
tipo de error.
Podemos ver el estado de la sincronización por medio del comando cat /proc/drbd :
Como podemos ver ya se encuentran conectados pero aun no listos para realizar la replicación o
intercambiarse el recurso para ello necesitamos definir un nodo primario y darle formato a la partición
que se va a replicar.
14. Ahora es necesario establecer el nodo primario del cluster. Para este ejemplo elegimos
absdeb como servidor primario por lo que solo en ésta máquina ejecutamos el
siguiente comando, luego damos formato a la partición compartida y montamos la
partición:
# sudo mount -t ext4 /dev/drbd0 /data (carpeta definida en postgresql para nuestro
caso la carpeta data)
diosestinta.blogspot.com
Una vez finalizado la sincronización y completada de forma satisfactoria se mostrara algo como lo
siguiente:
Como se podrá ver el estado (cs:Connected) se encuentra estable o conectado, estadefinido el nodo
primario y secundario y se encuentran listos para la replicación o copiar datos(uptodate/uptodate).
# cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/
# cp /usr/share/doc/heartbeat/ha.cf.gz /etc/ha.d/
# cp /usr/share/doc/heartbeat/haresources.gz /etc/ha.d/
191
diosestinta.blogspot.com
# gzip -d ha.cf.gz
# gzip -d haresources.gz
Esta fue la configuración realizada para nuestro escenario se muestra un comentario a la par de cada
uno de los comandos, el initdead que es el único que no se alcanza a ver es el tiempo se que esperan
para cuando ambos nodos no se inician al mismo tiempo, es el tiempo que esperan para iniciar el
proceso.
4. Por último debemos modificar el archivo haresources. Ahí declaramos los servicios
que queremos monitorear y que deben estar siempre disponibles. En cuanto caiga una
máquina, la otra tomará el control levantando los servicios monitoreados y tomando la
IP Virtual. Dentro de haresources ingresamos:
Les voy a explicar que significa cada parte de este archivo. En primer lugar definimos cuál va a ser el
nodo principal en este caso asbdeb. IPaddr::10.0.0.1 es el script que asigna la IP virtual que tendrá el
192
diosestinta.blogspot.com
cluster y el cual será el punto de acceso,también la podríamos llamar un ip flotante que será la que el
Heartbeat asigne cuando una maquina caiga.
# cp postgresql-9.x.x.x/contrib/start-scripts/linux /etc/ha.d/resources.d/postgresql
# chmod +x /etc/ha.d/resources.d/postgresql
6. Luego copiamos los archivos de configuración a todos los nodos o realizamos las
mismas configuraciones
193
diosestinta.blogspot.com
Instalación y configuracion del PostgreSQL acceso remoto
3. Una vez ubicado esta aplicación buscamos la leyenda “no server runnig” dentro del
código y reemplazamos la palabra “runnig” por cualquier otra.
Esto tiene una explicación y es que Heartbeat verifica si un servicio está corriendo o no buscando la
cadena “running” u “ok” al pedir su status, entonces cuando heartbeat le pregunta a PostgreSQL si está
ejecutándose correctamente él responde “no server running” y heartbeat supone que todo está bien
aunque realmente no sea así.
# Mkdir /opt/postgresql/data
# sudo su postgres
# /usr/local/pqsql/bin/initdb –D /opt/postgresql/data
194
diosestinta.blogspot.com
7. A continuación modificamos un par de archivos para permitir el acceso remoto a la
base de datos; el primero de estos seria /opt/postgresql/data/postgresql.conf
Con la línea anterior indicamos a Postgres que permita al bloque de direcciones 10.2.0.0/24 que acceda
a cualquier base de datos con cualquier usuario en el servidor. Recordad que estos pasos se aplican solo
para la maquina primaria.
195
diosestinta.blogspot.com
Pruebas de del Escenario
# /etc/init.d/Heartbeat start
# /etc/ini.d/drbd start
# /etc/ha.d/resources.d/postgresql start
3. Luego para probar que se estén replicando correctamente los datos, en el nodo
secundario ejecutamos el comando “watch cat /proc/drbd” mientras que en el nodo
principal bajamos el servicio de hearbeat. Antes de bajar el servicio en el nodo
secundario deberíamos tener la siguiente salida en la maquina primaria:
# /etc/init.d/Heartbeat stop
5. Ahora bien una vez detenido el Heartbeat en la maquina primara, en nuestro servidor
secundario deberíamos de ver algo similar a la captura anterior pero con la diferencia
que ahora nuestro servidor secundario será primario:
196
diosestinta.blogspot.com
Referencias
http://www.drbd.org/
http://www.habitacion511.eu/index.php/alta-disponibilidad-en-linux/
Documentacion de PostgreSQL
http://www.postgresql.org/docs/9.1/static/install-procedure.html
http://www.ipcorp.com.ar/blog/2009/10/01/cluster-de-alta-disponibilidad-de-
servidores-postgresql-con-drbd/
http://wiki.postgresql.org/images/0/07/Ha_postgres.pdf
http://www.slideshare.net/jessejajti/hadrbdpostgres-postgreswest-08-presentation
197
diosestinta.blogspot.com
diosestinta.blogspot.com
Replicación con PostgreSQL
Objetivos:
Conceptos:
¿Qué es PostgreSQL?
PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD
y con su código fuente disponible libremente. Es uno de los sistemas de gestión de bases de datos de
código abierto más potentes del mercado y en sus últimas versiones no tiene nada que envidiarle a otras
bases de datos comerciales.
PostgreSQL utiliza un modelo cliente/servidor y usa multiprocesos en vez de multihilos para garantizar la
estabilidad del sistema. Un fallo en uno de los procesos no afectará el resto y el sistema continuará
funcionando.
¿Qué es Slony-I?
Es un software que nos permite hacer replicaciones maestro/esclavo asíncrono, realizando
actualizaciones en cascada.
199
diosestinta.blogspot.com
Slony-I es un maestro "a varios esclavos" sistema de replicación en cascada de apoyo (por ejemplo - un
nodo puede alimentar a otro nodo que se alimenta de otro nodo) y de conmutación por error.
El panorama para el desarrollo de Slony-I es que es un esclavo de replicación del sistema principal que
incluye todas las características y las capacidades necesarias para replicar bases de datos de gran tamaño
a un número razonablemente limitado de los sistemas esclavistas.
Slony-I es un sistema diseñado para su uso en centros de datos y sitios de respaldo, en el modo normal
de operación es que todos los nodos están disponibles.
Sobre pgpool-II.
Pgpool-II habla los protocolos de frontend y backend de PostgreSQL, y pasa las conexiones entre ellos.
De ese modo, una aplicación de base de datos (frontend) cree que pgpool-II es el verdadero servidor de
PostgreSQL, y el servidor (backend) ve a pgpool-II como uno de sus clientes. Debido a que pgpool-II
es transparente tanto para el servidor como para el cliente, una aplicación de base de datos existente
puede empezar a usarse con pgpool-II casi sin ningún cambio en su código fuente.
pgpool-II funciona sobre Linux, Solaris, FreeBSD y la mayoría de las arquitecturas UNIX. Windows no
está soportado. Las versiones de PostgreSQL soportadas son de la 6.4 para arriba. Para usar la
paralelización de consultas es necesaria la versión 7.4 o superior.
Pool de conexiones.pgpool-II mantiene abiertas las conexiones a los servidores PostgreSQL y las
reutiliza siempre que se solicita una nueva conexión con las mismas propiedades (nombre de usuario,
base de datos y versión del protocolo). Ello reduce la sobrecarga en las conexiones y mejora la
productividad global del sistema.
Balanceo de carga. Si se replica una base de datos, la ejecución de una consulta SELECT en
cualquiera de los servidores devolverá el mismo resultado. pgpool-II se aprovecha de la característica de
replicación para reducir la carga en cada uno de los servidores PostgreSQL distribuyendo las consultas
SELECT entre los múltiples servidores, mejorando así la productividad global del sistema. En el mejor
200
diosestinta.blogspot.com
caso, el rendimiento mejora proporcionalmente al número de servidores PostgreSQL. El balanceo de
carga funciona mejor en la situación en la cuál hay muchos usuarios ejecutando muchas consultas al
mismo tiempo.
Desarrollo:
PostgreSQL 9.2
PGAdmin
Slony-I
Cabe destacar que los pasos que a continuación se describen deben de realizarse en todas las maquinas
en las cuales se realizara una replicación de bases de datos. Lo primero que debemos hacer es
descargar la versión de postgres, en nuestro caso la versión 9.2, lo pueden descargar del
siguiente enlace http://www.enterprisedb.com/products-services-training/pgdownload.
201
diosestinta.blogspot.com
2 Damos clic en siguiente y debemos especificar la ruta donde se instalara postgres
diosestinta.blogspot.com
4 Luego, que ya se haya terminado la instalación, debemos de tener cuidado de seleccionar
la opción de descargar otras herramientas, y damos clic en finalizar.
203
diosestinta.blogspot.com
5 Automaticamente se nos abriráuna aplicación StackBuilder, que nos servirá para la
instalación de slony-I. En la pestaña seleccionamos POSTGRESSQL9.2 en el puerto
5432 y damos clic en siguiente
6 Ahora se no muestra una ventana con las categorías de complementos que podemos
instalar, debemos elegir soluciones de replicación y chequear la casilla de SLONY-I
Si todo es correcto presionamos siguiente. Se instalaran los paquetes seleccionados y damos clic en
finalizar. Se debe aclarar que para realizar esta instalación se debe tener una conexión a internet.
Ahora que ya tenemos instalado lo necesario en nuestras maquinas, procedemos a realizar las
configuraciones necesarias para realizar la replicación en Windows utilizando PostgreSQL y
Slony-I.
204
diosestinta.blogspot.com
A continuación mostraremos un ejemplo de una réplica Maestro-Esclavo con la siguiente
topología:
MAESTRO ESCLAVO
No debemos olvidar que las direcciones de los nodos deben encontrarse en el mismo
segmento de red, además la DB a replicar debe de crearse tanto en el nodo maestro como en el
nodo esclavo, debe de tener el mismo nombre, los mismos campos y del mismo tipo, es decir,
debe ser idéntica.
Después de tener las consideraciones anteriores, pasamos a realizar los pasos para la
replicación de Bases de Datos.
PASO 1: Primero debemos de crear la BD a replicar (debe de crearse en ambos nodos), en este
ejemplo utilizaremos la que trae postgres por defecto (postgres) y crearemos una tabla, la cual
tendrá que replicarse. La tabla que crearemos se llama PERSONA y tiene como campos,
nombre, apellido y dui.
persona
nombre (tex)
apellido (tex)
dui (tex)
Para crear la tabla aremos uso del pgAdminIII, para ello nos vamos a Inicio Todos los
Programas PostgreSql pgAdmin III.
205
diosestinta.blogspot.com
Luego postgresEschemasPublicTables
Seleccionamos Nueva Tabla, colocamos el nombre de la tabla y luego damos clic en columnas,
luego clic en Agregar y ahí agregamos los campos de nuestra tabla.
206
diosestinta.blogspot.com
PASO 2:Ahora lo que haremos será configurar Slony-I, y para esto nos iremos a opciones,
caminos y agregaremos la ruta donde se encuentra nuestoSlony-I
207
diosestinta.blogspot.com
Nota: Es importante notar que antes del paso anterior (ruta del slony-I) postgres no nos dejara crear cluster, es
decir no podemos replicar datos, como se muestra en la siguiente imagen
Cuando ya hemos establecido la ruta de slony-I, el mensaje de la parte inferior de la creación del Cluster cambia
a “Especificar el nombre del cluster”
208
diosestinta.blogspot.com
Si el lenguaje no está, lo agregamos de la siguiente manera: File OpcionDisplay y
seleccionamos Lenguanges
PASO 3: Ahora necesitamos configurar el firewall de Windows para que nos permita
conexiones a través del puerto 5432 que es el que utiliza postgres por defecto, para ello nos
vamos a PANEL DE CONTROL SISTEMA Y SEGURIDAD FIREWALL DE
WINDOWS CONFIGURACION AVANZADA REGLAS DE ENTRADA
209
diosestinta.blogspot.com
NUEVA REGLA
210
diosestinta.blogspot.com
Damos permitimos la conexión y siguiente
211
diosestinta.blogspot.com
Y por último colocamos un nombre y finalizar
PASO 4: Ahora lo que haremos será configurar el archivo pg_hba de postgres en todas las
maquinas donde realizaremos la réplica, este archivo se encuentra en, C:\Program Files
(x86)\PostgreSQL\9.2\data\pg_hba. En este archivo definiremos las direcciones de los nodos
212
diosestinta.blogspot.com
y les diremos a cuales BD pueden conectarse y con cuales usuarios y cuál será el metodo de
encriptación de la contraseña. Deberá quedarnos así:
#Maestra
host all all 192.168.0.1/24 md5
#Esclavo
host all all 192.168.0.2/24 md5
set add table (set id=1, origin=1, id=1, fully qualified name = 'public.persona',
comment= 'postgres');
213
diosestinta.blogspot.com
store path (server = 1, client = 2, conninfo = 'dbname = postgres host = 192.168.0.1
user = postgres password = oracle');
store path (server = 2, client = 1, conninfo = 'dbname = postgres host = 192.168.0.2
user = postgres password = oracle');
PASO 7: Ahora ejecutamos el escrip Maestro.txt en el nodo maestro, para ello abrimos la
consola de windows y nos colocamos en la ruta donde se encuentra guardado y ejecutamos el
commandoslonik Maestro.txt
PASO 8: Ahora ejecutamos el escrip Suscriptor.txt en el nodo esclavo, para ello abrimos la
consola de windows y nos colocamos en la ruta donde se encuentra guardado y ejecutamos el
214
diosestinta.blogspot.com
commandoslonik Suscriptor.txt
NOTA:No se deben de cerrar ninguna de las consolas de Windows, de lo contrario la réplica se cancela.
215
diosestinta.blogspot.com
REPLICACION CON POSTGRES Y
PGPOOL EN LINUX
PREPARATIVOS INICIALES
Para llevar a cabo la configuración de este escenario seguiremos los siguientes pasos:
diosestinta.blogspot.com
fichero /etc/host.
# nano /etc/host
Figura 2.
Pgsql1:
# apt-get installpostgresql pgpool2
Pgsql2:
# apt-getinstallpostgresql
217
diosestinta.blogspot.com
Paso 3. Configuración de Postgresql.
Los siguientes pasos aplican a ambas instancias de PostgreSQL en los nodos pgsql1 y pgsql2.
Logueados como usuario postgres debemos añadir al usuario pgpool2 a los administradores de
postgres. Para loguearnos:
# su - postgres
Añadiendo al usuario pgpool2 .
createuser --superuser pgpool2
exit
A continuación vamos a controlar a cuáles host se les permitirá conectarse, cómo deberán autenticarse,
cuáles nombres de usuario de postgresql pueden usar y a cuáles bases de datos pueden acceder. Lo cual
lograremos editando el fichero: /etc/postgresql/9.2/main/pg_hba.conf
# nano /etc/postgresql/9.2/main/pg_hba.conf
218
diosestinta.blogspot.com
Por último indicamos a postgresql que escuche en todas las interfaces en el puerto 5432, editamos:
# nano /etc/postgresql/9.2/main/postgresql.conf
# /etc/init.d/postgresqlrestart
El fichero pcp.conf es un fichero de nombres de usuario y contraseñas usado para autenticarse con la
interfaz. Todos los comandos requieren que pcp.conf se haya configurado. Debemos editar el fichero:
/etc/pgpool2/pcp.conf para añadir nuestro usuario y contraseña.
Utilizaremos pg_md5 para que nos devuelva encriptado en md5 el password que le pasemos.
219
diosestinta.blogspot.com
y agregamos al final:
root:dd22141acb5ea065acd5ed773729c98f
220
diosestinta.blogspot.com
child_life_time = 300
connection_life_time = 0
child_max_connections = 0
client_idle_limit = 0
authentication_timeout = 60
logdir = '/var/run/postgresql'
replication_mode = true
load_balance_mode = true
replication_stop_on_mismatch = true
replicate_select = false
reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'
print_timestamp = true
master_slave_mode = false
connection_cache = true
health_check_timeout = 20
health_check_period = 60
health_check_user = ''
failover_command = ''
failback_command = ''
insert_lock = false
ignore_leading_white_space = true
log_statement = false
log_connections = false
log_hostname = false
parallel_mode = false
enable_query_cache = false
# system DB info
system_db_hostname = 'localhost'
221
diosestinta.blogspot.com
system_db_port = 5432
system_db_dbname = 'pgpool'
system_db_schema = 'pgpool_catalog'
system_db_user = 'pgpool'
system_db_password = ''
backend_hostname0 = 'pgsql1'
backend_port0 = 5432
backend_weight0 = 1
Ahora ya somos capaces de conectarnos al puerto 9999 de la IP de administración del nodo pgsql1 .
222
diosestinta.blogspot.com
# psql -h pgsql1 -p 9999 -U pgpool2 -d postgres
Como usuario postgres, en ambos nodos podremos usar psql para ver las bases de datos y verificar que
se han creado:
# su - postgres
$ psql -l
NOTA ACLARATORIA:
EN PSQL2 NO SE INSTALÓ PGPOOL2, POR LO TANTO LA CONFIGURACIÓN DE
PGPOOL2 SOLO SE DEBE HACER EN PSQL1.
223
diosestinta.blogspot.com
Bibliografía.
Wallen J., Set up MySQL database replication to ensure up-to-date backups. Obtenida el 31 de
abril de 2013 en http://www.techrepublic.com/blog/itdojo/set-up-mysql-database-
replication-to-ensure-up-to-date-backups/3340?pg=1
Campos M., Flores C., Ortiz R., Zuniga C,. Replicación en MySQL. Obtenida el 5 de mayo de
2013 en http://basesdedatosues.blogspot.com/2012/06/replicacion-mysql-replicacion-en-
mysq.html
Jaume Sabater (2008). Replicación y alta disponibilidad de PostgreSQL con pgpool-II. (1 Nov
– 2008) http://linuxsilo.net/articles/postgresql-pgpool.html
pgpool Global Development Group (2003 – 2011). Pgpool-II user manual
http://pgpool.projects.pgfoundry.org/pgpool-II/doc/pgpool-en.html
Cristián Fabres A. Levantar el servicio postgres en linux.
http://mundo2.cl.tripod.com/colabora/inst_pg_01_cf.htm
Replicación con Postgres http://www.slideshare.net/JohannaMendez2/replicacion-con-
postgresql-y-slony
Slony-I Support. http://www.pgadmin.org/docs/dev/slony.html
Slony-I enterprise-level replication system http://www.slony.info/
224
diosestinta.blogspot.com
225
diosestinta.blogspot.com