You are on page 1of 231

Portada

Datos de catalogacin bibliogrfica

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

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,

ii

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

iii

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/

iv

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

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.

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

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.

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

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;

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;

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

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

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;

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.

10

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

11

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.

12

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


Wallen J., Set up MySQL database replication to ensure up-to-date backups. Obtenida el 31 de abril

2.

de 2013 en http://www.techrepublic.com/blog/itdojo/set-up-mysql-database-replication-toensure-up-to-date-backups/3340?pg=1

13

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

15

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

16

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

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

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

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

19

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

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

# 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:
22

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

23

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

24

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.

25

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:

D T

D
CAPTURE

PROPAGATION

APPLY

A
Destinetion Database

Source Database

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.

26

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.

27

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. CONFIGURACION DEL ENTORNO DE RED.

En nuestro caso se creara la base de datos BDA en el servidor #1 y BDB en el servidor #2.

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
28

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

29

Imagen 2

Imagen 3

30

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.

31

Imagen 5

3.33.3.1

Ahora vamos a asignar privilegios. 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.

32

Imagen 6

Imagen 7

La lista de usuarios debe quedar como se muestra en la Imagen 8. Con esto tenemos a nuestro usuario strmadmin con privilegios de Superadministrador.

33

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;

34

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.1Creacin 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.2Creacin 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.

35

Imagen 9

Imagen 10

36

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. Creacin del apply process en BDA ubicada en Servidor #1.

7.1.1BEGIN

DBMS_APPLY_ADM.CREATE_APPLY( queue_name apply_name 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', => 'strmadmin.apply_queue', => 'apply_emp_dep',

apply_captured => FALSE);

streams_type => 'apply', streams_name => 'apply_emp_dep',


37

queue_name

=> 'strmadmin.apply_queue',

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

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

38

8 8.1.

Configuracin de la Propagacin para la notificacin de cambios. En Base de Datos BDA.

BEGIN DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES( table_name streams_name source_queue_name => 'hr.alumno', => 'send_emp_dep', => 'strmadmin.capture_queue',

destination_queue_name => 'strmadmin.apply_queue@BDB', source_database queue_to_queue END; / 8.2. BEGIN DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES( table_name streams_name source_queue_name => 'hr.alumno', => 'send_emp_dep', => 'strmadmin.capture_queue', En Base de Datos BDB. => 'BDA', => TRUE);

destination_queue_name => 'strmadmin.apply_queue@BDA', source_database queue_to_queue END; / => 'BDB', => TRUE);

39

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 10.1

Configuracin de instanciacin de SCN. 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 END; / => iscn);

40

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 END; / 11 Iniciar apply process. => iscn);

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

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

42

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

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
44

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

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:

46

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]

47

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]
48

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:

49

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:

50

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
51

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.

52

$ 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;
53

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

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

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;
56

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 inmediatamente. debe estar respaldada

57

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;

58

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/enterpriseedition/documentation/tutorial-oracle-data-guard-11gr2-1707492-esa.pdf Oracle 2012, Oracle Data Guard Concepts and Administration 11g Release 2 (11.2), obtenida el 4 de mayo de 2013, de http://docs.oracle.com/cd/E11882_01/server.112/e17022/create_ps.htm

59

60

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
61

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

62

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

63

Hacer click en el boton instalar

Esperar unos minutos mientras se instala

64

Click en el botn cerrar

65

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

66

Escribir el nombre del bosque a crear click-> siguiente

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

67

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.

68

En estos momentos ya se tiene el dominio ahora hay que crear un usuario con privilegios de administrador de dominio para esto click -> inicio ->Herramientas del sistema->Usuarios y equipos de Active Directory >Users

Click derecho y seleccionar nuevo usuario luego ingresar el nombre de usuario como se muestra en la figura y dar siguiente

69

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.

70

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.

71

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

72

Escribir el nombre del bosque a crear click-> siguiente

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

73

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.

74

En estos momentos ya se tiene el dominio ahora hay que crear un usuario con privilegios de administrador de dominio para esto click -> inicio ->Herramientas del sistema->Usuarios y equipos de Active Directory >Users

Click derecho y seleccionar nuevo usuario luego ingresar el nombre de usuario como se muestra en la figura y dar siguiente

75

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.

76

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.

77

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

78

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

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

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

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

81

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.

82

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 virtuales creados como se muestra a continuacin.

aparecern todos los discos

83

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.

84

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.

85

Y click en instalar

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

Nos pedir ingresar los nombres de los nodos

Damos click -> siguiente


87

Realiza la confirmacin de los datos click ->siguiente

88

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

Finalizamos la creacin del cluster

90

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.

91

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

92

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.

93

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.

94

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

95

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.

96

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.

97

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.

98

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

99

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.

100

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.


101

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

102

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

103

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.

104

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/eses/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-acerolucena.aspx o Scribd, visitado 16 de abril de 2013 http://es.scribd.com/doc/84699812/Agregaralmacenamiento-a-un-cluster-de-conmutacion-por-error.html o Youtube.com, visitado 20 de abril de 2013 http://www.youtube.com/watch?v=Q5x0D79afRM

105

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.

106

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.


107

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

108

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.

109

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:

110

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:

111

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:

112

Abrimos una nueva consola en modo de administrador y copiamos el contenido de esta carpeta mysql en mycluster:

Ahora bien, dentro de mycluster creamos un archivo config.ini Entramos en la carpeta conf. Lo que continua ser editar el archivo config.ini para los nodos de datos:

[ndb_mgmd] HostName=192.168.4.1 DataDir=c:\my_cluster\ndb_data Nodeid=1

