Está en la página 1de 231

Portada

ii










Esta edicin en espaol es la nica autorizada.

Autores y/o Editores:
Alex Caldern, Gmez Jacqueline,MornLuis, Urquilla Edwin, Henry Renderos,
David Garca, Portillo Pablo, Gmez Herber, Mendes Rebeca, Chicas Karla, Samuel
Menndez, Lisandro Martnez, Isidro Flores, Erick Valenzuela, Ana Rosales, Silvia
Campos, Luis Chvez, Josu Orellana, Erick Cruz, Gonzlez Mauricio, Ramrez
Heysel, Zometa Henry, Cisneros Rolando, Ibarra Luis, Orellana Hugo, Ana Jimnez,
Byron Guerrero, David Sandoval, Juarez Yonatan, Larios Raquel y Zelaya Josu,









Ttulo del libro.
Replicacion y Cluster de Bases de Datos
Lulu. El Salvador 2012

Materia: Bases de Datos, 005.73 C146e
Formato: 21.6 x 27.9 cm. Pginas: 229
Datos de catalogacin bibliogrfica

iii
CONTENIDO

Introduccin ....................................................................................... iv
Mysql: replicacin ............................................................................... 1
Postgresql cluster con pgpool-ii .........................................................15
Oracle stream replication .................................................................. 25
Oracle data guard .............................................................................. 43
Sql server cluster ............................................................................... 60
Clster en mysql .............................................................................. 105
Sincronizacin de bases de datos en nube ....................................... 121
Replicacin con sql server ................................................................ 143
Postgresql cluster con drbd y heartbeat ......................................... 182
Replicacin con postgresql .............................................................. 197
Replicacion con postgres y pgpool en linux .................................... 214


iv
Introduccin
El rea de Bases de datos se ha desarrollado como tecnologa a pasos agigantados en los ltimos aos,
debido al hecho que las empresas consideran de vital importancia a la informacin, convirtiendo a la misma
en el activo principal de las organizaciones.
Por ello es que dentro de las organizaciones se montan infraestructuras tecnolgicas 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
informtica, existen Maestras 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, Minera de Datos y/o Inteligencia de Negocios.
El presente documento recoge una serie de proyectos acadmicos estudiantiles, que abordan de una forma
prctica los temas de Replicacin y Clustering de Bases de Datos. Se han utilizado para la implementacin
los principales gestores del mercado, enfatizando las diferencias que implica el concepto de rplica y clster
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 reproduccin 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 cmputo 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 tena el lio
que el proyector no tena entrada hdmi, o de repente por ser un equipo antiguo se le arruinaba un color en
plena presentacin. Toda una suerte de aventura, a pesar de todo ello la capacidad de aprender supera las
limitantes, y pues; estamos en total disposicin a recibir un apoyo de parte suya desde cualquier parte del
mundo que lea este documento, cualquier apoyo por mnimo 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.
Adems del presente libro, puede acceder a diferentes recursos en lnea, como artculos o tutoriales del blog,
as como tambin los videos que documentan cada proyecto, los cuales estn en las siguientes URLs:
http://BasesdeDatosUES.blogspot.com/


v
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 rpidamente todos los videos de cada escenario de replicacin.
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 propsitos desde nuestro querido El Salvador, un pas
muy pequeo pero muy clido desde el corazn de Centro Amrica.
Alex Caldern


1
MySQL: Replicacin
Gmez Arvalo, Jacqueline Stephanie
Morn Monzn, Luis Antonio
Urquilla Campos, Edwin Alberto

Objetivos:
Estudiar los principios acerca de replicacin, su concepto, alcances, ventajas y desventajas.
Desarrollar el procedimiento para la replicacin en el gestor de bases de datos MySQL bajo un
escenario Maestro Esclavo y sistemas operativos Debian Wheezy 7.0.
Determinar las ventajas y desventajas en las diversas formas de replicacin, especficamente en
MySQL.

Conceptos:
MySQL
Es un sistema de gestin de bases de datos relacional, distribuido y multihilo. Es cdigo abierto y el soporte
es brindado por Oracle. La ms reciente distribucin es la 5.6.11 y fue lanzada el 25 de abril de 2013.

Replicacin
Es el proceso de copiar y mantener objetos de las base de datos en mltiples bases de datos que forman un
sistema de bases de datos distribuido. La replicacin permite que los datos de un servidor de bases de datos
(el maestro), sean replicados en uno o ms servidores de bases de datos (los esclavos).

Replicacin en MySQL.
Las caractersticas de MySQL soportan replicacin asncrona unidireccional: un servidor acta como
maestro y uno o ms actan como esclavos.

Cmo funciona la replicacin?
1

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 posicin hasta la que
el esclavo ha ledo los logs en la ltima actualizacin satisfactoria. El esclavo recibe cualquier actualizacin
que ha tenido lugar desde entonces, y se bloquea y espera para que el master le enve nuevas actualizaciones.


2
Debe tenerse en cuenta que cuando se usa replicacin, 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 Replicacin:
La replicacin unidireccional tiene beneficios para la robustez, velocidad, y administracin del sistema:
La robustez se incrementa con un escenario maestro/esclavo. En caso de problemas con el
maestro, puede cambiar al esclavo como copia de seguridad.
Puede conseguirse un mejor tiempo de respuesta dividiendo la carga de consultas de clientes a
procesar entre los servidores maestro y esclavo. Se puede enviar consultas SELECT al esclavo para
reducir la carga de proceso de consultas del maestro. Sin embargo, las sentencias que modifican
datos deben enviarse siempre al maestro, de forma que el maestro y el esclavo siempre estn
sincronizados. Esta estrategia de balanceo de carga es efectiva si dominan consultas que no
actualizan datos, pero este es el caso ms habitual.
Otro beneficio de usar replicacin es que puede realizar copias de seguridad usando un servidor
esclavo sin molestar al maestro. El maestro contina procesando actualizaciones mientras se realiza
la copia de seguridad

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 configuracin para varios esclavos y la replicacin 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 an no se tiene instalado el servidor MySQL se instalar en una Terminal con la lnea de comando:
apt-get install mysql-server


3
SERVIDOR MAESTRO:
Una vez instalado el servidor MySQL se proceder a las configuraciones correspondientes; primeramente se
realizar la configuracin del servidor Maestro:
2


1. Se modifica con vim, nano o cualquier editor de texto, el archivo my.cnf
# nano /etc/mysql/my.cnf

Y se modifican y/o agregan las siguientes lneas de cdigo:
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=DATABASE_TO_BE_REPLICATED
server-id=1
skip-host-cache
skip-name-resolve

Donde DATABASE_TO_BE_REPLICATED es el nombre de la base de datos que se va a replicar.



4

2. Se reinicia el servicio mysql:
# /etc/init.d/mysql restart

3. Se accede como root a mysql, pedir la contrasea del servidor, sta ser la que se ha configurado en la
instalacin:
# mysql u root p

4. Dentro de la consola de MySQL se crear una Base de Datos
mysql > CREATE DATABASE ReplicacionDB;



5. Se crean los privilegios para la Replicacin:
mysql > GRANT REPLICATION SLAVE ON *.* TO 'USER'@'%' IDENTIFIED BY
'PASSWORD';


5
Donde
USER: Es el nombre del usuario del esclavo.
% : Es la direccin donde est almacenado el esclavo, puede determinarse que la direccin sea
cualquiera, ubicando el smbolo % en lugar de la direccin.
PASSWORD: Es la contrasea del usuario esclavo.

6. Se establecen los privilegios:
mysql > FLUSH PRIVILEGES;

7. Se obtiene la informacin del servidor maestro:
mysql > SHOW MASTER STATUS;

Este comando nos devolver el archivo y la posicin de la Base de Datos, es importante, tener
presentes estos datos, ya que sern utilizados en la configuracin del esclavo.

8. Se accede a la base de datos:
mysql > USE ReplicacionDB;

9. Se congelar la base de datos para poder obtener el respaldo de la misma y poder restaurarla en el
servidor esclavo.
mysql > FLUSH TABLES WITH READ LOCK;

10. Sale de mysql.
mysql > EXIT;


6


11. Con mysqldump se va a crear un backup de la base de datos, para que luego sea restaurada en el
servidor esclavo.
# mysqldump -u root -p DATABASE_TO_BE_REPLICATED >
DATABASE_TO_BE_REPLICATED.sql

Donde DATABASE_TO_BE_REPLICATED es el nombre de la base de datos que se replicar.
Este comando generar un archivo .sql, el cual contendr el backup de la base de datos, ste se
almacenar en la direccin 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

mysql > USE ReplicacionDB;
mysql > UNLOCK TABLES;
mysql > EXIT;


7



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 travs de una memoria usb, transferencia punto a punto o por llaves SSH,
tal cual es el ejemplo de la configuracin aqu detallada:

1. A travs de claves SSH, se transfiere el archivo de la mquina que sirve como servidor maestro a la que
sirve como servidor esclavo:
# scp DATABASE_TO_BE_REPLICATED.sql >
user@direccionIP:/rutaAlmacenamiento

Donde:
DATABASE_TO_BE_REPLICATED.sql: Es el archivo que se gener con mysqldump en el servidor
maestro.
user: Es el nombre del usuario de la computadora remota.
direccionIP: Es la direccin IP a la cual se copiar el archivo.

8
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.
# mysql u root p DATABASE_TO_BE_REPLICATED <
DATABASE_TO_BE_REPLICATED.sql


3. Con un editor de texto, ya sea vim, nano o cualquier otro se abre el archivo de configuracin my.cnf
# nano /etc/mysql/my.cnf

Y se modifican o agregan las lneas:
server-id=2
replicate-do-db=DATABASE_TO_BE_REPLICATED
skip-host-cache
skip-name-resolve


9


4. Se reiniciar el servicio mysql para poder aplicar los cambios.
# /etc/init.d/mysql restart

5. Se acceder la consola de MySQL para configurar el esclavo:
# mysql u root p

6. Se detienen los procesos del esclavo:
mysql > SLAVE STOP;


10


7. Luego se har referencia al servidor maestro del cual obtendr las actualizaciones el servidor esclavo:
mysql > CHANGE MASTER TO MASTER_HOST='192.168.56.1',
-> MASTER_USER='user',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='/var/log/mysql/mysql-bin.0000XX',
-> MASTER_LOG_POS=XXX;
Dnde:
MASTER_HOST: Hace referencia a la direccin IP en la cual est el servidor maestro.
MASTER_USER: Usuario del servidor maestro con el cual se accede a MySQL.
MASTER_PASSWORD: Contrasea del servidor maestro con el cual se accede a MySQL.
MASTER_LOG_FILE: La direccin y el nmero que se obtuvo cuando se realiz el SHOW MASTER
STATUS.
MASTER_LOG_POS: Posicin de los logs, tambin obtenida con SHOW MASTER STATUS en el
servidor maestro.


11
8. Se inicia el servidor esclavo:
mysql > SLAVE START;

9. Se verifica el estado del servidor esclavo:
mysql > SHOW SLAVE STATUS;




DEMOSTRACIN:

1. En el servidor maestro se crear una Tabla llamada Alumno:
# mysql u root p
mysql > USE ReplicacionDB
mysql > CREATE TABLE Alumno (nombre VARCHAR(10));


12
Y luego verificamos las tablas con el comando:
mysql > SHOW TABLES;

Y se podr comprobar que la tabla efectivamente ha sido creada:

2. En el servidor esclavo, se acceder a MySQL y se vern reflejados los cambios de la tabla creada en el
servidor maestro:
# mysql u root p
mysql > SHOW DATABASES;
mysql > USE ReplicacionDB;
mysql > SHOW TABLES;

Y se podr ver que el cambio ha sido aplicado en la base de datos.


13





Referencias:


1. Oracle MySQL, Captulo 6. Replicacin en MySQL. Obtenida el 3 de mayo de 2013 en
http://dev.mysql.com/doc/refman/5.0/es/replication.html

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



15
PostgreSQL Cluster con PGPOOL-II
Henry Renderos, David Garca
Objetivos:
Aprender los conceptos bsicos sobre el manejo de un clster utilizando PostgreSQL 9.1 y
PGPOOL-II en Linux.
Comprender el funcionamiento de un clster.
Establecer los parmetros de inicializacin para el clster.
Realizar un escenario demostrativo sobre el uso de un clster empleando replicacin de bases de
datos y sentencias SQL.
Visualizar el comportamiento de la replicacin en la red.

Conceptos:

Qu es un clster?
Un clster es simplemente una coleccin de componentes que se unen y trabajan como un solo
componente para proveer alta disponibilidad. Cuando hablamos de clster de bases de datos, nos referimos
a una arquitectura en la que tenemos varios equipos con parte de los datos del usuario trabajando al unsono
como un solo sistema. La arquitectura de un clster 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 gestin de bases de datos objeto-relacional, distribuido bajo licencia BSD y
con su cdigo fuente disponible libremente. Es el sistema de gestin de bases de datos de cdigo abierto
ms 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 caractersticas:
Agrupacin de conexiones

16
pgpool-II mantiene las conexiones establecidas a los servidores PostgreSQL, y los reutiliza cada vez que una
nueva conexin con las mismas propiedades (es decir, nombre de usuario, bases de datos, la versin del
protocolo) entra en juego reduce la sobrecarga de la conexin, y mejora el rendimiento global del sistema.

Replicacin

pgpool-II puede gestionar mltiples servidores PostgreSQL. La activacin de la funcin de replicacin hace
que sea posible la creacin de una copia de seguridad en tiempo real en 2 o ms grupos PostgreSQL, de
manera que el servicio pueda continuar sin interrupcin si uno de esos grupos falla.

Balanceo de carga
Si se replica una base de datos (ya que se ejecuta en el modo replicacin o modo maestro / esclavo), la
realizacin de una consulta SELECT en cualquier servidor devolver el mismo resultado. pgpool-II se
aprovecha de la funcin de replicacin con el fin de reducir la carga en cada servidor PostgreSQL. Lo hace
mediante la distribucin de las consultas SELECT entre los servidores disponibles, mejorando el
rendimiento global del sistema. En un escenario ideal, el rendimiento de lectura podra mejorar
proporcionalmente al nmero de servidores PostgreSQL. El equilibrio de carga funciona mejor en un
escenario donde hay una gran cantidad de usuarios que ejecutan muchas consultas de slo lectura al mismo
tiempo.
Limitar el exceso de conexiones
Hay un lmite en el nmero mximo de conexiones simultneas con PostgreSQL, y nuevas conexiones son
rechazados cuando se alcanza este nmero. Al aumentar este nmero mximo de conexiones, sin embargo,
aumenta el consumo de recursos y tiene un impacto negativo en el rendimiento general del sistema. pgpool-
II tambin tiene un lmite en el nmero mximo de conexiones, pero las conexiones adicionales se pondrn
en cola en lugar de devolver un error de inmediato.

Consultas en paralelo
Con la funcin 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 ejecucin
total. La consulta paralela es la que funciona mejor en la bsqueda 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 aplicacin 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 aplicacin de base de datos existente se puede utilizar con
pgpool-II casi sin un cambio en su cdigo fuente.



17
Desarrollo:

INSTALACIN

1. Utilidades para la gestin y el mantenimiento del clster.

# 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
Ac le colocaremos el nombre de pgsql1 en el nodo 1 y pgsql2 en el nodo 2.



# nano /etc/hosts
Ac agregaremos los nombres de host pertenecientes al clster con sus respectivas direcciones IP.

18



En este momento tenemos configurados los nodos del clster de la siguiente forma, luego de esto debemos
reiniciar los nodos:

Nodo 1
o Hostname: pgsql1
o Direccin IP: 192.168.1.7
Nodo 2
o Hostname: pgsql2
o Direccin IP: 192.168.1.4
Mscara de red de 24 bits.
Direccin 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 debern ejecutarse como root (#) o como el usuario postgres ($).

4. Instalaremos las cabeceras de la librera de PostgreSQL, el paquete de desarrollo de PostgreSQL y las
utilidades de compilacin de GNU)

# apt-get install libpq-dev postgresql-server-dev-9.1 bison build-essential

5. Una vez instalado, instalaremos PostgreSQL en ambos nodos del clster:

19

# apt-get install postgresql-9.1 postgresql-contrib-9.1 postgresl-doc-9.1
uuid libdbd-pg-perl

6. Finalmente instalamos pgpool-II en el nodo identificado como pgsql1

# apt-get install pgpool2 libpgpool0


CONFIGURACIN DE POSTGRESQL

Los siguientes pasos se aplican a las instancias de PosgreSQL en los nodos pgsql1 y pgsql2.
1. Comenzaremos, como usuario postgres, aadiendo el usuario de base de datos (role) pgpool2, sin
contrasea:

# su postgres
$ createuser superuser pgpool2

2. Editamos ahora el fichero /etc/postgresql/9.1/main/pg_hba.conf y aadimos el acceso para todos
los usuarios desde cualquier direccin IP. (NOTA: esto se hace por motivos de enseanza, el acceso slo
debe permitirse para el usuario pgpool2 desde la direccin IP en donde est instalado.)

# nano /etc/postgresql/9.1/main/pg_hba.conf

El fichero deber quedarnos de la siguiente manera:


20



3. Por ltimo indicaremos a PostgreSQL que escuche en todas las interfaces pues, por defecto, slo lo
hace en el localhost. Editamos el fichero /etc/postgresql/9.1/main/postgresql.conf y cambiamos la
siguiente directiva.

listen_addresses = *

Tambin podemos restringirlo a que solo escuche peticiones provenientes de la direccin IP en donde se
encuentra pgpool-II
4. Reiniciamos PostgreSQL para activa los cambios.

# service postgresql restart


CONFIGURACIN DE PGPOOL-II

La configuracin de pgpool-II la realizaremos nicamente en el nodo pgsql1, pues slo ese host lo posee.

21
1. Editaremos el archivo /etc/pgpool2/pgpool.conf

Deberemos editar el archivo para configurarlo a nuestra medida. Se configurarn:
Pool de conexiones
Replicacin
Balanceo de carga

Las nicas directivas que modificaremos se muestran a continuacin, las dems 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

2. Para arrancar pgpool-II lo haremos con el siguiente comando (start o restart):

# service pgpool2 start <restart>

3. Si queremos arrancar pgpool-II en modo de depuracin primero lo detendremos con el comando
service pgpool2 stop y lo arrancaremos en modo debug con de la siguiente manera:

22

# pgpool n d f /etc/pgpool2/pgpool.conf

4. En otra pestaa o ventana de la terminal probaremos conectarnos a travs de pgpool-II con el
siguiente comando:

# psql h pgsql1 p 9999 U pgpool2 d postgres

El significado del comando anterior se detalla a continuacin:
-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 clster.
-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 travs de pgpool-II

PRUEBAS DE REPLICACIN

1. Crearemos una base de datos que ser replicada a travs de pgpool-II de la siguiente forma:

# createdb h pgsql1 p 9999 U pgpool2 basesdedatosues

2. Si nos loggeamos como usuario postgres en los dos nodos del clster (su postgres) y ejecutamos el
siguiente comando para visualizar las bases de datos, nos debera de aparecer en cada nodo la base de datos
que creamos en el paso anterior:

23

$ psql -l



POSTGRESQL Y PGPOOL-II EN LA RED

A continuacin se muestran algunas capturas de lo que sucede en la red al momento de que se realiza una
sentencia SQL a travs de pgpool-II en los nodos pertenecientes al clster.

1. Instalaremos el sniffer wireshark y luego lo ejecutaremos:

# apt-get install wireshark
# wireshark &

2. Seleccionaremos la interfaz eth0 y capturaremos algunos paquetes, realizaremos una consulta insert a
travs de pgpool-II y observaremos que aparecern los siguientes paquetes en nuestra escucha:


24


3. Observaremos con ms detenimiento el paquete 874 y veremos que al momento de la replicacin lo
que se transporta a travs de la red son las sentencias SQL. La query que fue introducida en el nodo pgsql1
a travs 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 direccin IP 192.168.1.4.


Referencias:Jaume Sabater (2008). Replicacin 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


25
Oracle Stream Replication
Portillo Alvarado, Pablo Oswaldo.
Gmez Arana, Herber Oswaldo.
Mendes Salgado, Rebeca Marcela.
Chicas Blanco, Karla Grisel.

Objetivos:
Explicar de forma clara los conceptos relacionados con la replicacin Stream en Oracle database
11g R2.
Explicar la diferencia entre una replicacin sncrona y una replicacin asncrona.
Presentar con claridad las configuraciones o pasos que se deben seguir para llevar a cabo una
replicacin stream en Oracle database.
Replicar cambios DML de manera bidirectional en 2 Bases de Datos usando el gestor Oracle
Estndar Edition 11g.

















26
Conceptos:
Antes de seguir es importante conocer algunos conceptos.

Qu es un Oracle Stream?
Es una herramienta proporcionada por Oracle que se encarga de propagar y administrar datos,
transacciones y eventos en una fuente de datos ya sea dentro de una base de datos, o de una base de datos a
otra, permitiendo tener asi ambas bases de datos sincronizadas y la informacin ms segura.

Tipos de Streams:

Replicacin Sncrona:

Este tipo de replicacin tiene sus limitantes, principalmente debe ser utilizada para aplicaciones en las cuales
se necesite un flujo pequeo de informacin, ya que solo soporta la replicacin de 1 o pocas tablas de un
esquema determinado y solo replica cambios DML; los DDL no son soportados. Utiliza queues llamadas
tambin colas que se encargan de capturar la replicacin y encolarla hacia la otra base de datos, y viceversa.
Para ms informacin consulte:

http://docs.oracle.com/cd/B28359_01/server.111/b28321/strms_capture.htm#STRMS168.

Replicacin Asncrona:

Replicacin mediante procesos, los cambios se propagan a travs de redo-logs. Puede propagar tanto
cambios DDL como DML.

Bsicamente la replicacin Stream de Oracle consta de estos 3 pasos:









Cuando usted inserta un dato y luego que hace commit, se captura esa transaccin, una vez hecho esto, los
datos se propagan hacia la base de Datos destino donde se aplican dichos cambios.












APPLY
Source
Database
DES
TIN
ATI
ON
DAT
AB
ASE
PROPAGATION CAPTURE
Destinetion
Database

27
Capture (captura):

Esta paso se lleva a cabo en la base de datos origen de la replicacin capturando los cambios en el momento
en que son realizados, estos cambios pueden ser DML o DDL dependiendo del tipo de replicacin q se este
realizando, y pueden ser realizados mediante COLAS o mediante PROCESOS dependiendo de si es
sncrona o asncrona.

Propagation (propagacin):

Este paso lo realiza la base de datos origen quien enva el cambio luego de capturarlo, este se enva 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.






















28
Desarrollo:
Este documento explica cmo implementar una replicacin 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
instalacin que realizamos ya que si es la Standar Edition la nica forma de realizar la replicacin de
Streams es atreves de un mecanismo sincrono ya que esta instalacin no soporta la replicacin a travs de
procesos, este documento se encargara nicamente de la replicacin sncrona (a travs de
queues/colas) entre bases de datos.
Si usted necesita replicar grandes volmenes de informacin ya sea una base de datos entera o un esquema
completo deber utilizar otro tipo de instalacin como la Enterprise que soporta la replicacin de tipo
asncrona. 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.

CONFIGURACION DEL ENTORNO DE RED.

Ambos servidores se encuentran conectados punto-punto utilizando la subred 172.16.0.0/24.

El servidor #1 tiene la direccin 172.16.0.1
El servidor #2 la direccin 172.16.0.2.

Si usted creo las bases de datos en modo archive log puede obviar el paso 1.

1. Habilitar el modo Archive log en ambas Bases de Datos.

SQL> shutdown immediate
SQL> startup mount;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE ARCHIVE LOG START


29
2. Agregar las cadenas de conexin respectivas en el archivo TNSNAMES.ORA.
Estas nos ayudaran a lograr la conectividad entre ambos servidores a nivel de las bases de datos.

El directorio en el que se encuentra el archivo es
C:\app\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora

NOTA: ya existe en dichos archivos otra entrada con el nombre de la base de datos que creamos al inicio.

2.1 Editar el archivo tnsnames.ora en Servidor #1 (BDA) agregando la siguiente cadena de
conexin referente a la Base de Datos BDB.
BDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.2)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = BDB)
)
)

2.2 Editar el archivo tnsnames.ora en Servidor #2 (BDB) agregando la siguiente cadena de
conexin referente a la Base de Datos BDA.

BDA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = BDA)
)
)

3. Creacin de Usuario administrador de la replicacin stream
De igual manera creamos un Tablespace para el usuario y asignamos los privilegios necesarios para que
nuestro usuario pueda realizar tareas administrativas sobre nuestra replicacin stream.
Es recomendable crear un usuario nuevo que administre la replicacin stream, dicho usuario deber ser
creado de la misma forma en ambas bases de datos.

3.1- Creacin de Tablespace y Datafiles.
En su navegador abra el Enterprise Manager y conctese como usuario sys.
De click en la ficha Servidor, luego dirjase a la seccin Almacenamiento y de click a Tablespaces.
Dar click el boton crear; esto abrira una ventana, En la seccion Crear Trablespace coloca el
nombre que se le dara al tablespace, en nuestro caso se llama streams_tbs. Ver Imagen 2.
En la seccion Archivo de Datos, dar click en el boton Agregar. Esto abrira la seccion Agregar
Archivos de Datos
Escribimos el nombre, el cual sera streams_tbs.dbf.
En la seccion Almacenamiento damos un incremento de 100MB. El tamao maximo del archivo
debe de quedar en Ilimitado. Ver configuracion completa en Imagen 3.
Damos click en Continuar.
Vamos al final de la pagina y damos click en Aceptar
Se puede ver que se a creado correctamente el tablespace. Ver imagen 4.

30

Imagen 2


Imagen 3


31


Imagen 4


3.2- Crea el usuario strmadmin.
Ir a ficha Servidor.
En el apartado Seguridad damos click en la opcin Usuarios.
Se nos abre una ventana en la que hay varios usuarios creados, estos no nos interesan, por lo tanto
crearemos uno nuevo, para ello damos click en el botn Crear.
Creamos el usuario strmadmin, con contrasea strmadmin y le asignamos el tablespace creado
recientemente streams_tbs y como tablespace Temporal le asignamos el TEMP. Ver Imagen 5.
Damos click en Aceptar y listo hemos creado nuestro usuario.


32


Imagen 5

3.3- Ahora vamos a asignar privilegios.

3.3.1 Lo primero sera convertir nuestro usuario strmadmin en un superusuario del EM
(Enterprise manager) esto nos va a permitir gestionar y monitorear nuestra replicacin
stream sncrona con la ayuda de las herramientas del enterprise manager.

Dar click en la ficha Servidor.
Ir a la seccin Administracin de Enterprise Manager y seleccionamos Usuarios de
Enterprise Manager. Nos abrir una nueva ventana.
En la seccin Crear Administrador, agregamos el usuario strmadmin creado recientemente, para
ello damos click en la lamparita que se muestra en la Figura 6, se abrir una ventana en la que
debemos seleccionar nuestro usuario strmadmin, damos click en Seleccionar.
Una vez seleccionamos el usuario, damos click en el botn Revisar, luego Terminar.
Ahora lo que queda es dejar nuestro Usuario como Superadministrador, para ello seleccionamos el
usuario recin agregado, se abrir la ventana en la que lo dejamos como Superadministrador como
se muestra en la Imagen 7. Damos click en Revisar, luego en Terminar y listo.

33


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.


34

Imagen 8

3.3.2- Agregacin de Privilegios requeridos con GRANT.
Estos privilegios le permitirn a nuestro usuario realizar tareas de administracin y ser dueo de nuestra
replicacin stream.
Abrimos una consola y con la ayuda del sqlplus nos conectamos como usuarios sys.
>sqlplus / as sysdba

SQL> grant execute on dbms_aqadm to strmadmin;
SQL> grant execute on dbms_capture_adm to strmadmin;
SQL> grant execute on dbms_propagation_adm to strmadmin;
SQL> grant execute on dbms_streams_adm to strmadmin;
SQL> grant execute on dbms_apply_adm to strmadmin;
SQL> grant execute on dbms_flashback to strmadmin;

SQL> begin dbms_streams_auth.grant_admin_privilege
(grantee => 'strmadmin',
grant_privileges => true);
end;
/

3.3.3 Agregar el rol DBA

SQL> grant connect, resource, dba to strmadmin;

3.3.4 Agregacin de los roles EXP_FULL_DATABASE e IMP_FULL_DATABASE.

SQL> grant exp_full_database to strmadmin;
SQL> grant imp_full_database to strmadmin;


35

3.3.5 Agregacin de variables de entorno necesarias para el Streams.
SQL> alter system set global_names=true;
SQL> alter system set Streams_pool_size=100m;



4 Crear el Database link
El dblink debe tener el mismo nombre global de la base de datos de destino, en nuestro caso BDA y BDB;
el dblink debe ser creado en el esquema del Database Stream Administrator.
Nos conectamos en nuestra Base de Datos y creamos un enlace hacia la Base de Datos a la que nos
deseamos conectar.

4.1- Creacin de Database Link en Base de Datos de Servidor #1: BDA
Para ello nos logeamos en el servidor 1 como nuestro usuario strmadmin utilizando la cadena de conexin
de nuestra base de datos en este caso BDA y Se crea el enlace hacia la Base de Datos de servidor #2 BDB.