Esto significa que el nodo de administrador tendra esa ip y que los log's que generen se estaran almacenando el esa direccion de archivo.

113

[Ndbd default] NoOfReplicas=2

Esto significa que seran 2 nodos de datos por defecto; si queremos agregar mas solo incrementamos ese numero.

[Ndbd] HostName=192.168.4.2 DataDir=c:\my_cluster\ndb_data Nodeid=3

Esto significa que es el primer nodo de datos y esta alojado en esa ip y los logs iran a parar a esa direccion.

Nodeid=4 HostName=192.168.4.3 DataDir=c:\my_cluster\ndb_data

Esto significa que es el segundo nodo de datos y esta alojado en esa ip y los logs iran a parar a esa direccion.

[Mysqld] [Mysqld]

Y estas 2 lineas significan que por cada nodo de datos tendremos 1 nodo mysql

Ahora crearemos las variables de entorno del sistema. Desde el men inico escribimos variables de entorno y escogemos la que dice SISTEMA:

114

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:

115

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:

116

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:

117

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):
118

A manera de ejemplo, veamos los motores. Veremos que ndbcluster est corriendo usando el comando show engines; (Este es el motor del cluster) y para ver las bases de datos usamos show databases;

En uno de los nodos de datos se ha creado una base de datos llamada prueba. Si ejecutamos nuevamente show databases; debemos verla reflejada:

119

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:

120

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

121

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

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.

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.

123

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
124

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:

125

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.

126

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.

127

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.

128

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

129

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.

130

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

131

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

132

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

133

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.

134

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

135

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

136

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

137

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

138

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

139

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.

140

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.

141

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

142

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-entrebases-de-datos-sql-server-on-premise-y-base-de-datos-de-windows-azure-sql-database.aspx

143

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.

145

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
146

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

147

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)

148

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.

149

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:

150

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.

151

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

152

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

153

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

154

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
155

Ahora lo que tenemos que hacer es seleccionamos los objetos que deseamos publicar en este caso dejaremos seleccionada la tabla producto, ahora la razon para ello es que: los servidores esclavos no podran modificar ni realizar transacciones a la tabla productos. solamente el administrador podra hacerlo. luego de esto hacemos clic en Next.

156

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.

157

Daremos clic en Ok luego en la siguiente ventana haremos clic en next, en la siguiente figura daremos clic en el boton Security Settings.. para configurar algunos parametros de seguridad

Despues de esto tendremos que proporcionar ciertas credenciales para acceder al publicador
158

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)

159

Colocamos un nombre para finalizar con el asistente de publicacionen este caso ser el nombre: Pubproductos

Damos clic en finish y si hemos realizado todo correctamente esperamos ver la siguiente ventana, veremos que todo a concluido con xito

160

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

161

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

162

En la siguiente ventana crearemos los filtros necesarios para que los datos que repliquemos se vayan a la sucursal que corresponde para lo cual seleccionamos las 3 tablas a replicar las cuales son: stock, sucursales y venta.

Ahora damos clic en next y realizamos el filtro dando clic en el boton addfilter

163

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

164

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

165

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
166

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

167

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

168

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

169

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

170

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.

171

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

172

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

173

En esta ventana definiremos que el distribuidor esta en el publicador

En la siguiente ventana configuraremos una nueva base de datos hacemos clic en New database

174

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

175

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
176

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

177

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

178

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

179

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

180

Luego tendremos que dar clic derecho en local subscriptions y luego refresh para, refrescar las subscripciones y luego realizamos el mismo procedimiento para la base de datos Demo luego abrimos la base de datos y la tabla producto y veremos que los datos del servidor principal se replican en el servidor secundario.

181

183

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.

184

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

185

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:

Secundario

Primario

El Hardware que se utilizo en la implementacin:


186

2 maquinas como servidores con sistema operativo Debian Un Switch Cables UTP

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:

187

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. b. c. d. La unidad lgica del drbd que se va a crear (/dev/drbd0). La particin sin formato en el cual se va montar (en nuestro caso /dev/sda4). La direccin IP por medio de la cual se cedern recuro. 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:

188

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

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

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

# 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
192

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

193

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

194

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.

195

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:

196

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-deservidores-postgresql-con-drbd/ http://wiki.postgresql.org/images/0/07/Ha_postgres.pdf http://www.slideshare.net/jessejajti/hadrbdpostgres-postgreswest-08-presentation

197

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

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
200

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.

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

201

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

3
202

Presionamos 3 veces siguiente y comenzara el proceso de instalacin

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.

203

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

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

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 Programas PostgreSql pgAdmin III. Todos los

205

Luego postgresEschemasPublicTables

Seleccionamos Nueva Tabla, colocamos el nombre de la tabla y luego damos clic en columnas, luego clic en Agregar y ah agregamos los campos de nuestra tabla.

206

PASO 2:Ahora lo que haremos ser configurar Slony-I, y para esto nos iremos a opciones, caminos y agregaremos la ruta donde se encuentra nuestoSlony-I

207

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

208

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
209

NUEVA REGLA

Luego REGLA DE ENTRADA NUEVA REGLA

Luego seleccionamos el protocolo TCP y especificamos el puerto 5432

210

Damos permitimos la conexin y siguiente

Luego seleccionamos dominio y publico

211

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
212

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 #Esclavo host all all all 192.168.0.1/24 192.168.0.2/24 md5 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);
213

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
214

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.

215

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
216

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

217

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.

218

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


219

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
220

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'


221

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

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

223

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-databasereplication-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-enmysq.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-conpostgresql-y-slony Slony-I Support. http://www.pgadmin.org/docs/dev/slony.html Slony-I enterprise-level replication system http://www.slony.info/

224

225

You might also like