SQL> CONNECT strmadmin/strmadmin@BDA
SQL> CREATE DATABASE LINK BDB CONNECT TO strmadmin
IDENTIFIED BY strmadmin USING 'BDB';
4.2- Creacin de Database Link en Base de Datos de servidor #2: BDB.
Para ello nos logeamos en el servidor 2 como nuestro usuario strmadmin utilizando la cadena de conexin
de nuestra base de datos en este caso BDB y Se crea el enlace hacia la Base de Datos de servidor #1 BDA.

SQL> CONNECT strmadmin/strmadmin@BDB
SQL> CREATE DATABASE LINK BDA CONNECT TO strmadmin
IDENTIFIED BY strmadmin USING 'BDA';

5 Creacin de las colas.

Este paso debe llevarse a cabo en el Enterprise Manager, ingresando con el usuario que se cre
anteriormente y con su respectiva contrasea. Esto debe de realizarse en ambas Bases de Datos.

Se crearan 2 parmetros de inicializacin, con nombres, capture_queue y apply_queue .

Vea el siguiente enlace y dirjase a la seccin

http://docs.oracle.com/cd/B28359_01/server.111/b28324/tdpii_common_ii.htm#CHDJHCAI
Ir a la pestaa Movimiento de Datos
En la seccin Streams seleccionar la opcin Gestionar Colas Avanzadas. Esto abrir una nueva
ventana
Buscamos un botn 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.



36

Imagen 9


Imagen 10







37
6 Creacin de tabla en el esquema del usuario HR.
Esta tabla debe crearse en ambas bases de datos ya que nuestra replicacin ser sncrona, 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 replicacin, 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;

Con esto desbloqueamos el esquema hr y le asignamos la contrasea hr.
Nos conectamos a dicho esquema.
> sqlplus / as sysdba
SQL> connect hr/hr@BDX
Donde X representa A o B, Si est en maquina Servidor #1 reemplace BDX por BDA, de lo contrario
reemplcela por BDB. Ahora creamos la tabla.
SQL> create table alumno ( ID number primary key, nombre varchar2(20), carrera varchar2(20));

7 Creacin y agregacin de reglas del apply process en ambas Bases de Datos.
7.1.1- Creacin del apply process en BDA ubicada en Servidor #1.
BEGIN
DBMS_APPLY_ADM.CREATE_APPLY(
queue_name => 'strmadmin.apply_queue',
apply_name => 'apply_emp_dep',
apply_captured => FALSE);
END;
/

7.1.2- Agregacin de reglas del apply process en BDA ubicada en Servidor #1.
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name => 'hr.alumno',
streams_type => 'apply',
streams_name => 'apply_emp_dep',

38
queue_name => 'strmadmin.apply_queue',
source_database => 'BDB');
END;
/
7.2.1- Creacin del apply process en BDB ubicada en Servidor #2.
BEGIN
DBMS_APPLY_ADM.CREATE_APPLY(
queue_name => 'strmadmin.apply_queue',
apply_name => 'apply_emp_dep',
apply_captured => FALSE);
END;
/

7.2.2- Agregacin de reglas del apply process en BDB ubicada en Servidor #2.
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_RULES(
table_name => 'hr.alumno',
streams_type => 'apply',
streams_name => 'apply_emp_dep',
queue_name => 'strmadmin.apply_queue',
source_database => 'BDA');
END;
/





39
8 Configuracin de la Propagacin para la notificacin de cambios.
8.1. En Base de Datos BDA.
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name => 'hr.alumno',
streams_name => 'send_emp_dep',
source_queue_name => 'strmadmin.capture_queue',
destination_queue_name => 'strmadmin.apply_queue@BDB',
source_database => 'BDA',
queue_to_queue => TRUE);
END;
/
8.2. En Base de Datos BDB.
BEGIN
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(
table_name => 'hr.alumno',
streams_name => 'send_emp_dep',
source_queue_name => 'strmadmin.capture_queue',
destination_queue_name => 'strmadmin.apply_queue@BDA',
source_database => 'BDB',
queue_to_queue => TRUE);
END;
/




40
9 Configuracin de Captura Sncrona.
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(
table_name => 'hr.alumno',
streams_type => 'sync_capture',
streams_name => 'sync_capture',
queue_name => 'strmadmin.capture_queue');
END;
/

10 Configuracin de instanciacin de SCN.
10.1 En Base de Datos BDA.
DECLARE
iscn NUMBER;
BEGIN
iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@BDB(
source_object_name => 'hr.alumno',
source_database_name => 'BDA',
instantiation_scn => iscn);
END;
/







41
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(
source_object_name => 'hr.alumno',
source_database_name => 'BDB',
instantiation_scn => iscn);
END;
/
11 Iniciar apply process.
Esta configuracin se hace en ambas Bases de Datos.
BEGIN
DBMS_APPLY_ADM.START_APPLY(
apply_name => 'apply_emp_dep');
END;
/
12 Probar nuestro Oracle Stream.
Nos conectamos en la base de Datos BDA conectados como usurio hr y contrasea hr e insertamos
algunos campos.
INSERT INTO alumno values(1,Pablo,Sistemas);
INSERT INTO alumno values(2,Oswaldo,Sistemas);
commit;

Si nos conectamos en Base de Datos BDB como hr y hacemos un select de la siguiente forma obtendremos
el siguiente resultado.

SELECT * FROM alumno;
1 Pablo Sistemas
2 Oswaldo Sistemas.

De igual forma se pueden ingresar campos en la base de Datos BDB, y se propagaran los cambios a BDA.


42
Referencias:
Documentacin oficial proporcionada por Oracle :
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



















43
Oracle Data Guard
Samuel Menndez, Lisandro Martnez, Isidro Flores, Erick Valenzuela

Objetivos
Documentar la creacin de una base de datos standby (fsica) con la solucin de Oracle Data Guard
11g R2.
Sincronizar una base de datos standby fsica con su contraparte de produccin para la proteccin de
datos y la alta disponibilidad.
Permitir que una base de datos standby fsica est abierta para acceso de solo lectura para
informes, consultas simples o complejas, clasificacin, acceso basado en la web, etc. mientras se
aplican cambios a la base de datos de produccin.
Identificar todos requisitos necesarios tanto de software como de hardware para tener un ptimo
rendimiento en la tecnologa Oracle en su versin Enterprise.

Conceptos
Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo
contexto y almacenados sistemticamente para su posterior uso. En este sentido, una biblioteca
puede considerarse una base de datos compuesta en su mayora por documentos y textos impresos
en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnolgico de campos
como la informtica y la electrnica, la mayora de las bases de datos estn en formato digital
(electrnico), y por ende se ha desarrollado y se ofrece un amplio rango de soluciones al problema
del almacenamiento de datos.
Un Sistema de Gestin de Bases de Datos (SGBD) es un conjunto de programas que permiten
el almacenamiento, modificacin y extraccin de la informacin en una base de datos, adems de
proporcionar herramientas para aadir, borrar, modificar y analizar los datos. Los usuarios pueden
acceder a la informacin usando herramientas especficas de interrogacin y de generacin de
informes, o bien mediante aplicaciones al efecto. Los SGBD tambin proporcionan mtodos para
mantener la integridad de los datos, para administrar el acceso de usuarios a los datos y recuperar la
informacin si el sistema se corrompe. Permite presentar la informacin de la base de datos en
variados formatos. La mayora de los SGBD incluyen un generador de informes. Tambin puede
incluir un mdulo grfico que permita presentar la informacin con grficos y tartas.

Oracle Corporation es una de las mayores compaas de software del mundo. Sus productos van
desde bases de datos (Oracle) hasta sistemas de gestin. Cuenta adems, con herramientas propias
de desarrollo para realizar potentes aplicaciones, como Oracle Designer, Oracle JDeveloper y
Oracle Developer Suite. Hoy Oracle es el estndar de oro para la tecnologa de base de datos y
aplicaciones en las empresas en todo el mundo. La compaa es el proveedor lder mundial de
software de gestin de informacin y la segunda mayor compaa de software independiente. La
adquisicin 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 ms completos,
destacando:

44

Soporte de transacciones: Una transaccin es una interaccin con una estructura de datos
compleja, compuesta por varios procesos que se han de aplicar uno despus del otro. La
transaccin 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 vara 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 ms grande
sin perder calidad en los servicios ofrecidos.
Soporte multiplataforma: es un atributo conferido a los programas informticos o los
mtodos de clculo y los conceptos que se ejecutan e interoperar en mltiples plataformas
informticas.

Oracle Data Guard proporciona la infraestructura de software de administracin, control y
automatizacin para crear y mantener una o ms bases de datos de reserva y as proteger los datos
de Oracle contra fallas, desastres, errores y daos. Data Guard es una de las numerosas
caractersticas de alta disponibilidad (HA) integradas en Oracle Database, que aseguran la
continuidad de los negocios reduciendo al mnimo el impacto del tiempo de inactividad
programado y no programado.[1]




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 produccin pasa a la base de datos de reserva.
El nico tiempo de inactividad es el necesario para efectuar la transicin. 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 fsica de reserva, como es una rplica exacta de la base principal, tambin
puede servir para aliviar a la base de datos principal de la sobrecarga de realizar backups.

Data Guard 11g versin 2 est diseado para reducir el impacto del transporte sincrnico 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 lnea de la base principal, y

45
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 geogrfica entre las bases de datos principal y de reserva en
una configuracin sincrnica con cero prdidas de datos. En redes de baja latencia, puede reducir el
impacto de la replicacin sincrnica 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
asincrnica remota a fin de lograr una proteccin de alta disponibilidad y cero prdida de datos
contra fallas de las bases de datos y los componentes (fallas de redes SAN, por ejemplo).

Una transicin es una operacin 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 sincrnico o
asincrnico) o el modo de proteccin que se utilice, una transicin siempre es una operacin en la
que no se pierde ningn dato.

El archivo pfile contiene todos los parmetros de inicializacin de la base de datos. [2]

Un SPFILE (archivo de parmetros del servidor), por otro lado, es un archivo binario de servidor
persistente que slo 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. Edicin de una SPFILE se corrompen, y usted no ser capaz de iniciar la base de
datos ms. [3]

SQL*Plus es un programa de lnea 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 lneas de comando bsica. Los programadores y los
administradores de bases de datos (DBA's) lo usan de forma muy comn como interfaz
fundamental en la mayora 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 prctica 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 caractersticas similares (una se utilizara como primaria y la otra como bases de
datos secundaria).
Un cable UTP cruzado.
Sistema operativo OpenSUSE en su versin 12.3 (32 bits).
Oracle Enterprise 11g R2 (32 bits), es necesario utilizar la versin Enterprise ya que en las dems
versiones no cuenta con las herramientas necesarias para configurar un Data guard.
La mquina primaria debe tener instalada una base de datos y la maquina secundaria
nicamente el software de Oracle (sin base de datos).


46

Lo primero que debe hacerse es que cada computadora tenga una direccin IP del mismo rango para tener
conectividad entre las dos computadoras, en este caso se utilizan las siguientes:
Maquina primaria: 192.168.15.100/24
Lnea de comando: ifconfig eth0 192.168.15.100/24 up
Maquina secundaria: 192.168.15.101/24
Lnea de comando: ifconfig eth0 192.168.15.101/24 up
Los nombres de host quedan de la siguiente manera:
Base de Datos Primaria: dga1
Base de Datos Stanby: dga2
Una vez comprobada la conectividad se procede a configurar las bases de datos.

BASE DE DATOS PRIMARIA
Configuracin del Listener
En esta explicacin estamos utilizando el puerto 7438 y el archivo listener.ora queda de la siguiente manera:





47

Verificar que la base de datos est en modo archivelog:
SQL>SELECT log_mode FROM v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL>
Si en dado caso no se encuentra en dicho modo, se establece de la siguiente manera:
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE ARCHIVELOG;
SQL>ALTER DATABASE OPEN

Activamos FORCE LOGGING con el siguiente comando:
SQL>ALTER DATABASE FORCE LOGGING;
Inicializacin de parmetros:
Verificar que los parmetros 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 parmetro 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 maysculas y minsculas. Los siguientes caracteres son vlidos en un
nombre de base de datos: caracteres alfanumricos, guion bajo (_), signo de nmero (#) y el signo de dlar
($). [4]

48

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 sern
utilizadas en el DG_CONFIG configurando el parmetro LOG_ARCHIVE_CONFIG. Para esta
configuracin la base secundaria ser configurada con el valor DB11G_STBY.
SQL>ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB11G,DB11G_STBY)';
LOG_ARCHIVE_CONFIG: este parmetro habilita o deshabilita el envo de redo logs a destinos remotos
y el recipiente de estos. Este parmetro tiene varios atributos pero el que utilizaremos ser el siguiente:
DG_CONFIG especifica hasta 30 nombres de bases de datos nicas (Definidas con el parmetro
DB_UNIQUE_NAME) para todas las bases de datos en tu configuracin de Data Guard. [5]
Se establece los destinos de los archivos remotos. En este caso se utiliza flash recovery rea para la
ubicacin local.
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

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 parmetro tiene varios atributos que son necesarios para configurar tu ambiente de Dataguard:
ASYNC (Default): Los datos generados de redo por transaccin no tienen que haber sido recibidos
en cada uno de los destinos habilitados antes de cometerse sta.
SYNC: Los datos generados de redo por transaccin 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 despus 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]

49

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



SQL>ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;
SQL>ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
SCOPE=SPFILE;

Adicionalmente a la configuracin previa es recomendable estar seguro de que la base de datos primaria esta
lista para cambiar de rol y convertirse en una secundaria.
SQL>ALTER SYSTEM SET FAL_SERVER=DB11G_STBY;
SQL>ALTER SYSTEM SET DB_FILE_NAME_CONVERT='DB11G_STBY','DB11G'
SCOPE=SPFILE;
SQL>ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u01/app/oracle/flash_recovery
_area/DB11G_STBY','/u01/app/oracle/flash_recovery _area/DB11G' SCOPE=SPFILE;
SQL>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

Recordar que se debe reiniciar para que algunos parmetros tengan efecto.

Configuracin del servicio
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 continuacin se muestran las entradas para
este ejercicio:

50

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=/

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

Crear un Controlfile y PFILE para la base de datos secundaria:
Crear control file para la base de datos secundaria usando el siguiente comando:
SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/db11g_stby.ctl';
Crear el archivo de parmetros (PFILE) para la secundaria:
SQL>CREATE PFILE='/tmp/initDB11G_stby.ora' FROM SPFILE;
Una vez creado el archivo de parmetros, 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.
Se deben crear los standby redo logs de la siguiente manera:


51
SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 52428800;
SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo02.log') SIZE 52428800;
SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo03.log') SIZE 52428800;
SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo04.log') SIZE 52428800;




CONFIGURACIN MANUAL DE LA BASE SECUNDARIA
Verificar la configuracin de listener.ora y tnsnames.ora, debern contener la siguiente configuracin:
Listener.ora


Tnsnames.ora

52


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 configuracin de la base de datos primaria hacia la secundaria.
#Control File
$ scp oracle@dga1:/tmp/db11g_stby.ctl /u01/app/oracle/oradata/DB11G/control01.ctl
$ cp /u01/app/oracle/oradata/DB11G/control01.ctl
/u01/app/oracle/flash_recovery_area/DB11G/control02.ctl

#Archivo de parametros
$ scp oracle@dga1:/tmp/initDB11G_stby.ora /tmp/initDB11G_stby.ora
#Archivo de contrasea.
$ scp oracle@dga1: /u01/app/oracle/product/11.2.0/db_1/dbs/orapwDB11G
/u01/app/oracle/product/11.2.0/db_1/dbs
Es recomendable desactivar el firewall o aadir una regla de permitir escuchar por el puerto 22, ya que SCP
usa ese puerto para el copiado seguro (Secure CoPy).
Iniciar listener
Asegurarse de que el listener de la base de datos secundaria es iniciado.

53
$ lsnrctl start
Restaurar copia de seguridad
Crear el SPFILE a partir del PFILE
$ export ORACLE_SID=DB11G
$ sqlplus / as sysdba

SQL> CREATE SPFILE FROM PFILE='/tmp/initDB11G_stby.ora';

Restaurar los archivos de copia de seguridad.
$ export ORACLE_SID=DB11G
$ rman target=/

RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;

Verificar que el db_name y db_unique_name esten de la siguiente manera:

Crear los Redo Logs

Crear los online redo logs para la base secundaria

SQL>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
SQL>ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo01.log')
SIZE 52428800;

54
SQL>ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo02.log')
SIZE 52428800;
SQL>ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo03.log')
SIZE 52428800;
SQL>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
Despus de crear los online redo logs, se deben crear los standby redo logs

SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 52428800;
SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo02.log') SIZE 52428800;
SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo03.log') SIZE 52428800;
SQL>ALTER DATABASE ADD STANDBY LOGFILE
('/u01/app/oracle/oradata/DB11G/standby_redo04.log') SIZE 52428800;
Una vez completado esto, podemos empezar el proceso de aplicacin.

Inicie el proceso de aplicacin en el servidor secundario

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM
SESSION;

Si se necesita cancelar el proceso de aplicacin, se debe ejecutar el siguiente comando:

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

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.

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DELAY 30
DISCONNECT FROM SESSION;

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY
DISCONNECT FROM SESSION;
Prueba de registros de transporte [7]

En el servidor principal, consultar las ltimas novedades de redo log archivados y forzar un cambio de
registro.

55

SQL>ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

SQL>SELECT sequence#, first_time, next_time FROM v$archived_log ORDER BY sequence#;

SQL>ALTER SYSTEM SWITCH LOGFILE;

Compruebe el nuevo redo log archivados ha llegado al servidor en espera y se han aplicado.

SQL>ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

SQL>SELECT sequence#, first_time, next_time, applied FROM v$archived_log ORDER BY
sequence#;




Modo de proteccin

Cada vez que configuramos un Data Guard (StandBy mas envo de archives automticos) siempre vamos a
quedar enmarcados en unos de estos tipos de disponibilidad de la StandBy :


MAXIMA PROTECCION (MAXIMUM PROTECTION)
MAXIMA DISPONIBILIDAD (MAXIMUM AVAILABILITY)
MAXIMA PERFORMANCE (MAXIMUM PERFORMANCE)

Con los 3 modos siempre estamos protegiendo los datos, pero la gran diferencia est en cmo acta la base
de datos primaria cuando la StandBy tiene problemas.

MAXIMA PROTECCION (MAXIMUM PROTECTION)

Este modo garantiza que no hay perdida de datos si la base de datos primaria falla

Con este nivel de proteccin 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 adems en los redo de stanby de esa Standby slo 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 mxima proteccin , basta que los redo data sean escritos en 1 de ellas,
para que la base de datos productiva siga arriba.


MAXIMA DISPONIBILIDAD (MAXIMUM AVAILABILITY)

Este modo de proteccin no afecta la base de datos y proporciona un alto nivel de proteccin de los datos,
tal cual en el modo de mxima proteccin, 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 ms de una)
Si no se puede escribir el redo data, en por lo menos una StandBy , la base de datos primaria no se cae.


56
MAXIMA PERFORMANCE (MAXIMUM PERFORMANCE)

Este modo de proteccin 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 slo
cuando la transaccin llega a los redo locales.
Este modo se debiese usar cuando la red haca la StandBy no es lo suficientemente ptima y se producen
delays al momento de traspasar paquetes a travs de TCP.
De forma predeterminada, con la creacin de una base de datos en espera, la base de datos primaria est en
modo de rendimiento mximo.

SQL>SELECT protection_mode FROM v$database;

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

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;

Mximo rendimiento.

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

Mxima proteccin.

SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
SQL>ALTER DATABASE OPEN;

57

Base de datos de conmutacin (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 ejecucin sin prdida de datos o restablecimiento de registros
redo. Este proceso se conoce como conmutacin (switchover) y puede llevarse a cabo mediante las
siguientes declaraciones

Convertir base de datos primaria a secundaria.

SQL>CONNECT / AS SYSDBA
SQL>ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY;

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP NOMOUNT;
SQL>ALTER DATABASE MOUNT STANDBY DATABASE;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM
SESSION;

Convertir la base de datos standby original a primaria.

SQL>CONNECT / AS SYSDBA
SQL>ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

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.

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
SQL>ALTER DATABASE ACTIVATE STANDBY DATABASE;

Dado que la base de datos standby es ahora la base de datos principal debe estar respaldada
inmediatamente.


58
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 continuacin, esto se puede hacer con relativa facilidad
(que se muestra aqu). De lo contrario, todo el proceso de instalacin se deben seguir, pero esta vez
utilizando el servidor principal original como el modo de espera.

Base de datos standby de solo lectura (Read-Only Standby)

Una vez que se ha configurado una base de datos standby, se puede abrir en modo de slo lectura para
permitir el acceso de consulta. Esto se utiliza a menudo para descargar informacin del servidor standby
para conseguir ms recursos en el servidor principal. Cuando se abre en modo de slo lectura, el envo de
archive log contina, pero la recuperacin gestionada se detiene, por lo que la base de datos standby se
convierte cada vez ms obsoleta hasta que se reanude la recuperacin gestionada (managed recovery).
Para cambiar la base de datos a solo lectura haga lo siguiente:

SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE OPEN READ ONLY;


Para reanudar la recuperacin gestionada (managed recovery) haga lo siguiente:

SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM
SESSION;

En 11g, Oracle introdujo la caracterstica Active Data Guard. Esto permite que la base de datos en espera
de ser abierto en modo de slo lectura, pero an se aplica la informacin de los redo. Esto significa que una
base de datos stanby puede estar disponible para la consulta, y aun as estar al da o actualizada. Hay
implicaciones de licencia para esta funcin, pero los siguientes comandos muestran cmo Active Data
Guard se puede activar:
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE OPEN READ ONLY;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM
SESSION;




59










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 tcnico de Oracle: Oracle Data Guard 11g versin 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













60








61
SQL SERVER CLUSTER
Ana Rosa Rosales Mancia
Silvia Yessenia Argueta Campos

OBJETIVOS
o Conocer el funcionamiento del clster en SQL Server, la configuracion necesaria.
o Identificar las ventajas que ofrece la implementacion de un cluster de conmutacion por
error.
o Implementar un cluster en una red local.

INTRODUCCION
SQL Server Cluster ofrece alta disponibilidad, escalabilidad y alto rendimiento. Esta compuesto por nodos
activo pasivo lo ms recomendable es configurar mximo tres nodos. La construccin de los ordenadores
del clster es ms fcil y econmica debido a su flexibilidad: pueden tener toda la misma configuracin de
hardware y sistema operativo (clster homogneo), diferente rendimiento pero con arquitecturas y sistemas
operativos similares (clster semihomogneo), o tener diferente hardware y sistema operativo (clster
heterogneo), lo que hace ms fcil y econmica su construccin.

CONCEPTOS BASICOSSQL SERVER

SQL Server es un conjunto de objetos eficientemente almacenados. Los objetos donde se almacena la
informacin se denominan tablas, y stas a su vez estn 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 administracin de los recursos que el ordenador nos proporciona y los
gestiona para un mejor rendimiento de la base de datos. Una buena instalacin y configuracin de SQL
Server, y sobre todo una buena administracin 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 mquina estn aprovechadas al mximo.

CLSTER

El trmino clster se aplica a los conjuntos o conglomerados de computadoras construidos mediante la
utilizacin de hardware comn y que se comportan como si fuesen una nica computadora. Hoy en da
desempean un papel importante en la solucin de problemas de las ciencias, las ingenieras y del comercio
moderno. Simplemente, un clster es un grupo de mltiples ordenadores unidos mediante una red de alta
velocidad, de tal forma que el conjunto es visto como un nico ordenador, ms potente que los comunes de
escritorio. Los clsteres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por

62
encima de la que es provista por un solo computador tpicamente siendo ms econmico que computadores
individuales de rapidez y disponibilidad comparables. La construccin de los ordenadores del clster es ms
fcil y econmica debido a su flexibilidad: pueden tener toda la misma configuracin de hardware y sistema
operativo (clster homogneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares
(clster semihomogneo), o tener diferente hardware y sistema operativo (clster heterogneo), lo que hace
ms fcil y econmica su construccin. Para que un clster funcione como tal, no basta solo con conectar
entre s los ordenadores, sino que es necesario proveer un sistema de manejo del clster, el cual se encargue
de interactuar con el usuario y los procesos que corren en l para optimizar el funcionamiento.

CLASIFICACIN DE LOS CLSTER

Alto rendimiento:
Son clsteres 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
clster por largos periodos de tiempo.

Alta disponibilidad:
Son clsteres cuyo objetivo de diseo es el de proveer disponibilidad y confiabilidad. Estos clsteres tratan
de brindar la mxima 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 clsteres cuyo objetivo de diseo 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 clster no es
considerado un gran problema.

VENTAJAS DE USAR CLSTER
De un clster se espera que presente combinaciones de los siguientes servicios:Alto rendimientoAlta
disponibilidadBalanceo de cargaEscalabilidad

CONFIGURACION DE UN CLUSTER DE CONMUTACION POR ERROR
1-CONFIGURACION DEL SERVIDOR DNS


63
Para configurar el servidor DNS click-> Administrador de servidor ->Agregar roles


Seleccionar la caracteristica de Servidor de dominio de Active Directory luego siguiente



Hacer click en siguiente


64


Hacer click en el boton instalar



Esperar unos minutos mientras se instala


65


Click en el botn cerrar



66
Aqu ya se tiene la caracterstica 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 aplicacin dcpromo.exe


Aparecera un asistente para crear el nuevo bosque click-> Siguiente



Seleccionar un nuevo bosque click->siguiente


67


Escribir el nombre del bosque a crear click-> siguiente



Seleccionar la versin del Windows server en este caso Windows server 2008 r2 click ->siguiente


68


Escribir la contrasea de administrador del dominio




Para finalizar muestra resumen del dominio a crear luego de hacer estas configuraciones hay que reiniciar la
computadora.


69


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



70


Colocar la contrasea 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.



71
2 -CONFIGURACION DEL SERVIDOR DE ALMACENAMIENTO ISCSI

El servidor de dns y almacenamiento estn 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
continuacin:

Click -> siguiente a todas las opciones dejar los valores por defecto.




Y esperamos que se instale.


72


Luego de instalar esta aplicacin 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



Seleccionar un nuevo bosque click->siguiente


73


Escribir el nombre del bosque a crear click-> siguiente



Seleccionar la versin del Windows server en este caso Windows server 2008 r2 click ->siguiente


74


Escribir la contrasea de administrador del dominio




Para finalizar muestra resumen del dominio a crear luego de hacer estas configuraciones hay que reiniciar la
computadora.


75


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



76


Colocar la contrasea 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.



77


2 -CONFIGURACION DEL SERVIDOR DE ALMACENAMIENTO ISCSI

El servidor de dns y almacenamiento estn 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
continuacin:

Click -> siguiente a todas las opciones dejar los valores por defecto.




Y esperamos que se instale.


78


Luego de instalar esta aplicacin 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





79
El cual abre un asistente como la figura siguiente click ->siguiente


Escribimos el nombre del destino una breve descripcin y damos 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.

80





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
accin:

81

Seleccionamos siguiente y colocamos el nombre del disco virtual con extencion y seleccionamos siguiente.



Luego colocamos el tamao del disco en MB. Seleccionamos siguiente.





82
Se finalza el asistente estos mismos pasos hay que realizar todos los discos virtuales a utilizar en este caso
creamos tres.




esta imagen muestra el disco virtual creado.





83
Ahora que ya se tiene el almacenamiento procedemos a realizar la conexin 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:




Colocamos la ip del servidor de almacenamiento click-> conexin rpida y aparecer conectado.

Luego click-> En la pestaa volmenes y dispositivos ->Autoconfigurar aparecern todos los discos
virtuales creados como se muestra a continuacin.


84



Luego le damos aceptar y listo ya se tiene la conexin con el servidor estos mismos pasos hay que realizar
en el otro nodo.

Ahora hay que poner en lnea estos discos esto se realiza siempre en el nodo 1.

Click ->Inicio ->Administrador de servidor ->Almacenamiento ->Administracin de dispositivos.

Aqu se muestran los discos virtuales hay que dar click derecho sobre cada uno de ellos y ponerlos en lnea,
luego dar formato y listo.



85



Ya se tiene el almacenamiento para el cluster.




3-CONFIGURACION DE CLUSTER DE WINDOWS.

Para poder realizar una configuracin de cluster de conmutacin por error es necesario instalar esa
caracterstica en todos los nodos. Para ello hay que seguir los siguientes pasos:

Click -> Administrador de servidor -> Caracteristicas ->Agregar caractersticas

Seleccionar cluster de conmutacin por error.


86



Y click en instalar




Ya que tenemos instalada la caracterstica damos click -> Inicio ->Administrador de cluster de conmutacin
por error damos click -> crear cluster.

87




Nos pedir ingresar los nombres de los nodos




Damos click -> siguiente

88




Realiza la confirmacin de los datos click ->siguiente






89
Realiza todos las validaciones si da algn error no se puede continuar, esto tarda varios minutos en
completarse.



Si todo est bien muestra el resumen le damos finalizar


.

Luego de haber realizador las validaciones se pasa al siguiente cuadro de dialogo:
Aqu colocamos el nombre del cluster y la direccin ip.

90




Finalizamos la creacin del cluster





91
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 direccin ip, damos siguiente
y finalizamos.




92


Ya tenemos toda la configuracin del cluster de conmutacin por error a nivel del sistema operativo solo
falta configurar el SQL server.





4-CONFIGURACION DE CLUSTER DE CONMUTACIN POR ERROR EN SQL SERVER.

Ejecute setup.exe desde el disco de instalacin de SQL Server para iniciar el Centro de instalacin. Haga
click ->Instalacion->Nuevo sql server de conmutacin por error





93
En el cuadro de dilogo Configuracin de las Reglas de Apoyo, validar que los controles devolver resultados
exitosos y haga click en Siguiente.





En el cuadro de dilogo Condiciones de Licencia, haga click en Acepto los trminos de la licencia casilla de
verificacin y haga clic en Siguiente.


94



En el cuadro de dilogo Configuracin de Apoyo a las Reglas, haga clic en Instalar. Validar que los controles
devolver resultados exitosos. Si los cheques devueltos algunas advertencias, asegrese de corregirlos antes
de proceder con la instalacin. Haga clic en Siguiente para continuar.



95


En el cuadro de dilogo Seleccin de caractersticas, seleccione slo los componentes que desea instalar.
Haga clic en Siguiente.




En el cuadro de dilogo Configuracin 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 seleccin si se trata
de una instancia predeterminada o con nombre. En este ejemplo, la instancia por defecto se selecciona


96



Un par de cosas Hay que destacar en esta seccin. De forma predeterminada, el nombre de instancia se
utiliza como identificador de la instancia. Esto se utiliza para identificar los directorios de instalacin y las
claves del registro para la instancia de SQL Server y es til cuando se desea ejecutar varias instancias en un
clster. Este es el caso para las instancias predeterminadas y las instancias con nombre. Para una instancia
predeterminada, el nombre y el identificador seran MSSQLSERVER. Para utilizar un identificador de
instancia no predeterminado, se debe seleccionar la casilla de identificador de instancia y especifique un
valor.


97



En el cuadro de dilogo Requisitos de espacio en disco haga clic en Siguiente.

En el cuadro de dilogo Grupo de recursos de clster, consulte los recursos disponibles en Windows Server
2008 de clster. Esto le dir que un grupo de recursos se crear en el clster de SQL Server. Para especificar
el clster 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.


98



En el cuadro de dilogo de seleccin de disco de clster, seleccione los grupos de discos que estn
disponibles en el clster de SQL Server 2008 para su uso. Haga click en Siguiente.




99

En el cuadro de dilogo Configuracin de red de clster, escriba la direccin IP y la mscara de subred que
el clster de SQL Server 2008 va a utilizar. Desmarque la casilla bajo la columna de DHCP que va a utilizar
direcciones IP estticas. Si no ha deshabilitado los adaptadores y protocolos IPv6, que sera mejor para
desactivar la fila para IPv6




En el cuadro de dilogo Directiva de seguridad del clster, acepte el valor por defecto de uso de los
servicios SID (recomendado).



100


En el cuadro de dilogo Configuracin del servidor, escriba las credenciales que se utilizarn para sus
cuentas de servicio de SQL Server en la ficha Cuentas de servicio. En la ficha Clasificacin, seleccione la
intercalacin apropiada para ser utilizada por SQL Server. Tenga en cuenta que el tipo de inicio est
establecido en manual para todos los clsteres de servicios y no se puede cambiar durante el proceso de
instalacin. Haga clic en Siguiente.



En el cuadro de dilogo Configuracin de Database Engine, seleccionar el modo de autenticacin
apropiado. Si desea agregar el usuario actualmente conectado a formar parte del grupo de administradores
de SQL Server, haga clic en el botn Agregar usuario actual.


101



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.




En el error y la caja de dilogo de informes de uso, haga clic en Siguiente.

102




En el cuadro de dilogo Reglas de instalacin del clster, compruebe que todas las comprobaciones son
correctas y haga clic en Siguiente.


103



En la pgina Preparado para instalar el cuadro de dilogo, compruebe que todas las configuraciones son
correctas. Haga clic en Siguiente.



104


En el cuadro de dilogo completo, haga clic en Cerrar. Con esto concluye la instalacin de un clster de
conmutacin por error de SQL Server 2008




En la realizacin de una correcta instalacin y configuracin del nodo, ahora tiene una instancia de
conmutacin por error del clster completamente funcional.
Ahora falta agregar un nuevo nodo los pasos son muy parecidos ya que so le especificamos el cluster de
conmutacin por error al queremos pertenecer y la instancia.


105

Para poder desarrollar un cluster de conmutacin 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.
PUEDES VISITAR NUESTRO VIDEO PARA MAYOR INFORMACION AQUI:
http://youtu.be/Ljwz9GvV8_o
BIBLIOGRAFIA:
o Microsoft documentacion, visitado dia 10 de abril de 2013 http://technet.microsoft.com/es-
es/library/cc730692.aspx.
o Microsoft, visitado 16 de abril de 2013 http://msdn.microsoft.com/es-
es/library/ms189134%28v=sql.90%29.aspx
o SlideShared, visitado 16 abril de 2013 http://www.slideshare.net/javacero/presentacin-de-
cluster-de-w2008-r2-cluster-de-conmutacin-por-error-por-francisco-javier-acero-
lucena.aspx
o Scribd, visitado 16 de abril de 2013 http://es.scribd.com/doc/84699812/Agregar-
almacenamiento-a-un-cluster-de-conmutacion-por-error.html
o Youtube.com, visitado 20 de abril de 2013
http://www.youtube.com/watch?v=Q5x0D79afRM




106
Clster en MySQL
Luis Josu Chvez Vigil, Josu Daniel Orellana Aguirre, Erick Stanley Cruz Martnez

Objetivos:
Conocer el funcionamiento del clster en MySQL, as como de la manera de configurarlo en una
red local, adems de distinguir los elementos que lo conforman.
Identificar las caractersticas, requerimientos hardware/software, ventajas y desventajas de un
clster MySQL.
Definir lo que es un clster, as como los diferentes tipos de nodos que el clster MySQL maneja, y
adems, aprender la manera correcta de configuracin.

Introduccin:

MySQL Cluster es la versin de MySQL pensada para alta disponibilidad, escalabilidad y alto rendimiento.
Un MySQL server que es parte de un MySQL Clster difiere slo en un aspecto de un servidor MySQL
normal (no clster), en que emplea el motor NDB Clster.

Este motor tambin se conoce simplemente como NDB, y las dos formas del nombre son sinnimas.
Desde que MySQL server es parte del clster, necesita datos de configuracin que sepa cmo acceder al
nodo MGM para obtener datos de configuracin del clster.

El comportamiento por defecto es buscar el nodo MGM en localhost. Sin embargo, puede necesitar
especificar su localizacin donde se encuentre, esto puede hacerse en my.cnf o en la lnea 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 Bsicos:
Clster: Grupo de mltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el
conjunto es visto como un nico ordenador, ms potente que los comunes de escritorio.


107
De un clster se espera lo siguiente:
Alto rendimiento
Alta disponibilidad
Equilibrio de carga
Escalabilidad

Una de las ventajas de MySQL Clster es que puede ejecutarse en hardware normal sin ningn
requerimiento especial, aparte de grandes cantidades de RAM, debido al hecho que todos los datos se
almacenan en memoria.

Caractersticas:
Para comunicacin entre nodos, el clster soporta red TCP/IP en cualquier topologa estndar, y como
mnimo se espera una red 100 Mbps Ethernet, ms un switch, hub, o router para proporcionar conectividad
de red al clster entero. Recomendamos que MySQL Clster se ejecute en su subred que no est compartida
con mquinas no-clster por las siguientes razones:

Seguridad: La comunicacin entre nodos del clster no est cifrada. La nica forma de proteger
transmisiones dentro de un MySQL Clster es ejecutar su clster en una red protegida.
Eficiencia: Inicializar un MySQL Clster en una red privada o protegida permite que el clster
haga uso exclusivo del ancho de banda entre mquinas del clster.

ndbd_mgm.
Es el nodo de Management. Tiene la configuracin del clster. No es necesario ms de uno, pero consume
tan poco que se pueden tener dos. Nosotros lo usamos para lanzar backups, reiniciar nodos, activar el log
adems, los nodos ndbd lo usan al entrar en el clster para recoger la configuracin

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 mltiples
cores, el demonio ser ndbmtd mysqld. Al clster se puede acceder usando la API o mediante un servicio.
mysqld:
Al menos debemos tener dos nodos mysqld o tendremos un SPOF

Desventajas:
La configuracin y puesta en marcha difiere completamente de la versin estndar de la base de
datos.

108
Requiere gran cantidad de memoria RAM.
ndices en RAM siempre.
Datos en RAM o en disco duro.
El engine es ndbclster, no se puede usar InnoDB o MyISAM en clster.
No es una base de datos de propsito 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 ms barata montando un ndb_mgmd en cada mysqld
2 ndbd
2 mysqld + ndb_mgmd



109
Topologa:



Hardware:
3 COMPUTADORAS CON WINDOWS 7
MYSQL CLSTER EN C/U DE PC
SWITCH
CABLES DE RED


Archivos de Configuracin:
ndb_mgm
config.ini

Ac estan las configuraciones para el manejo de nodos. Dentro se encuentra los datadir y los database.

En el database se encuentran los binarios y archivos de configuracion para la ejecucin correcta de
config. En el datadir se hace referencia a los logs que arroja el clster.


110
ndbd

Se arranca desde los binarios alojados en el directorio /mysqlc/bin/ndbd -c 192.168.4.1:1186

mysqld

Se configura el my.cnf el cual es el encargado de enlazar el nodo de MySQL al nodo de administrador,
soportando el engine ndbclster.

Procedimiento:

Descargamos el cluster mysql de la siguiente direccin: http://dev.mysql.com/downloads/cluster/

Definimos nuestro sistema operativo y descargamos:


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:


111



Arrancar Cluster
c:/mysql/bin/ndb_mgmd -f conf/config.ini --initial --configdir=c:\my_cluster\conf\

Mostrar los nodos conectados al administrador
c:\mysql\bin\ndb_mgm -e show

Arrancar todo
start /B c:\Users\"Chavez Vigil"\mysql\bin\ndbd -c localhost:1186

Arrancando mysql
start /B c:\Users\"Chavez Vigil"\mysql\bin\mysqld --defaults-file=conf\my.ini
c:\Users\"Chavez Vigil"\mysql\bin\mysql -h 127.0.0.1 -P5000 -u root

Apagando servicios
c:\Users\"Chavez Vigil"\mysql\bin\mysqladmin -u root -h 127.0.0.1 -P5000 shutdown
c:\Users\"Chavez Vigil"\mysql\bin\ndb_mgm -e shutdown
C:\Users\Chavez Vigil\my_cluster\ndb_data

Pasos a seguir:

Cree las siguientes carpetas en el directorio raz del sistema. Para ello abrimos cmd y presionamos
Ctrl+Shift+Enter para abrirlo en modo administrador:

112


Creamos una nueva carpeta llamada mysql:



Cuando descargamos el cluster desde el enlace mostrado anteriormente y lo descomprimimos, el contenido
de la carpeta que se crea cuando se descomprime lo copiamos completamente en la carpeta mysql que
acabamos de crear:




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

114

[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:


115


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.

Despus del reinicio abrimos como administrador la consola y arrancamos el cluster:



Abrimos una nueva consola y ejecutamos netstat h para verificar si esta corriendo el cluster:


116


En este momento ya est escuchando peticiones de los nodos de datos. En la misma terminal ejecutamos:



Con el comando show mostramos los nodos de datos conectados:



Por el momento NO tenemos nodos de datos conectados. Avanzando un poco, esto deberamos ver
cuando los nodos de datos estn conectados. Note que estn conectados con las ip que le definimos en el
archivo de configuracin:


117


Ahora pasamos a la configuracin de los nodos de datos. Esto se har en cada mquina 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:



118

En sntesis, lo que este archivo significa es que el nodo mysql ocupar el motor ndbcluster para conectarse
al nodo de administrador a travs del puerto 4002, la cadena de conexin muestra la ip del administrador y
el mysql_cluster se encontrar tambin en la misma mquina 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 comunicacin.

Arrancamos el nodo de datos:



Vemos si el servicio esta corriendo:



Iniciamos el nodo mysql:



Nos conectamos a una instancia mysql (hacemos constar que NO esta mysql instalado en ninguna PC):

119



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:


120


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:



Ahora insertamos un alumno nuevo y describimos la tabla:


121


Bibliografa
MySQL, obtenida el 26 de abril de 2013, de
http://downloads.mysql.com/tutorials/cluster/mysql_wp_cluster_quickstart_windows.pd
f
Uv.mx, obtenida el 26 de abril de 2013, de
http://www.uv.mx/personal/lizhernandez/files/2013/04/Comandos-mysql.pdf
Manuales Guebs.com, obtenida el 27 de abril de 2013, de http://manuales.guebs.com/mysql-
5.0/ndbcluster.html#mysql-cluster-configuration
Slideshare Base de Datos MySQL, obtenida el 27 de abril de 2013, de
http://www.slideshare.net/miguelangelnieto/mysql-high-availavility-load-balacing-cluster
Scribd Qu es un CLUSTER?, obtenida el 27 de abril de 2013, de
http://es.scribd.com/doc/6858172/QUE-ES-UN-CLUSTER




122
Sincronizacin de Bases de Datos en Nube
Gonzlez Martnez Mauricio Antonio, Ramrez Reyes Heysel Yanira, Zometa Sanchez Henry Mauricio


Objetivos
Conocer e implementar el uso de bases de datos en la nube como un mecanismo de sincronizacin.
Conocer las ventajas y desventajas que tiene el uso de bases de datos en la nube.
Utilizar los servicios de sincronizacin que provee Sql Azure.

Conceptos
Qu es la sincronizacin de Bases de Datos en Nube?
La sincronizacin de bases de datos en nube es el mecanismo de mantener la misma versin de datos en
mltiples dispositivos a travs de un servidor alojado en internet.
La sincronizacin en la nube consiste en un grupo de servidores alojados en internet encargados de atender
las peticiones en cualquier momento. Se puede tener acceso a su informacin o servicio, mediante una
conexin a internet desde cualquier dispositivo mvil o fijo ubicado en cualquier lugar. Sirven a sus usuarios
desde varios proveedores de alojamiento repartidos frecuentemente por todo el mundo. Esta medida reduce
los costes, garantiza un mejor tiempo de actividad y que los sitios web sean invulnerables a los hackers, a los
gobiernos locales y a sus redadas policiales.


Ventajas:
Integracin con facilidad y rapidez.
Prestacin de servicios a nivel mundial.
Actualizaciones automticas.
Reduccin de equipos.
Comodidad y Accesibilidad inmediata a los datos.

Desventajas:
La disponibilidad de las aplicaciones est ligada a la disponibilidad de acceso a Internet.
Los datos "sensibles" de la empresa no residen en sus instalaciones.
La confiabilidad de los servicios depende de la "salud" tecnolgica y financiera de los proveedores
de servicios en nube.

123
Escalabilidad a largo plazo. A medida que ms 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.


Qu es Windows Azure?
Windows Azure (anteriormente Azure Services Platform) es una plataforma ofrecida como servicio y alojada
en los Data Centers de Microsoft.

Una ventaja aadida 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 vlidos. 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 caractersticas de SQL Server que SQL Azure no soporta, pero si soporta todas las
ms usadas:

Tablas, tablas temporales, vistas, ndices, roles, procedimientos almacenados y funciones.
Consultas complejas y joins entre mltiples tablas.
Insert, update y delete.
Restricciones
Transacciones

Entre las caracteristicas no soportadas cabe destacar:

Transacciones distribuidas
El broker de mensajes de SQL Server
Consultas a servidores remotos
Acceso desde tecnologas antiguas, ya obsoletas, en concreto OleDb, etc.



124
Sincronizacin con Windows Azure
Con la aparicin 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 rgimen de pago por uso, sino
tambin 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 ubicacin
fsica diferente a la empresarial. Asimismo, aquellas aplicaciones que cuenten con usuarios mviles, o que
necesiten proporcionar parte de la informacin a proveedores o clientes a travs de Internet, son buenas
candidatas para sincronizar con los servidores de SQL Server on-premise.
Las bases para la sincronizacin: SQL Azure Data Sync
Microsoft Data Sync es el marco de trabajo que nos proporciona la infraestructura necesaria para realizar
este tipo de sincronizaciones, permitindonos centrarnos solo en la parte ms relacionada con el negocio y
abstrayendo la parte ms "de detalle" del proceso.

Es un servicio de sincronizacin de datos en la nube basada en las tecnologas de Microsoft Sync
Framework. SQL Azure Data Sync permite crear y programar sincronizaciones peridicas entre SQL Azure
y SQL Server (local) u otras bases de datos de SQL Azure. Proporciona sincronizacin bidireccional de
datos y las capacidades de gestin de datos permite que los datos que se pueden compartir fcilmente a
travs de bases de datos SQL Azure en mltiples centros de datos.


Requisitos para el uso de SQL Azure Data Sync
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
ID ir a la pgina de Windows Live y registrarse.
Tener una cuenta de Windows Azure activa. Si no tiene una cuenta de Windows Azure ir a la pgina de
inicio de Windows Azure y regstrate o aplicar a la evaluacin gratuita de 90 das.
Tener una suscripcin 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 replicacin 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

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

Instalar el Client Agent
Instale el software requerido

.NET Framework 4.0
Microsoft SQL Server 2008 R2 SP1 System CLR Types (x86)
Microsoft SQL Server 2008 R2 SP1 Shared Management Objects (x86)

Para lograr la sincronizacin 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 sincronizacin de la base de datos
local.

Una vez instalado el software requerido procedemos a la Instalacin de Microsoft SQL Data Sync Agent
Preview como se muestra en las siguientes imgenes:





126
Introducir un nombre de usuario y una contrasea


Elegir el directorio donde se va a instalar. A continuacin solo dar click en siguiente hasta finalizar.



127

Procedimiento para la Sincronizacin en Windows Azure con Data Sync

Entrar a la Base de Datos usando la autenticacin de Windows


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.



128

Dirigirse al sitio web de Windows Azure cuya direccin es www.windowsazure.com/es-es/ dentro del sitio
de Azure dar clic en la opcin de Portal




Iniciar sesin con nuestra cuenta de correo electrnico y la contrasea.




Aparecer el portal de Windows Azure con todos sus servicios.


129





En el panel izquierdo damos clic en Bases de Datos SQL para crear una nueva base de datos






130
Ahora creamos un Servidor dando clic en la opcin SERVIDORES




Dar clic en la opcin Crear un servidor de Bases de Datos SQL




Ingresamos el nombre del servidor, la contrasea de acceso al mismo y la regin que este mas cerca a
nuestra zona. La contrasea debe contener letras maysculas, minsculas y nmeros. Despus de llenar los
campos damos clic en el cheque o Aplicar.


131



Una vez creado el servidor aparece en el panel inicial, ahora vamos a crear la base de datos dando clic en
BASE DE DATOS




Dar clic en Crear una Base de Datos SQL


132



Se coloca el nombre de la Base de Datos, se define que es una edicin web, se asigna el tamao de
capacidad de almacenamiento, se define el tipo de lenguaje que se utilizara y por ltimo se le indica que
pertenecer al servidor que recin acabamos de crear. Luego dar clic en Aplicar




Para administrar la Base de datos damos clic en Administrar


133



Espera un momento mientras se carga el portal de administracin. Iniciar sesin con el nombre de la Base
de Datos, el nombre de Usuario y Contrasea del servidor, luego dar clic en Iniciar Sesin



Una vez cargado el modulo de administracin dar clic en Disear


134


Hay dos formas de crear una tabla:

PRIMERA - Mediante una nueva consulta sql.

1.- Dar clic en la opcin Nueva que se encuentra en parte superior.
2.- En el apartado se introduce el cdigo para crear una tabla la cual tiene que ser exactamente igual a la
creada en la Base de Datos del Servidor local.
3.- Dar clic en Ejecutar y aparecer un mensaje que nos indica que la tabla se ha creado con xito.
4.- Volvemos al panel de Disear y damos clic en Actualizar
5.- Aparecer la tabla con todos sus campos creados.






135
SEGUNDA - Con el diseador.

1.- Dar clic en Nueva Tabla
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.
3.- Clic en Guardar y aparecer la nueva tabla creada








136

Lo que sigue es crear el Agente de Sincronizacin. Dirigirse a la parte inferior del panel y dar clic en la
opcin Agente de Sincronizacin, luego elegir Nuevo Agente de Sincronizacin.




Agregar un nombre al Nuevo Agente de Sincronizacin y una Contrasea, luego dar clic en Aplicar





137
Lo que sigue es crear una clave de identificacin con la cual se podr tener acceso a la Base de Datos que se
encuentra en Azure.




Dar clic en el botn Generar y luego en la opcin 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 contrasea generada con el Agente de Sincronizacion


138



Para comprobar la conexin se hace un ping de servicio haciendo clic en Ping Sync Service, si todo esta bien
aparecer un mensaje indicando el resultado positivo de conexin.




A continuacin se hace el registro del servidor y de la Base de Datos que vamos a sincronizar dando clic en
Register. Seleccionar la autenticacin 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
corroborndolo


139



Lo siguiente es crear un grupo de Sincronizacion, dicho grupo contendr las bases de datos que participaran
en la sincronizacin. En el panel principal de Windows Azure dar clic en Agente de Sincronizacin luego
elegir la opcin Nuevo Grupo de Sincronizacin





140
Agregar un nombre al nuevo Grupo de Sincronizacin y seleccionar la regin, luego clic en la flecha
siguiente

Seleccionar la ubicacin de la Base de Datos Central, introducir el nombre de usuario y contrasea de la
misma. Dar 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 botn Siguiente.

141


Lo que sigue es crear las reglas de sincronizacin. 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.

142


Una vez creada la regla, ir a la opcin CONFIGURAR ah se har lo siguiente:

1.- Activar el grupo de Sincronizacin.
2.- Definir cada cuanto se estarn actualizando los datos.
3.- Guardar la configuracin



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 direccin:
http://www.youtube.com/watch?v=r-hPtf_iLjU


143

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

145
Replicacin con SQL Server
Autores:

Cisneros Cente, Rolando Alexis
Ibarra Bonilla, Luis Armando
Orellana Hugo, Rosembel

Introduccin a la replicacin con SQL Server
La replicacin es un conjunto de tecnologas destinadas a la copia y distribucin de datos y objetos de
base de datos desde una base de datos a otra, para luego sincronizar ambas bases de datos y mantener su
coherencia. La replicacin permite distribuir datos entre diferentes ubicaciones y entre usuarios remotos
o mviles mediante redes locales y de rea extensa, conexiones de acceso telefnico, conexiones
inalmbricas e Internet.
La rplica tiene una analoga al sector editorial para representar los componentes de una topologa de
rplica, que incluyen el publicador, el distribuidor, los suscriptores, las publicaciones, los artculos y las
suscripciones. Resulta til pensar en la rplica de Microsoft SQL Server como si fuera una revista:
El publicador (editor) de una revista produce una o ms publicaciones.
Una publicacin contiene artculos.
El publicador distribuye la revista directamente o a travs de un distribuidor.
Los suscriptores reciben las publicaciones a las que se han suscrito.
Es importante sealar que la rplica de SQL Server incluye funciones como: la posibilidad de que un
suscriptor realice actualizaciones y de que un publicador enve cambios incrementales a los artculos de
una publicacin.
Existen varios procesos de rplica (denominados agentes) que son responsables de copiar y mover los
datos entre el publicador y los suscriptores. En la siguiente figura se muestra informacin general acerca
de los componentes y procesos que participan en la rplica.


146
Los elementos que participan en la replicacin Sql Server son los siguientes:

Publicador

Es una instancia de base de datos que permite que los datos estn disponibles para otras ubicaciones a
travs de la rplica. El publicador puede tener una o ms publicaciones, cada una de las cuales representa un
conjunto de objetos y datos relacionados lgicamente para replicar.

Distribuidor

Es una instancia de base de datos que funciona como almacn para datos especficos de rplica asociados
con uno o ms publicadores. Cada publicador est asociado con una sola base de datos (conocida como la
base de datos de distribucin) en el distribuidor. La base de datos de distribucin almacena los datos de
estado de la rplica, metadatos acerca de la publicacin 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 funcin del tipo de rplica elegida, el suscriptor tambin puede devolver
los datos modificados al publicador o volver a publicar los datos en otros suscriptores.

Artculo

Un artculo identifica un objeto de base de datos incluido en una publicacin. Una publicacin puede
contener diferentes tipos de artculos, como tablas, vistas, procedimientos almacenados y otros objetos.
Cuando las tablas se publican como artculos, se pueden usar filtros para restringir las columnas y filas de
datos que se envan a los suscriptores.

Publicacin

147

Es un conjunto de uno o ms artculos de una base de datos. La agrupacin de varios artculos en una
publicacin permite especificar ms fcilmente un conjunto de objetos y datos de bases de datos
relacionados lgicamente, que se replican como una unidad.

Suscripcin

Es una solicitud de una copia de una publicacin que se entrega a un suscriptor. La suscripcin define qu
publicacin se recibir, dnde y cundo. Hay dos tipos de suscripciones: de insercin y de extraccin.


Agentes necesarios para configurar apropiadamente la replicacin SQL Server

Agente SQL Server

El Agente SQL Server aloja y programa los agentes utilizados en la rplica, y proporciona una manera
sencilla de ejecutar los agentes de rplica. El Agente SQL Server tambin controla y supervisa las
operaciones fuera de la rplica.
De manera predeterminada, el servicio del Agente SQL Server est deshabilitado cuando se instala SQL
Server 2005, a menos que se elija explcitamente iniciar el servicio automticamente durante la instalacin.

Agente de instantneas

Por lo general, el Agente de instantneas se utiliza con todos los tipos de rplica. Prepara esquemas y
archivos de datos iniciales de tablas publicadas y otros objetos, almacena los archivos de instantneas y
registra la informacin acerca del estado de sincronizacin en la base de datos de distribucin. El Agente de
instantneas se ejecuta en el distribuidor.

Agente de registro del LOG


148
El Agente de registro del LOG se utiliza en la rplica transaccional. Mueve las transacciones marcadas para
rplica desde el registro de transacciones del publicador a la base de datos de distribucin. Cada base de
datos publicada con la rplica 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 distribucin

El Agente de distribucin se utiliza en la rplica de instantneas y transaccional. Aplica la instantnea inicial
al suscriptor y mueve las transacciones contenidas en la base de datos de distribucin a los suscriptores. El
Agente de distribucin se ejecuta en el distribuidor, para las suscripciones de insercin, o en el suscriptor,
para las suscripciones de extraccin.

Agente de mezcla

El Agente de mezcla se utiliza con la rplica de mezcla. Aplica la instantnea inicial al suscriptor, y transfiere
y reconcilia los cambios incrementales de datos que se producen. Cada suscripcin 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 insercin, o en el suscriptor, para las
suscripciones de extraccin. De forma predeterminada, el Agente de mezcla carga los cambios del suscriptor
al publicador y, a continuacin, descarga los cambios del publicador al suscriptor..

Agente de lectura de cola

El Agente de lectura de cola se utiliza con la rplica transaccional y la opcin de actualizacin 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 distribucin y del Agente de mezcla, slo existe una instancia del
Agente de lectura de cola para todos los publicadores y las publicaciones de una determinada base de datos.
Servicio SQL Server Browser
El programa SQL Server Browser se ejecuta como un servicio de Windows. SQL Server Browser
escucha las solicitudes entrantes de recursos de Microsoft SQL Server y proporciona informacin acerca
de las instancias de SQL Server instaladas en el equipo. SQL Server Browser permite efectuar las
siguientes acciones:
Examinar una lista de los servidores disponibles
Conectarse a la instancia correcta del servidor
Conectarse a los extremos de la conexin de administrador dedicada (DAC)

149
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 nmero de versin. SQL Server Browser se instala con SQL
Server y proporciona este servicio para las versiones anteriores de SQL Server que se ejecutan en el
equipo, empezando por SQL Server 7.0.
SQL Server Browser se puede configurar durante la instalacin o utilizando el Administrador de
configuracin de SQL Server. De manera predeterminada, el servicio SQL Server Browser se inicia
automticamente:
Cuando se actualiza una instalacin.
Cuando se instala simultneamente con una instancia de SQL Server 2000.
Cuando se instala en un clster.
Cuando se instala una instancia con nombre de SQL Server Database Engine (Motor de base de
datos de SQL Server) que incluye todas las instancias de SQL Server Express.
Cuando se instala una instancia con nombre de Analysis Services.

Tipos de rplica en SQL Server

Rplica transaccional.
Se inicia con una instantnea de los datos y los objetos de la base de datos de publicaciones. En cuanto se
obtiene la instantnea 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 lmites de la
transaccin que cuando se produjeron en el publicador. Por tanto, en una publicacin, se garantiza la
coherencia transaccional.

Rplica de mezcla.
Normalmente se inicia con una instantnea 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 estn 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 sincronizacin.
La rplica de mezcla se suele utilizar en entornos de servidor a cliente.

Rplica de instantneas.
La rplica de instantneas distribuye los datos exactamente como aparecen en un momento especfico en el
tiempo y no supervisa las actualizaciones de los datos. Cuando se produce la sincronizacin, se genera la
instantnea completa y se enva a los suscriptores.


150
Desarrollo de escenario practico de replicacin

Base de datos:
La base de datos que se utilizara en la demostracin est compuesta de 4 tablas y simula un pequeo
centro comercial para su ilustracin prctica se presenta la siguiente figura con el diagrama de base de
datos y sus respectivas tablas, esta ser la base de datos a replicar:




151
Escenario de replicacin:


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 demostracin 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 publicacin y las sucursales Sonsonate y
Santa Ana respectivamente realizaran la suscripcin al servidor central que para nuestra simulacin
estar en San Salvador.

Bien.. Comencemos!!!!

Lo primero ser verificar que los servicios necesarios estn 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.


152

Si los servicios de Agente, Browser e Instancia no estn corriendo tendremos que iniciarlos
manualmente para ello daremos click derecho a cada uno y luego Start
Iniciamos sesin 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


153

Vemos que tenemos la base de datos mostrada anteriormente con sus respectivas tablas y diagramas:


El siguiente paso ser crear la replicacin para ello comenzaremos cambiando algunos permisos en la base
de datos, para ello hacemos clic derecho en Replication y luego en Publisher properties


154

En la ventana siguiente seleccionamos Publications Databases y permitimos Transactional y Merge asi
nuestras publicaciones de bases de datos podrn 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
creacin de publicacin nueva y Luego clic en New Publication


155

Se abrir la ventana siguiente donde buscaremos las bases de datos a replicar. Luego daremos clic en next
para luego elegir qu tipo de replicacin queremos hacer; recuerde que son 3 tipos diferentes de replicacin
en SQL Server.


En la siguiente ventana colocaremos el tipo de replicacin en este caso haremos una replicacin
transaccional
hacemos clic en next

156



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.



157

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 seccin Duration pondremos No end date, estas
configuraciones las mostramos en la siguiente imagen.


158


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

159
Estas se muestran en la imagen siguiente el usuario que usaremos sera: "sa" y le colocaremos una contrasea




hacemos clic en OK y en la siguiente imagen en siguiente (next)



160

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


161


Cerramos la ventana de asistente de publicacin nueva, y veremos en local publications que ahora tenemos
una publicacin nueva creada.





162
la publicacin para productos se ha definido, ahora crearemos la otra publicacin 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
replicacin pero ahora seleccionaremos replicacin por mezcla pues nuestro ejemplo podrn los servidores
secundarios replicar tambin en el servidor matriz pues el servidor matriz podr monitorear todas las
transacciones de las sucursales secundarias.




En la siguiente ventana escogemos base de datos SQL Server 2005


163

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


164





Escogeremos el filtro para la sucursal 1 luego seleccionamos la tabla stock, por lo tanto tendremos que
escribir la consulta siguiente:


165


Hacemos clic en Ok y luego en add para aadir un nuevo filtro para otra tabla
luego hacemos lo mismo para la tabla sucursal y venta



166


Ahora tendramos 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

167



luego tendremos que aplicar la seguridad el usuario que colocaremos ser "sa"




168
En las 2 ventanas siguientes hacemos clic en next para luego ponerle un nombre a la publicacin en este
caso le pondremos el nombre: "PubSucursal1"



si todo lo hemos realizado de forma correcta tendramos que ver la siguiente ventana



169

En este momento tendramos creadas las 2 publicaciones que utilizaremos, ahora hacemos los mismos
pasos que acabamos de hacer para la sucursal 2.

luego tendremos que realizar las pruebas

Ahora lo que aremos ser una conexin 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

en Sql server realizamos las siguientes configuraciones:
Hacemos clic en el botn Connect, luego en Database Engine luego en la opcin Browse for more



Luego en la pestaa 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


170


Para la Authentication nos conectaremos con autenticacin de SQL Server para ello usaremos el usuario
"sa"




171
Despus de conectar podremos ingresar a las configuraciones del servidor remoto, luego crearemos una
suscripcin, para ello, hacemos clic derecho en la carpeta Local Subscriptions y despus 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.


172


Luego daremos clic en Server Name, damos clic en el combo y seleccionaremos Browse for more, luego en
la pestaa Network Servers y esperamos a que nos aparezca el rbol de Servidores remotos, del cual
seleccionaremos el servidor publicador y hacemos clic en Ok




173
Despus de esto nos autenticaremos con cuenta de SQL Server y utilizaremos el usuario "publicador" y la
contrasea que definio el publicador luego daremos clic en connect



luego hacemos clic en PubProductos y luego en next



174

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


175





Luego definiremos la base de datos con nombre Demo y dejaremos lo dems tal cual nos aparece


176


luego daremos clic en next y despus en la siguiente ventana daremos clic en el botn 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

177



en las 4 ventanas siguientes daremos clic en next y luego en finalizar , veremos que todo se ha creado con
xito




178
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 sern igual quee para la suscripcin anterior, hasta llegar a la parte de Synchronization
Schedule, En esta parte Seleccionaremos el Agent schedule como Run continuously para que sea mas rpida
la sincronizacin, hacemos clic en next


179

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


En la siguiente ventana Susbcription type seleccionamos Client y damos clic en next


180


En la siguiente ventana damos clic en siguiente y luego en finish, tendriamos que ver la siguiente imagen si
todo a sucedido satisfactoriamente





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




183


184
PostgreSQL Cluster con DRBD y
Heartbeat

Ana Jimnez, Byron Guerrero, David Sandoval.

Objetivos:

Conocer los conceptos bsicos relacionados con Cluster y las tecnologas de
PostgreSQL , Heartbeat y DRBD.
Analizar el funcionamiento de las tecnologas mencionadas anteriormente como una
solo entidad.
Presentar un escenario en el cual se pueda a dar demostrar el funcionamiento del
Cluster y la replicacin.

Conceptos:

Cluster:
El trmino cluster se aplica a un conjunto o conglomerado de computadores, construido utilizando
componentes de hardware comunes y en la mayora de los casos, software libre; los computadores se
interconectan mediante alguna tecnologa de red. El cluster puede estar conformado por nodos
dedicados o por nodos no dedicados
Simplemente, un cluster es un grupo de mltiples computadores unidos mediante una red de alta
velocidad, de tal forma que el conjunto es visto como un nico computador, ms 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 cdigo 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.

185
PostgreSQL es un potente sistema de base de datos objeto-relacional de cdigo abierto. Cuenta con
ms de 15 aos de desarrollo activo y una arquitectura probada que se ha ganado una slida reputacin
de fiabilidad e integridad de datos.
DRBD
DRBD (DistributedReplicated Block Device) es un sistema de almacenamiento distribuido para
plataformas basadas en linux. Consiste de un modulo de kernel, herramientas para manejar los discos y
una serie de scripts, que son usados normalmente en cluster de alta disponibilidad, es similar a
un RAID 1, pero corre bajo la Red.Al hablar de DRBD, nos referimos al modulo de kernel y a las
correspondientes herramientas de administracin.

Heartbeat
Es un dominio que proporciona servicios de infraestructura de cluster (comunicacin y pertenencia) a
sus clientes. Esto permite a los clientes tener conocimiento de la presencia (o desaparicin) de los
procesos en otras maquinas e intercambiar fcilmente mensajes entre ellos.
Para resultar til a los usuarios el dominio HEARTBEAT necesita emplearse en combinacin con un
gestor de recursos del cluster (clusterre source manager (CRM)) el cual posee la tarea de iniciar y parar
los servicios (Direcciones IP, servidores web...) a los cuales el cluster aportar alta
disponibilidad. Pacemaker es el gestor de recursos de cluster preferido para los clusters basados en
Heartbeat.

Replicacion
DRBD posee tres tipos de replicacin estas son:
Protocol A: Protocolo de replicacin asncrona.
Protocol B: Protocolo de replicacin sncrona de memoria
Protocol C: Protocolo de replicacin sncrona. Utilizada en este tutorial.
Para ms informacin de cada tipo de replicacin en el siguiente enlace:
http://www.drbd.org/users-guide/s-replication-protocols.html






186
Desarrollo:

Se necesitan dos servidores o mquinas de similares caractersticas (tanto en las arquitecturas de dichos
servidores y en sus sistemas operativos). En ambas es necesario tener una particin sin montar y sin
formatear que esta ser utilizada para el DRBD.
La capacidad de almacenamiento reservado en estas particiones permitir almacenar como mximo la
capacidad de la particin ms chica.
A dems se utilizara un Switch y una tercera maquina que ser utilizada como cliente y har uso de los
servidores. La topologa utilizada para este tutorial es la siguiente:















El Hardware que se utilizo en la implementacin:
2 maquinas como servidores con sistema operativo Debian
Un Switch
Cables UTP
Primario Secundario

187
1 maquina cliente para la conexin a la base de datos
Interfaces usb Lan Ethernet

Instalacin y configuracin de DRBD

1. Procederemos inicialmente a la instalacin de los paquetes necesarios para la
configuracin del Heartbeat
# sudoapt-getinstall drbd8-utils build-essential libreadline6-dev zlib1g-dev
2. Primero vamos a guardar una copia del archivo de configuracin original:
# mv /etc/drbd.con /etc/drbd_backup.conf
3. Ahora procederemos a la configuracin de dicho archivo:



188
4. La primera lnea de cdigo hace referencia a una encuesta en la cual drbd nos invita a
participar y la segunda lnea (common) la velocidad de sincronizacin entre las dos
maquinas.

5. De igual manera tambin denominamos el nombre de recurso (resource pg) en donde
un recurso lo podemos definir como trmino colectivo pero que hace una referencia en
particular al conjunto de informacin que se va a replicar.

6. Declaramos que utilizaremos un mtodo de replicacin C (protocol c), en el cual la
replicacin se dar como completa cuando en ambas maquinas se actualicen los datos.

7. Luego tambin declaramos el tiempo de espera para la sincronizaion.

8. De igual manera tambin se declaran los nodos que participaran en el proceso DRBD
los cuales cedern el recurso cuando uno se encuentre bajo o fuera de lnea. Junto a
estos nodos internamente se le declaran:

a. La unidad lgica del drbd que se va a crear (/dev/drbd0).
b. La particin sin formato en el cual se va montar (en nuestro caso /dev/sda4).
c. La direccin IP por medio de la cual se cedern recuro.
d. La creacin de meta-data correspondiente a la particin lgica que se realizara
ms adelante.

9. Recordar que este archivo de configuracin debe de estar presente en ambas maquinas
tanto en la primaria como en la secundaria

10. Una vez realizada correctamente la configuracin anterior en ambos nodos
procederemos a colorcarnos las respectivas direcciones IPs para poder iniciar la
sincronizacin del DRBD

# Ifconfig eth1 10.0.0.2/24 up (nodo primario)
# Ifconfig eth1 10.0.0.3/24 up (nodo secundario)

11. Ahora iniciamos el DRBD:

189

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.

12. Creamos la meta-data de la siguiente forma:











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 lgico drbd0 y el recurso. Recordad que estos comandos deben de realizarse
en ambos nodos.

190
13. El paso siguiente es inicializar de nuevo el drbd, el cual no debera de darnos ningn
tipo de error.



Podemos ver el estado de la sincronizacin por medio del comando cat /proc/drbd :



Como podemos ver ya se encuentran conectados pero aun no listos para realizar la replicacin o
intercambiarse el recurso para ello necesitamos definir un nodo primario y darle formato a la particin
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 mquina ejecutamos el
siguiente comando, luego damos formato a la particin compartida y montamos la
particin:
# sudo drbdadm -- --overwrite-data-of-peer primaryall
# sudo mkfs.ext4 -j /dev/drbd0
# sudo mount -t ext4 /dev/drbd0 /data (carpeta definida en postgresql para nuestro
caso la carpeta data)
Y con esto iniciara la sincronizacin:

191


Una vez finalizado la sincronizacin 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 replicacin o copiar datos(uptodate/uptodate).

Instalacin y Configuracin de Heartbeat

1. Procedemos a la instalacin de Heartbeat desde los repositorios con el siguiente
comando:
# sudo apt-get install Heartbeat

2. En el nodo primario copiamos los archivos de configuracin de ejemplo o
simplemente creamos archivos nuevos:
# 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/

192
# gzip -d ha.cf.gz
# gzip -d haresources.gz

3. Ahora procederemos a la configuracin del archivo ha.cf



Esta fue la configuracin 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
mquina, 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 cul 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

193
cluster y el cual ser el punto de acceso,tambin la podramos llamar un ip flotante que ser la que el
Heartbeat asigne cuando una maquina caiga.
Con drbddisk::pg le decimos que recurso DRBD queremos brindar, luego
con Filesystem::/dev/drbd0::/opt/postgresql::ext4::defaults montamos el dispositivo
virtual drbd0 en la carpeta /opt/postgresql y por ltimo decimos que arranque o inicie postgresql.

5. En indispensable copiar el archivo de arranque de PostgreSQL
a /etc/ha.d/resources.d y modificar la variable de entorno PGDATA de dicho script
para que apunte a la carpeta /opt/postgresql/data que es el lugar donde van a residir
las bases de dato y al mismo tiempo otorgar los permisos necesarios:

# 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 configuracin a todos los nodos o realizamos las
mismas configuraciones




194
Instalacin y configuracion del PostgreSQL acceso remoto


1. La instalacin de PostgreSQL ser a travs de la compilacin del cdigo fuente porque
debemos hacer algunas modificaciones a la variable pg_ctl para que todo funcione
correctamente. Descargue el cdigo fuente del siguiente enlace
http://www.postgresql.org/download/


2. Luego de bajar los fuentes del PostgreSQL descomprimimos, y modificamos el cdigo
de la aplicacin pg_ctl, el archivo fuente de esta aplicacin esta en postgresql-
8.X.XX/src/bin/pg_ctl/ y se llama pg_ctl.c.


3. Una vez ubicado esta aplicacin buscamos la leyenda no server runnig dentro del
cdigo y reemplazamos la palabra runnig por cualquier otra.

Esto tiene una explicacin 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
ejecutndose correctamente l responde no server running y heartbeat supone que todo est bien
aunque realmente no sea as.

4. Con la particin montada en la maquina primaria crearemos la ubicacin de Postgres
dentro de ella con:

# Mkdir /opt/postgresql/data


5. Le asignamos permisos al directorio para que pertenezca al usuario postgres

# Chown postgres.postgres R /opt/postgresql/data


6. Como usuario postgres inicializamos los datos de Postgres

# sudo su postgres
# /usr/local/pqsql/bin/initdb D /opt/postgresql/data



195
7. A continuacin 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




Modificamos la lnea de listen_addresses igualndola a * para que escuche en cualquier
interfaz de las que el servidor tiene disponibles.

8. El otro archivo a modificar ser /opt/postgresql/data/pg_hba.confy agregamos al
final de este la siguiente lnea:

Host all all 10.2.0.0/24 trust

Con la lnea 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.

196
Pruebas de del Escenario

1. Una vez realizado correctamente la configuraciones anteriores tanto para Heartbeat y
drbd e inicializar el motor PostgreSQL, haber definido el tanto el nodo primario y
secundario procedemos a la iniciacin de Heartbeat y el servicio DRBD en ambos
servidores, PostgreSQL solo en la maquina primaria:
# /etc/init.d/Heartbeat start
# /etc/ini.d/drbd start
# /etc/ha.d/resources.d/postgresql start
2. Una vez inicializado el PostgreSQL en la maquina primaria procedemos crear la base
de datos y empezar a crear las tablas, ndices, vistas, etc., desde cero.

3. Luego para probar que se estn 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 deberamos tener la siguiente salida en la maquina primaria:


4. Luego bajamos a Heartbeat 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 deberamos de ver algo similar a la captura anterior pero con la diferencia
que ahora nuestro servidor secundario ser primario:

197
Referencias

Documentacion de implementacin y comandos DRBD
http://www.drbd.org/
Documentacion de implementacin e instalacin de Heartbeat
http://www.habitacion511.eu/index.php/alta-disponibilidad-en-linux/
Documentacion de PostgreSQL
http://www.postgresql.org/docs/9.1/static/install-procedure.html
Documentacion de Cluster con PostgreSQL
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













199
Replicacin con PostgreSQL

JuarezYonatan, Larios Raquel, Zelaya Josue

Objetivos:
Aprender sobre el contenido amplio de PostgreSQL.
Analizar el funcionamiento de rplicas de datos.
Conocer sobre Slony-I y Pgpool.
Aplicar los conocimientos obtenidos a un escenario real.

Conceptos:
Qu es PostgreSQL?
PostgreSQL es un sistema de gestin de bases de datos objeto-relacional, distribuido bajo licencia BSD
y con su cdigo fuente disponible libremente. Es uno de los sistemas de gestin de bases de datos de
cdigo abierto ms 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 una Replicacin?
La rplica es un conjunto de tecnologas destinadas a la copia y distribucin de datos y objetos de base
de datos, desde una base de datos a otra, para luego sincronizar ambas bases de datos y mantener su
coherencia. La rplica permite distribuir datos a diferentes ubicaciones y a usuarios remotos o mviles
mediante redes locales y de rea extensa, conexiones de acceso telefnico, conexiones inalmbricas e
Internet.

Qu es Slony-I?
Es un software que nos permite hacer replicaciones maestro/esclavo asncrono, realizando
actualizaciones en cascada.

200
Slony-I es un maestro "a varios esclavos" sistema de replicacin en cascada de apoyo (por ejemplo - un
nodo puede alimentar a otro nodo que se alimenta de otro nodo) y de conmutacin por error.
El panorama para el desarrollo de Slony-I es que es un esclavo de replicacin del sistema principal que
incluye todas las caractersticas y las capacidades necesarias para replicar bases de datos de gran tamao
a un nmero razonablemente limitado de los sistemas esclavistas.
Slony-I es un sistema diseado para su uso en centros de datos y sitios de respaldo, en el modo normal
de operacin es que todos los nodos estn 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 aplicacin 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 aplicacin de base de datos existente
puede empezar a usarse con pgpool-II casi sin ningn cambio en su cdigo fuente.
pgpool-II funciona sobre Linux, Solaris, FreeBSD y la mayora de las arquitecturas UNIX. Windows no
est soportado. Las versiones de PostgreSQL soportadas son de la 6.4 para arriba. Para usar la
paralelizacin de consultas es necesaria la versin 7.4 o superior.

Pgpool-II proporciona las siguientes caractersticas:

Limita el excedente de conexiones.PostgreSQL soporta un cierto nmero de conexiones
concurrentes y rechaza las que superen dicha cifra. Aumentar el lmite mximo de conexiones
incrementa el consumo de recursos y afecta al rendimiento del sistema. pgpool-II tiene tambin un
lmite mximo de conexiones, pero las conexiones extras se mantienen en una cola en lugar de devolver
un error inmediatamente.
Pool de conexiones.pgpool-II mantiene abiertas las conexiones a los servidores PostgreSQL y las
reutiliza siempre que se solicita una nueva conexin con las mismas propiedades (nombre de usuario,
base de datos y versin del protocolo). Ello reduce la sobrecarga en las conexiones y mejora la
productividad global del sistema.
Replicacin. pgpool-II puede gestionar mltiples servidores PostgreSQL. El uso de la funcin de
replicacin permite crear una copia en dos o ms discos fsicos, de modo que el servicio puede
continuar sin parar los servidores en caso de fallo en algn disco.
Balanceo de carga. Si se replica una base de datos, la ejecucin de una consulta SELECT en
cualquiera de los servidores devolver el mismo resultado. pgpool-II se aprovecha de la caracterstica de
replicacin para reducir la carga en cada uno de los servidores PostgreSQL distribuyendo las consultas
SELECT entre los mltiples servidores, mejorando as la productividad global del sistema. En el mejor

201
caso, el rendimiento mejora proporcionalmente al nmero de servidores PostgreSQL. El balanceo de
carga funciona mejor en la situacin en la cul hay muchos usuarios ejecutando muchas consultas al
mismo tiempo.
Paralelizacin de consultas. Al usar la funcin de paralelizacin de consultas, los datos pueden
dividirse entre varios servidores, de modo que la consulta puede ejecutarse en todos los servidores de
manera concurrente para reducir el tiempo total de ejecucin. La paralelizacin de consultas es una
solucin adecuada para bsquedas de datos a gran escala.

Desarrollo:

REPLICACION CON POSTGRES EN WINDOWS UTILIZANDO
SLONY-I

INSTALACION DE POSTGRES Y SLONY-I
Las herramientas que utilizaremos son:
PostgreSQL 9.2
PGAdmin
Slony-I

Cabe destacar que los pasos que a continuacin se describen deben de realizarse en todas las maquinas
en las cuales se realizara una replicacin de bases de datos. Lo primero que debemos hacer es
descargar la versin de postgres, en nuestro caso la versin 9.2, lo pueden descargar del
siguiente enlace http://www.enterprisedb.com/products-services-training/pgdownload.




1 Ejecutamos el instalador como administrador, y nos aparecer un cuadro de dialogo para
la instalacin de postgres.

202


2 Damos clic en siguiente y debemos especificar la ruta donde se instalara postgres



3 Presionamos 3 veces siguiente y comenzara el proceso de instalacin

203


4 Luego, que ya se haya terminado la instalacin, debemos de tener cuidado de seleccionar
la opcin de descargar otras herramientas, y damos clic en finalizar.



204
5 Automaticamente se nos abriruna aplicacin StackBuilder, que nos servir para la
instalacin de slony-I. En la pestaa seleccionamos POSTGRESSQL9.2 en el puerto
5432 y damos clic en siguiente



6 Ahora se no muestra una ventana con las categoras de complementos que podemos
instalar, debemos elegir soluciones de replicacin 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 instalacin se debe tener una conexin a internet.

Ahora que ya tenemos instalado lo necesario en nuestras maquinas, procedemos a realizar las
configuraciones necesarias para realizar la replicacin en Windows utilizando PostgreSQL y
Slony-I.

205
A continuacin mostraremos un ejemplo de una rplica Maestro-Esclavo con la siguiente
topologa:




MAESTRO ESCLAVO


No debemos olvidar que las direcciones de los nodos deben encontrarse en el mismo
segmento de red, adems 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 idntica.

Despus de tener las consideraciones anteriores, pasamos a realizar los pasos para la
replicacin 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.


206


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.


207









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


208


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 creacin del Cluster cambia
a Especificar el nombre del cluster



Debemos de verificar que tengamos disponible el lenguaje pgsql



209





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

210
NUEVA REGLA






Luego REGLA DE ENTRADA NUEVA REGLA




Luego seleccionamos el protocolo TCP y especificamos el puerto 5432


211



Damos permitimos la conexin y siguiente








Luego seleccionamos dominio y publico


212





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 rplica, este archivo se encuentra en, C:\Program Files
(x86)\PostgreSQL\9.2\data\pg_hba. En este archivo definiremos las direcciones de los nodos

213
y les diremos a cuales BD pueden conectarse y con cuales usuarios y cul ser el metodo de
encriptacin de la contrasea. Deber quedarnos as:



# TYPE DATABASE USER ADDRESS METHOD

# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host replication postgres 127.0.0.1/32 md5
#host replication postgres ::1/128 md5

#Maestra
host all all 192.168.0.1/24 md5

#Esclavo
host all all 192.168.0.2/24 md5







PASO 5: Ahora crearemos un scriptSOLAMENTE PARA EL NODO MAESTRO que lo
hemos llamado Maestro.txt este archivo llevara lo siguiente, y deber guardarse en C:\Program
Files (x86)\PostgreSQL\9.2\bin


cluster name = slony_postgres;

node 1 admin conninfo = 'dbname = postgres host = 192.168.0.1 user = postgres
password = oracle';
node 2 admin conninfo = 'dbname = postgres host = 192.168.0.2 user = postgres
password = oracle';

init cluster (id=1, comment = 'Maestro');

create set (id=1, origin=1, comment= 'Mistablas');

set add table (set id=1, origin=1, id=1, fully qualified name = 'public.persona',
comment= 'postgres');

store node (id = 2, comment = 'nodoesclavo', EVENT NODE = 1);

214

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');

store listen (origin = 1, provider = 1, receiver = 2);
store listen (origin = 2, provider = 2, receiver = 1);





PASO 6: Ahora crearemos un scripSOLO PARA EL NODO ESCLAVO que lo hemos
llamado Suscritptor.txt este archivo llevara lo siguiente, y deber guardarse en C:\Program Files
(x86)\PostgreSQL\9.2\bin



cluster name = slony_postgres;

node 1 admin conninfo = 'dbname = postgres host = 192.168.0.1 user = postgres
password = oracle';
node 2 admin conninfo = 'dbname = postgres host = 192.168.0.2 user = postgres
password = oracle';

subscribe set (id = 1, provider = 1, receiver = 2, forward = yes );



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

215
commandoslonik Suscriptor.txt



PASO 9: Ahora en ambos nodos (siempre en la consola de windows) ejecutamos la siguiente
lnea: slonslonypostgres dbname = postgresuser=postgrespassword=oracle



NOTA:No se deben de cerrar ninguna de las consolas de Windows, de lo contrario la rplica se cancela.








216
REPLICACION CON POSTGRES Y
PGPOOL EN LINUX

PREPARATIVOS INICIALES

El ejemplo de rplica presentado a continuacin corresponde al siguiente escenario.
Figura 1.

En el escenario descrito en la figura 1, se encuentran dos mquinas conectadas a la red 192.168.1.0/24,
cuyos nombres de host son pgsql1 y pgsql2 y sus direcciones IP asignadas son: 192.168.1.6/24 y
192.168.1.5/24 respectivamente.
El host pgsql1 tendr instalado:
postgresql.
pgpool2.
Mientras que el host pgsql2 solo tendr instalado:
postgresql.

Para llevar a cabo la configuracin de este escenario seguiremos los siguientes pasos:

Paso 1. Configuracin de los nombres de host.
Esta configuracin es importante porque nos permitir usar el nombre de host en lugar de la direccin
IP para poder realizar la configuracin. Lo primero que debemos hacer en ambos nodos es editar el

217
fichero /etc/host.
# nano /etc/host

Deber quedar como se muestra en la figura 2.

Figura 2.

Paso 2. Instalacin de postgres y pgpool2.
En el host pgsql1 deberemos instalar POSTGRES y PGPOOL2, en el host pgsql2 solo instalaremos
postgres.

Pgsql1:
# apt-get installpostgresql pgpool2

Pgsql2:
# apt-getinstallpostgresql


218
Paso 3. Configuracin de Postgresql.

Los siguientes pasos aplican a ambas instancias de PostgreSQL en los nodos pgsql1 y pgsql2.
Logueados como usuario postgres debemos aadir al usuario pgpool2 a los administradores de
postgres. Para loguearnos:

# su - postgres
Aadiendo al usuario pgpool2 .
createuser --superuser pgpool2
exit
A continuacin vamos a controlar a cules host se les permitir conectarse, cmo debern autenticarse,
cules nombres de usuario de postgresql pueden usar y a cules 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

La figura 3 muestra como debe quedar el fichero.
Figura 3.


219

Por ltimo indicamos a postgresql que escuche en todas las interfaces en el puerto 5432, editamos:

# nano /etc/postgresql/9.2/main/postgresql.conf


Cambiamos los siguientes parametros:
listen_addresses = '*'
port = 5432

Reiniciamos postgres para activar los cambios:

# /etc/init.d/postgresqlrestart

Paso 4. Configuracin pgpool2.
La configuracin de pgpool-II la realizaremos nicamente en el nodo pgsql1, pues slo en ese host lo
tenemos instalado.

El fichero pcp.conf es un fichero de nombres de usuario y contraseas 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 aadir nuestro usuario y contrasea.

Utilizaremos pg_md5 para que nos devuelva encriptado en md5 el password que le pasemos.


Ahora editamos el archivo:
# nano /etc/pgpool2/pcp.conf

220

y agregamos al final:
root:dd22141acb5ea065acd5ed773729c98f




Luego editamos el archivo de configuracin de pgpool2
# nano /etc/pgpool2/pgpool.conf

Lo dejamos de la siguiente manera:
listen_addresses = '*'
port = 9999
pcp_port = 9898
socket_dir = '/var/run/postgresql'
pcp_socket_dir = '/var/run/postgresql'
backend_socket_dir = '/var/run/postgresql'
pcp_timeout = 10
num_init_children = 32
max_pool = 4

221
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

#set pgpool2 hostname
pgpool2_hostname = 'pgsql1'

# system DB info
system_db_hostname = 'localhost'

222
system_db_port = 5432
system_db_dbname = 'pgpool'
system_db_schema = 'pgpool_catalog'
system_db_user = 'pgpool'
system_db_password = ''

# backend_hostname, backend_port, backend_weight
# here are examples
backend_hostname1 = 'pgsql2'
backend_port1 = 5432
backend_weight1 = 1

backend_hostname0 = 'pgsql1'
backend_port0 = 5432
backend_weight0 = 1



EL siguiente paso es arrancar pgpool2
# /etc/init.d/pgpool2 start

Ahora ya somos capaces de conectarnos al puerto 9999 de la IP de administracin del nodo pgsql1 .

223
# psql -h pgsql1 -p 9999 -U pgpool2 -d postgres



Paso 5. Probrando la replicacin.
Tras haber comprobado que ya podemos conectarnos, vamos a proceder a probar la replicacin.
Para ello es necesario que la misma configuracin de postgresql que se hizo en psql1 est en psql2.
Para probar la replicacin escribimos en la terminal lo siguiente:
createdb -h pgsql1 -p 9999 -U pgpool2 base_a_replicar

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 CONFIGURACIN DE
PGPOOL2 SOLO SE DEBE HACER EN PSQL1.








224


Bibliografa.

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

Oracle MySQL, Captulo 6. Replicacin en MySQL. Obtenida el 3 de mayo de 2013 en
http://dev.mysql.com/doc/refman/5.0/es/replication.html

Campos M., Flores C., Ortiz R., Zuniga C,. Replicacin 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). Replicacin 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
Cristin Fabres A. Levantar el servicio postgres en linux.
http://mundo2.cl.tripod.com/colabora/inst_pg_01_cf.htm
Replicacin 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/





225

También podría gustarte