231
Portada

Replicacion y Cluster de Bases de Datos

Embed Size (px)

Citation preview

Page 1: Replicacion y Cluster de Bases de Datos

Portada

Page 2: Replicacion y Cluster de Bases de Datos

ii

Esta edición en español es la única autorizada.

Autores y/o Editores:

Alex Calderón, Gómez Jacqueline,MoránLuis, Urquilla Edwin, Henry Renderos, David García, Portillo Pablo, Gómez Herber, Mendes Rebeca, Chicas Karla, Samuel Menéndez, Lisandro Martínez, Isidro Flores, Erick Valenzuela, Ana Rosales, Silvia Campos, Luis Chávez, Josué Orellana, Erick Cruz, González Mauricio, Ramírez Heysel, Zometa Henry, Cisneros Rolando, Ibarra Luis, Orellana Hugo, Ana Jiménez, Byron Guerrero, David Sandoval, Juarez Yonatan, Larios Raquel y Zelaya Josué,

Título 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. Páginas: 229

Datos de catalogación bibliográfica

Page 3: Replicacion y Cluster de Bases de Datos

iii

CONTENIDO

Introducción ....................................................................................... iv

Mysql: replicación ............................................................................... 1

Postgresql cluster con pgpool-ii .........................................................15

Oracle stream replication .................................................................. 25

Oracle data guard .............................................................................. 43

Sql server cluster ............................................................................... 60

Clúster en mysql .............................................................................. 105

Sincronización de bases de datos en nube ....................................... 121

Replicación con sql server ................................................................ 143

Postgresql cluster con drbd y heartbeat ......................................... 182

Replicación con postgresql .............................................................. 197

Replicacion con postgres y pgpool en linux .................................... 214

Page 4: Replicacion y Cluster de Bases de Datos

iv

Introducción

El área de Bases de datos se ha desarrollado como tecnología a pasos agigantados en los últimos años, debido al hecho que las empresas consideran de vital importancia a la información, convirtiendo a la misma en el activo principal de las organizaciones.

Por ello es que dentro de las organizaciones se montan infraestructuras tecnológicas de gran envergadura para soportar en un primer momento los datos de sus operaciones transaccionales. Sin embargo el área de Bases de Datos ha crecido enormemente, hasta el punto de convertirse en una especialidad de la informática, existen Maestrías orientadas a especializar en el área de Bases de Datos. Esta área abarca: Modelo Relacional y lenguaje SQL, datos NO SQL, big data, bases de datos distribuidas, bases de datos multidimensionales, Almacenes de Datos, Minería de Datos y/o Inteligencia de Negocios.

El presente documento recoge una serie de proyectos académicos estudiantiles, que abordan de una forma práctica los temas de Replicación y Clustering de Bases de Datos. Se han utilizado para la implementación los principales gestores del mercado, enfatizando las diferencias que implica el concepto de réplica y clúster para cada gestor.

Para cada proyecto se brinda a modo de tutorial paso a paso, las acciones a realizar para poder montar el escenario de una bases de datos distribuida, los elementos que deben configurarse, las herramientas a instalar, con lujo de detalles para facilitar la reproducción de dicho escenario en cualquier curso de bases de datos.

Este aporte es realizado con mucho esfuerzo, mostrando la capacidad y deseo de aprendizaje que existe en los estudiantes de la Universidad de El Salvador, los cuales a pesar de las enormes limitantes de equipo e infraestructura, hemos realizado este aporte a la comunidad latinoamericana. Se han sorteado cantidad de limitantes, por mencionar algunos: en nuestra universidad se carece de un centro de cómputo adecuado para desarrollar los escenarios de bases de distribuidas, no se cuenta con aulas adecuadas para proyectar, hasta el acceso a un proyector se vuelve complicado, en algunas de las exposiciones de los escenarios se tenía el lio que el proyector no tenía entrada hdmi, o de repente por ser un equipo antiguo se le arruinaba un color en plena presentación. Toda una suerte de aventura, a pesar de todo ello la capacidad de aprender supera las limitantes, y pues; estamos en total disposición a recibir un apoyo de parte suya desde cualquier parte del mundo que lea este documento, cualquier apoyo por mínimo que parezca será muy bien recibido por los estudiantes de El Salvador. Puede escribir al correo [email protected] si desea apoyarnos o ayudarnos para mejorar las condiciones de aprendizaje.

Además del presente libro, puede acceder a diferentes recursos en línea, como artículos o tutoriales del blog, así como también los videos que documentan cada proyecto, los cuales están en las siguientes URLs:

http://BasesdeDatosUES.blogspot.com/

Page 5: Replicacion y Cluster de Bases de Datos

v

http://www.youtube.com/channel/UCdb3GLHqHU6DIURmkpJjfgw

Si resulta un poco complicada la Url del canal de youtube, puede poner en el buscador: bases de datos ues y encontrara rápidamente todos los videos de cada escenario de replicación.

Le invitamos a disfrutar del presente libro y de los recursos multimedia con los que se cuenta, que sea de mucho provecho, se ha escrito con el mejor de los propósitos desde nuestro querido El Salvador, un país muy pequeño pero muy cálido desde el corazón de Centro América.

Alex Calderón

Page 6: Replicacion y Cluster de Bases de Datos
Page 7: Replicacion y Cluster de Bases de Datos

1

MySQL: Replicación

Gómez Arévalo, Jacqueline Stephanie Morán Monzón, Luis Antonio Urquilla Campos, Edwin Alberto

Objetivos:

Estudiar los principios acerca de replicación, su concepto, alcances, ventajas y desventajas.

Desarrollar el procedimiento para la replicación 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 replicación, específicamente en MySQL.

Conceptos:

MySQL

Es un sistema de gestión de bases de datos relacional, distribuido y multihilo. Es código abierto y el soporte es brindado por Oracle. La más reciente distribución es la 5.6.11 y fue lanzada el 25 de abril de 2013.

Replicación

Es el proceso de copiar y mantener objetos de las base de datos en múltiples bases de datos que forman un sistema de bases de datos distribuido. La replicación permite que los datos de un servidor de bases de datos (el maestro), sean replicados en uno o más servidores de bases de datos (los esclavos).

Replicación en MySQL.

Las características de MySQL soportan replicación asíncrona unidireccional: un servidor actúa como maestro y uno o más actúan como esclavos.

¿Cómo funciona la replicación?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 posición hasta la que el esclavo ha leído los logs en la última actualización satisfactoria. El esclavo recibe cualquier actualización que ha tenido lugar desde entonces, y se bloquea y espera para que el master le envíe nuevas actualizaciones.

Page 8: Replicacion y Cluster de Bases de Datos

2

Debe tenerse en cuenta que cuando se usa replicación, todas las actualizaciones de las tablas que se replican deben realizarse en el servidor maestro. De otro modo, se debe ser cuidadoso para evitar conflictos entre actualizaciones que hacen los usuarios a las tablas en el maestro y las actualizaciones que hacen en las tablas de los esclavos.

Ventajas de la Replicación:

La replicación unidireccional tiene beneficios para la robustez, velocidad, y administración del sistema:

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 estén sincronizados. Esta estrategia de balanceo de carga es efectiva si dominan consultas que no actualizan datos, pero este es el caso más habitual.

Otro beneficio de usar replicación es que puede realizar copias de seguridad usando un servidor esclavo sin molestar al maestro. El maestro continúa 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 configuración para varios esclavos y la replicación seguirá funcionando de la misma manera. El escenario es el siguiente:

Las configuraciones se realizan bajo dos computadoras con Sistema Operativo Debian Wheezy 7.0.

Si aún no se tiene instalado el servidor MySQL se instalará en una Terminal con la línea de comando:

apt-get install mysql-server

Page 9: Replicacion y Cluster de Bases de Datos

3

SERVIDOR MAESTRO:

Una vez instalado el servidor MySQL se procederá a las configuraciones correspondientes; primeramente se realizará la configuración 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 líneas de código:

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.

Page 10: Replicacion y Cluster de Bases de Datos

4

2. Se reinicia el servicio mysql:

# /etc/init.d/mysql restart

3. Se accede como root a mysql, pedirá la contraseña del servidor, ésta será la que se ha configurado en la instalación:

# mysql –u root –p

4. Dentro de la consola de MySQL se creará una Base de Datos

mysql > CREATE DATABASE ReplicacionDB;

5. Se crean los privilegios para la Replicación:

mysql > GRANT REPLICATION SLAVE ON *.* TO 'USER'@'%' IDENTIFIED BY 'PASSWORD';

Page 11: Replicacion y Cluster de Bases de Datos

5

Donde

USER: Es el nombre del usuario del esclavo.

% : Es la dirección donde está almacenado el esclavo, puede determinarse que la dirección sea

cualquiera, ubicando el símbolo % en lugar de la dirección.

PASSWORD: Es la contraseña del usuario esclavo.

6. Se establecen los privilegios:

mysql > FLUSH PRIVILEGES;

7. Se obtiene la información del servidor maestro:

mysql > SHOW MASTER STATUS;

Este comando nos devolverá el archivo y la posición de la Base de Datos, es importante, tener presentes estos datos, ya que serán utilizados en la configuración del esclavo.

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;

Page 12: Replicacion y Cluster de Bases de Datos

6

11. Con mysqldump se va a crear un backup de la base de datos, para que luego sea restaurada en el servidor esclavo.

# mysqldump -u root -p DATABASE_TO_BE_REPLICATED > DATABASE_TO_BE_REPLICATED.sql

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

Este comando generará un archivo .sql, el cual contendrá el backup de la base de datos, éste se almacenará en la dirección hacia la cual apunta la terminal.

12. Luego se accede a la consola de mysql nuevamente para descongelar las tablas de la base de datos que replicamos:

# mysql –u root –p

mysql > USE ReplicacionDB;

mysql > UNLOCK TABLES;

mysql > EXIT;

Page 13: Replicacion y Cluster de Bases de Datos

7

SERVIDOR ESCLAVO:

En el servidor esclavo, será necesario copiar el archivo .sql que fue generado, para restaurar la base de datos a partir de él, puede ser copiado a través de una memoria usb, transferencia punto a punto o por llaves SSH, tal cual es el ejemplo de la configuración aquí detallada:

1. A través de claves SSH, se transfiere el archivo de la máquina que sirve como servidor maestro a la que sirve como servidor esclavo:

# 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 dirección IP a la cual se copiará el archivo.

Page 14: Replicacion y Cluster de Bases de Datos

8

rutaAlmacenamiento: Es la ruta donde se almacenará el archivo.

2. Se crea la base de datos en el servidor esclavo, por medio del archivo que contiene el backup de la misma.

# mysql –u root –p DATABASE_TO_BE_REPLICATED <

DATABASE_TO_BE_REPLICATED.sql

3. Con un editor de texto, ya sea vim, nano o cualquier otro se abre el archivo de configuración my.cnf

# nano /etc/mysql/my.cnf

Y se modifican o agregan las líneas:

server-id=2

replicate-do-db=DATABASE_TO_BE_REPLICATED

skip-host-cache

skip-name-resolve

Page 15: Replicacion y Cluster de Bases de Datos

9

4. Se reiniciará el servicio mysql para poder aplicar los cambios.

# /etc/init.d/mysql restart

5. Se accederá la consola de MySQL para configurar el esclavo:

# mysql –u root –p

6. Se detienen los procesos del esclavo:

mysql > SLAVE STOP;

Page 16: Replicacion y Cluster de Bases de Datos

10

7. Luego se hará referencia al servidor maestro del cual obtendrá las actualizaciones el servidor esclavo:

mysql > CHANGE MASTER TO MASTER_HOST='192.168.56.1',

-> MASTER_USER='user',

-> MASTER_PASSWORD='password',

-> MASTER_LOG_FILE='/var/log/mysql/mysql-bin.0000XX',

-> MASTER_LOG_POS=XXX;

Dónde:

MASTER_HOST: Hace referencia a la dirección IP en la cual está el servidor maestro.

MASTER_USER: Usuario del servidor maestro con el cual se accede a MySQL.

MASTER_PASSWORD: Contraseña del servidor maestro con el cual se accede a MySQL.

MASTER_LOG_FILE: La dirección y el número que se obtuvo cuando se realizó el SHOW MASTER STATUS.

MASTER_LOG_POS: Posición de los logs, también obtenida con SHOW MASTER STATUS en el servidor maestro.

Page 17: Replicacion y Cluster de Bases de Datos

11

8. Se inicia el servidor esclavo:

mysql > SLAVE START;

9. Se verifica el estado del servidor esclavo:

mysql > SHOW SLAVE STATUS;

DEMOSTRACIÓN:

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

Page 18: Replicacion y Cluster de Bases de Datos

12

Y luego verificamos las tablas con el comando:

mysql > SHOW TABLES;

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

2. En el servidor esclavo, se accederá a MySQL y se verán 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.

Page 19: Replicacion y Cluster de Bases de Datos

13

Referencias:

1. Oracle MySQL, Capítulo 6. Replicación en MySQL. Obtenida el 3 de mayo de 2013 en http://dev.mysql.com/doc/refman/5.0/es/replication.html

2. Wallen J., Set up MySQL database replication to ensure up-to-date backups. Obtenida el 31 de abril de 2013 en http://www.techrepublic.com/blog/itdojo/set-up-mysql-database-replication-to-ensure-up-to-date-backups/3340?pg=1

Page 20: Replicacion y Cluster de Bases de Datos
Page 21: Replicacion y Cluster de Bases de Datos

15

PostgreSQL Cluster con PGPOOL-II

Henry Renderos, David García

Objetivos:

Aprender los conceptos básicos sobre el manejo de un clúster utilizando PostgreSQL 9.1 y PGPOOL-II en Linux.

Comprender el funcionamiento de un clúster.

Establecer los parámetros de inicialización para el clúster.

Realizar un escenario demostrativo sobre el uso de un clúster empleando replicación de bases de datos y sentencias SQL.

Visualizar el comportamiento de la replicación en la red.

Conceptos:

¿Qué es un clúster?

Un clúster es simplemente una colección de componentes que se unen y trabajan como un solo componente para proveer alta disponibilidad. Cuando hablamos de clúster de bases de datos, nos referimos a una arquitectura en la que tenemos varios equipos con parte de los datos del usuario trabajando al unísono como un solo sistema. La arquitectura de un clúster de base de datos viene definida por la manera en que se almacenan los datos en cada nodo.

¿Qué es PostgreSQL?

PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con su código fuente disponible libremente. Es el sistema de gestión de bases de datos de código abierto más potente del mercado y en sus últimas versiones no tiene nada que envidiarle a otras bases de datos comerciales.

PostgreSQL utiliza un modelo cliente/servidor y usa multiprocesos en vez de multihilos para garantizar la estabilidad del sistema. Un fallo en uno de los procesos no afectará el resto y el sistema continuará funcionando.

¿Qué es PGPOOL-II?

pgpool-II es un middleware que se encuentra entre los servidores de PostgreSQL y un cliente de base de datos PostgreSQL. Ofrece las siguientes características:

Agrupación de conexiones

Page 22: Replicacion y Cluster de Bases de Datos

16

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

Replicación pgpool-II puede gestionar múltiples servidores PostgreSQL. La activación de la función de replicación hace que sea posible la creación de una copia de seguridad en tiempo real en 2 o más grupos PostgreSQL, de manera que el servicio pueda continuar sin interrupción si uno de esos grupos falla.

Balanceo de carga

Si se replica una base de datos (ya que se ejecuta en el modo replicación o modo maestro / esclavo), la realización de una consulta SELECT en cualquier servidor devolverá el mismo resultado. pgpool-II se aprovecha de la función de replicación con el fin de reducir la carga en cada servidor PostgreSQL. Lo hace mediante la distribución de las consultas SELECT entre los servidores disponibles, mejorando el rendimiento global del sistema. En un escenario ideal, el rendimiento de lectura podría mejorar proporcionalmente al número de servidores PostgreSQL. El equilibrio de carga funciona mejor en un escenario donde hay una gran cantidad de usuarios que ejecutan muchas consultas de sólo lectura al mismo tiempo.

Limitar el exceso de conexiones

Hay un límite en el número máximo de conexiones simultáneas con PostgreSQL, y nuevas conexiones son rechazados cuando se alcanza este número. Al aumentar este número máximo de conexiones, sin embargo, aumenta el consumo de recursos y tiene un impacto negativo en el rendimiento general del sistema. pgpool-II también tiene un límite en el número máximo de conexiones, pero las conexiones adicionales se pondrán en cola en lugar de devolver un error de inmediato.

Consultas en paralelo

Con la función de consultas en paralelo, los datos se pueden dividir entre varios servidores, por lo que una consulta se puede ejecutar en todos los servidores al mismo tiempo, reduciendo el tiempo de ejecución total. La consulta paralela es la que funciona mejor en la búsqueda de datos a gran escala.

pgpool-II habla backend de PostgreSQL y el protocolo de interfaz, y transmite mensajes entre un backend y un frontend. Por lo tanto, una aplicación de base de datos (frontend) piensa que pgpool-II es el servidor PostgreSQL actual, y el servidor (backend) ve a pgpool-II como uno de sus clientes. Debido a que pgpool-II es transparente para el servidor y el cliente, una aplicación de base de datos existente se puede utilizar con pgpool-II casi sin un cambio en su código fuente.

Page 23: Replicacion y Cluster de Bases de Datos

17

Desarrollo:

INSTALACIÓN

1. Utilidades para la gestión y el mantenimiento del clúster.

# 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 clúster con sus respectivas direcciones IP.

Page 24: Replicacion y Cluster de Bases de Datos

18

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

Nodo 1 o Hostname: pgsql1 o Dirección IP: 192.168.1.7

Nodo 2 o Hostname: pgsql2 o Dirección IP: 192.168.1.4

Máscara de red de 24 bits.

Dirección IP del enrutador: 192.168.1.1

3. Comenzaremos a configurar PostgreSQL en ambos nodos pero pgpool-II solo en el nodo pgsql1. Los comandos deberán ejecutarse como root (#) o como el usuario postgres ($).

4. Instalaremos las cabeceras de la librería de PostgreSQL, el paquete de desarrollo de PostgreSQL y las utilidades de compilación de GNU)

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

5. Una vez instalado, instalaremos PostgreSQL en ambos nodos del clúster:

Page 25: Replicacion y Cluster de Bases de Datos

19

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

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

# apt-get install pgpool2 libpgpool0

CONFIGURACIÓN DE POSTGRESQL

Los siguientes pasos se aplican a las instancias de PosgreSQL en los nodos pgsql1 y pgsql2.

1. Comenzaremos, como usuario postgres, añadiendo el usuario de base de datos (role) pgpool2, sin contraseña:

# su – postgres

$ createuser –superuser pgpool2

2. Editamos ahora el fichero /etc/postgresql/9.1/main/pg_hba.conf y añadimos el acceso para todos los usuarios desde cualquier dirección IP. (NOTA: esto se hace por motivos de enseñanza, el acceso sólo debe permitirse para el usuario pgpool2 desde la dirección IP en donde está instalado.)

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

El fichero deberá quedarnos de la siguiente manera:

Page 26: Replicacion y Cluster de Bases de Datos

20

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

listen_addresses = ‘*’

También podemos restringirlo a que solo escuche peticiones provenientes de la dirección IP en donde se encuentra pgpool-II

4. Reiniciamos PostgreSQL para activa los cambios.

# service postgresql restart

CONFIGURACIÓN DE PGPOOL-II

La configuración de pgpool-II la realizaremos únicamente en el nodo pgsql1, pues sólo ese host lo posee.

Page 27: Replicacion y Cluster de Bases de Datos

21

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

Deberemos editar el archivo para configurarlo a nuestra medida. Se configurarán:

Pool de conexiones

Replicación

Balanceo de carga

Las únicas directivas que modificaremos se muestran a continuación, las demás las dejaremos intactas:

listen_addresses = ‘*’

port = 9999

backend_hostname0 = ‘pgsql1’

backend_port0 = ‘5432’

backend_weight0 = 1

backend_hostname1= ‘pgsql2’

backend_port1 = ‘5432’

backend_weight1 = 1

replication_mode = true

load_balance_mode = true

replicate_select = true

pgpool2_hostname = ‘pgsql1’

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 depuración primero lo detendremos con el comando “service pgpool2 stop” y lo arrancaremos en modo debug con de la siguiente manera:

Page 28: Replicacion y Cluster de Bases de Datos

22

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

4. En otra pestaña o ventana de la terminal probaremos conectarnos a través de pgpool-II con el siguiente comando:

# psql –h pgsql1 –p 9999 –U pgpool2 –d postgres

El significado del comando anterior se detalla a continuación:

-h es el nombre del host al que nos vamos a conectar y en donde está instalado pgpool-II.

-p es el puerto que definimos en el archivo /etc/pgpool2/pgpool.conf

-U es el usuario que creamos en los dos nodos del clúster.

-d es la base de datos a la que nos vamos a conectar

Si todo va bien podremos ver que en la terminal se nos muestra algo como sigue:

postgres=#

Lo que nos indica que nos hemos podido conectar a través de pgpool-II

PRUEBAS DE REPLICACIÓN

1. Crearemos una base de datos que será replicada a través de pgpool-II de la siguiente forma:

# createdb –h pgsql1 –p 9999 –U pgpool2 basesdedatosues

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

Page 29: Replicacion y Cluster de Bases de Datos

23

$ psql -l

POSTGRESQL Y PGPOOL-II EN LA RED

A continuación se muestran algunas capturas de lo que sucede en la red al momento de que se realiza una sentencia SQL a través de pgpool-II en los nodos pertenecientes al clúster.

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 través de pgpool-II y observaremos que aparecerán los siguientes paquetes en nuestra escucha:

Page 30: Replicacion y Cluster de Bases de Datos

24

3. Observaremos con más detenimiento el paquete 874 y veremos que al momento de la replicación lo que se transporta a través de la red son las sentencias SQL. La query que fue introducida en el nodo pgsql1 a través de pgpool-II fue “insert into usuario values („Base‟,‟Pass‟); y efectivamente vemos en el paquete que esa sentencia es la replicada en el nodo pgsql2 con dirección IP 192.168.1.4.

Referencias:Jaume Sabater (2008). Replicación y alta disponibilidad de PostgreSQL con pgpool-II. (1 Nov – 2008) http://linuxsilo.net/articles/postgresql-pgpool.htmlpgpool Global Development Group (2003 – 2011). Pgpool-II user manual http://pgpool.projects.pgfoundry.org/pgpool-II/doc/pgpool-en.html

Page 31: Replicacion y Cluster de Bases de Datos

25

Oracle Stream Replication

Portillo Alvarado, Pablo Oswaldo. Gómez Arana, Herber Oswaldo. Mendes Salgado, Rebeca Marcela. Chicas Blanco, Karla Grisel.

Objetivos:

Explicar de forma clara los conceptos relacionados con la replicación Stream en Oracle database 11g R2.

Explicar la diferencia entre una replicación síncrona y una replicación asíncrona.

Presentar con claridad las configuraciones o pasos que se deben seguir para llevar a cabo una replicación stream en Oracle database.

Replicar cambios DML de manera bidirectional en 2 Bases de Datos usando el gestor Oracle Estándar Edition 11g.

Page 32: Replicacion y Cluster de Bases de Datos

26

Conceptos:

Antes de seguir es importante conocer algunos conceptos. ¿Qué es un Oracle Stream? Es una herramienta proporcionada por Oracle que se encarga de propagar y administrar datos, transacciones y eventos en una fuente de datos ya sea dentro de una base de datos, o de una base de datos a otra, permitiendo tener asi ambas bases de datos “sincronizadas” y la información más segura. Tipos de Streams: Replicación Síncrona: Este tipo de replicación tiene sus limitantes, principalmente debe ser utilizada para aplicaciones en las cuales se necesite un flujo pequeño de información, ya que solo soporta la replicación de 1 o pocas tablas de un esquema determinado y solo replica cambios DML; los DDL no son soportados. Utiliza queues llamadas también colas que se encargan de capturar la replicación y encolarla hacia la otra base de datos, y viceversa. Para más información consulte: http://docs.oracle.com/cd/B28359_01/server.111/b28321/strms_capture.htm#STRMS168. Replicación Asíncrona: Replicación mediante procesos, los cambios se propagan a través de redo-logs. Puede propagar tanto cambios DDL como DML. Básicamente la replicación Stream de Oracle consta de estos 3 pasos:

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

APPLY

Source Database

DESTINATION

DATABASE PROPAGATION CAPTURE

Destinetion Database

Page 33: Replicacion y Cluster de Bases de Datos

27

Capture (captura): Esta paso se lleva a cabo en la base de datos origen de la replicación capturando los cambios en el momento en que son realizados, estos cambios pueden ser DML o DDL dependiendo del tipo de replicación q se este realizando, y pueden ser realizados mediante COLAS o mediante PROCESOS dependiendo de si es síncrona o asíncrona. Propagation (propagación): Este paso lo realiza la base de datos origen quien envía el cambio luego de capturarlo, este se envía mediante redologs que son interpretados en la base de datos destino. Apply (aplicacion): Este paso se realiza en la base de datos destino quien toma los redologs y los aplica en sus tablas, esquemas o base de datos.

Page 34: Replicacion y Cluster de Bases de Datos

28

Desarrollo:

Este documento explica cómo implementar una replicación de ORACLE STREAM en ORACLE 11g R2 a nivel de servidores Oracle entre 2 bases de datos diferentes en Sistemas Operativos Windows Server 2012, arquitectura para 64bits. Desde nuestro punto de vista lo primero que hay que hacer es revisar el tipo de instalación que realizamos ya que si es la Standar Edition la única forma de realizar la replicación de Streams es atreves de un mecanismo sincrono ya que esta instalación no soporta la replicación a través de procesos, este documento se encargara únicamente de la replicación síncrona (a través de queues/colas) entre bases de datos. Si usted necesita replicar grandes volúmenes de información ya sea una base de datos entera o un esquema completo deberá utilizar otro tipo de instalación como la Enterprise que soporta la replicación de tipo asíncrona. Vea Imagen 1

Imagen 1

Antes que todo, debemos crear las Bases de Datos en modo archive log. En nuestro caso se creara la base de datos BDA en el servidor #1 y BDB en el servidor #2.

CONFIGURACION DEL ENTORNO DE RED. Ambos servidores se encuentran conectados punto-punto utilizando la subred 172.16.0.0/24.

El servidor #1 tiene la dirección 172.16.0.1

El servidor #2 la dirección 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

Page 35: Replicacion y Cluster de Bases de Datos

29

2. Agregar las cadenas de conexión respectivas en el archivo TNSNAMES.ORA. Estas nos ayudaran a lograr la conectividad entre ambos servidores a nivel de las bases de datos. 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 conexión 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 conexión 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. Creación de Usuario administrador de la replicación 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 replicación stream. Es recomendable crear un usuario nuevo que administre la replicación stream, dicho usuario deberá ser creado de la misma forma en ambas bases de datos.

3.1- Creación de Tablespace y Datafiles.

En su navegador abra el Enterprise Manager y conéctese como usuario sys.

De click en la ficha Servidor, luego diríjase a la sección 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 tamaño 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.

Page 36: Replicacion y Cluster de Bases de Datos

30

Imagen 2

Imagen 3

Page 37: Replicacion y Cluster de Bases de Datos

31

Imagen 4

3.2- Crea el usuario strmadmin.

Ir a ficha Servidor.

En el apartado Seguridad damos click en la opción 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 botón Crear.

Creamos el usuario strmadmin, con contraseña 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.

Page 38: Replicacion y Cluster de Bases de Datos

32

Imagen 5

3.3- Ahora vamos a asignar privilegios. 3.3.1 Lo primero sera convertir nuestro usuario strmadmin en un superusuario del EM

(Enterprise manager) esto nos va a permitir gestionar y monitorear nuestra replicación stream síncrona con la ayuda de las herramientas del enterprise manager.

Dar click en la ficha Servidor.

Ir a la sección Administración de Enterprise Manager y seleccionamos Usuarios de Enterprise Manager. Nos abrirá una nueva ventana.

En la sección 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 botón Revisar, luego Terminar.

Ahora lo que queda es dejar nuestro Usuario como Superadministrador, para ello seleccionamos el usuario recién 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.

Page 39: Replicacion y Cluster de Bases de Datos

33

Imagen 6

Imagen 7

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

Page 40: Replicacion y Cluster de Bases de Datos

34

Imagen 8

3.3.2- Agregación de Privilegios requeridos con GRANT. Estos privilegios le permitirán a nuestro usuario realizar tareas de administración y ser dueño de nuestra replicación 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 Agregación de los roles EXP_FULL_DATABASE e IMP_FULL_DATABASE. SQL> grant exp_full_database to strmadmin; SQL> grant imp_full_database to strmadmin;

Page 41: Replicacion y Cluster de Bases de Datos

35

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

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

4.1- Creación 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 conexión de nuestra base de datos en este caso BDA y Se crea el enlace hacia la Base de Datos de servidor #2 BDB. SQL> CONNECT strmadmin/strmadmin@BDA SQL> CREATE DATABASE LINK BDB CONNECT TO strmadmin IDENTIFIED BY strmadmin USING 'BDB';

4.2- Creación 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 conexión de nuestra base de datos en este caso BDB y Se crea el enlace hacia la Base de Datos de servidor #1 BDA. SQL> CONNECT strmadmin/strmadmin@BDB SQL> CREATE DATABASE LINK BDA CONNECT TO strmadmin IDENTIFIED BY strmadmin USING 'BDA'; 5 Creación 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 contraseña. Esto debe de realizarse en ambas Bases de Datos. Se crearan 2 parámetros de inicialización, con nombres, capture_queue y apply_queue . Vea el siguiente enlace y diríjase a la sección http://docs.oracle.com/cd/B28359_01/server.111/b28324/tdpii_common_ii.htm#CHDJHCAI

Ir a la pestaña Movimiento de Datos

En la sección Streams seleccionar la opción Gestionar Colas Avanzadas. Esto abrirá una nueva ventana

Buscamos un botón que dice Crear.

Seleccionamos Cola Normal, Tipo de Dato SYS.ANYDATA

Creamos las colas capture_queue y apply_queue como se muestran en las Figuras Imagen 9 e Imagen 10.

Page 42: Replicacion y Cluster de Bases de Datos

36

Imagen 9

Imagen 10

Page 43: Replicacion y Cluster de Bases de Datos

37

6 Creación de tabla en el esquema del usuario HR.

Esta tabla debe crearse en ambas bases de datos ya que nuestra replicación será síncrona, por lo tanto no podremos replicar cambios de tipo DDL y al crear una tabla en una base de datos esta no se replicara en la otra, para ello creamos esta tabla en este esquema y en ambas DB y la definiremos mas adelante para ser el objeto que tenemos como objetivo de nuestra replicación, para ello:

Conectarse al esquema de la Base de Datos en el que se desea crear una nueva tabla.

Si no ha desbloqueado el esquema, puede hacer lo siguiente en SQLPLUS desde el usuario sys. Para este caso se usara el esquema hr.

> sqlplus „/ as sysdba‟

SQL> alter user hr account unlock identified by hr;

Con esto desbloqueamos el esquema hr y le asignamos la contraseña 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 reemplácela por BDB. Ahora creamos la tabla.

SQL> create table alumno ( ID number primary key, nombre varchar2(20), carrera varchar2(20));

7 Creación y agregación de reglas del apply process en ambas Bases de Datos.

7.1.1- Creación del apply process en BDA ubicada en Servidor #1.

BEGIN

DBMS_APPLY_ADM.CREATE_APPLY(

queue_name => 'strmadmin.apply_queue',

apply_name => 'apply_emp_dep',

apply_captured => FALSE);

END;

/

7.1.2- Agregación de reglas del apply process en BDA ubicada en Servidor #1.

BEGIN

DBMS_STREAMS_ADM.ADD_TABLE_RULES(

table_name => 'hr.alumno',

streams_type => 'apply',

streams_name => 'apply_emp_dep',

Page 44: Replicacion y Cluster de Bases de Datos

38

queue_name => 'strmadmin.apply_queue',

source_database => 'BDB');

END;

/

7.2.1- Creación del apply process en BDB ubicada en Servidor #2.

BEGIN

DBMS_APPLY_ADM.CREATE_APPLY(

queue_name => 'strmadmin.apply_queue',

apply_name => 'apply_emp_dep',

apply_captured => FALSE);

END;

/

7.2.2- Agregación 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;

/

Page 45: Replicacion y Cluster de Bases de Datos

39

8 Configuración de la Propagación para la notificación de cambios.

8.1. En Base de Datos BDA.

BEGIN

DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(

table_name => 'hr.alumno',

streams_name => 'send_emp_dep',

source_queue_name => 'strmadmin.capture_queue',

destination_queue_name => 'strmadmin.apply_queue@BDB',

source_database => 'BDA',

queue_to_queue => TRUE);

END;

/

8.2. En Base de Datos BDB.

BEGIN

DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(

table_name => 'hr.alumno',

streams_name => 'send_emp_dep',

source_queue_name => 'strmadmin.capture_queue',

destination_queue_name => 'strmadmin.apply_queue@BDA',

source_database => 'BDB',

queue_to_queue => TRUE);

END;

/

Page 46: Replicacion y Cluster de Bases de Datos

40

9 Configuración de Captura Síncrona.

En ambas Bases de Datos hacer lo siguiente. Esto es necesario para capturar lo que se propaga de la otra Base de Datos con la que se está conectado.

BEGIN

DBMS_STREAMS_ADM.ADD_TABLE_RULES(

table_name => 'hr.alumno',

streams_type => 'sync_capture',

streams_name => 'sync_capture',

queue_name => 'strmadmin.capture_queue');

END;

/

10 Configuración de instanciación de SCN.

10.1 En Base de Datos BDA.

DECLARE

iscn NUMBER;

BEGIN

iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();

DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@BDB(

source_object_name => 'hr.alumno',

source_database_name => 'BDA',

instantiation_scn => iscn);

END;

/

Page 47: Replicacion y Cluster de Bases de Datos

41

10.2 En Base de Datos BDB.

DECLARE

iscn NUMBER;

BEGIN

iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();

DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@BDA(

source_object_name => 'hr.alumno',

source_database_name => 'BDB',

instantiation_scn => iscn);

END;

/

11 Iniciar apply process.

Esta configuración 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 contraseña “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.

Page 48: Replicacion y Cluster de Bases de Datos

42

Referencias:

Documentación 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

Page 49: Replicacion y Cluster de Bases de Datos

43

Oracle Data Guard

Samuel Menéndez, Lisandro Martínez, Isidro Flores, Erick Valenzuela

Objetivos

Documentar la creación de una base de datos standby (física) con la solución de Oracle Data Guard

11g R2.

Sincronizar una base de datos standby física con su contraparte de producción para la protección de

datos y la alta disponibilidad.

Permitir que una base de datos standby física esté abierta para acceso de solo lectura– para

informes, consultas simples o complejas, clasificación, acceso basado en la web, etc. mientras se

aplican cambios a la base de datos de producción.

Identificar todos requisitos necesarios tanto de software como de hardware para tener un óptimo

rendimiento en la tecnología Oracle en su versión Enterprise.

Conceptos

Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo

contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca

puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos

en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnológico de campos

como la informática y la electrónica, la mayoría de las bases de datos están en formato digital

(electrónico), y por ende se ha desarrollado y se ofrece un amplio rango de soluciones al problema

del almacenamiento de datos.

Un Sistema de Gestión de Bases de Datos (SGBD) es un conjunto de programas que permiten el almacenamiento, modificación y extracción de la información en una base de datos, además de proporcionar herramientas para añadir, borrar, modificar y analizar los datos. Los usuarios pueden acceder a la información usando herramientas específicas de interrogación y de generación de informes, o bien mediante aplicaciones al efecto. Los SGBD también proporcionan métodos para mantener la integridad de los datos, para administrar el acceso de usuarios a los datos y recuperar la información si el sistema se corrompe. Permite presentar la información de la base de datos en variados formatos. La mayoría de los SGBD incluyen un generador de informes. También puede incluir un módulo gráfico que permita presentar la información con gráficos y tartas. Oracle Corporation es una de las mayores compañías de software del mundo. Sus productos van

desde bases de datos (Oracle) hasta sistemas de gestión. Cuenta además, con herramientas propias

de desarrollo para realizar potentes aplicaciones, como Oracle Designer, Oracle JDeveloper y

Oracle Developer Suite. Hoy Oracle es el estándar de oro para la tecnología de base de datos y

aplicaciones en las empresas en todo el mundo. La compañía es el proveedor líder mundial de

software de gestión de información y la segunda mayor compañía de software independiente. La

adquisición de Sun le otorgó un papel de liderazgo en el campo del software.

Se considera a Oracle Database como uno de los sistemas de bases de datos más completos, destacando:

Page 50: Replicacion y Cluster de Bases de Datos

44

Soporte de transacciones: Una transacción es una interacción con una estructura de datos

compleja, compuesta por varios procesos que se han de aplicar uno después del otro. La

transacción debe realizarse de una sola vez y sin que la estructura a medio manipular pueda

ser alcanzada por el resto del sistema hasta que se hayan finalizado todos sus procesos.

Estabilidad: se dice que un sistema es estable cuando su nivel de fallos disminuye por

debajo de un determinado umbral, que varía dependiendo de la estabilidad que se requiera.

Escalabilidad: es la propiedad deseable de un sistema, una red o un proceso, que indica su

habilidad para reaccionar y adaptarse sin perder calidad, o bien manejar el crecimiento

continuo de trabajo de manera fluida, o bien para estar preparado para hacerse más grande

sin perder calidad en los servicios ofrecidos.

Soporte multiplataforma: es un atributo conferido a los programas informáticos o los

métodos de cálculo y los conceptos que se ejecutan e interoperar en múltiples plataformas

informáticas.

Oracle Data Guard proporciona la infraestructura de software de administración, control y

automatización para crear y mantener una o más bases de datos de reserva y así proteger los datos

de Oracle contra fallas, desastres, errores y daños. Data Guard es una de las numerosas

características de alta disponibilidad (HA) integradas en Oracle Database, que aseguran la

continuidad de los negocios reduciendo al mínimo 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 producción pasa a la base de datos de reserva.

El único tiempo de inactividad es el necesario para efectuar la transición. De ese modo, aumenta la

disponibilidad y se reduce el riesgo al realizar mantenimiento de hardware o del sistema operativo,

mantenimiento de sitios o al aplicar nuevos grupos de parches a la base de datos, actualizar a

versiones completas o implementar otros cambios significativos en la base de datos.

Una base de datos física de reserva, como es una réplica exacta de la base principal, también

puede servir para aliviar a la base de datos principal de la sobrecarga de realizar backups.

Data Guard 11g versión 2 está diseñado para reducir el impacto del transporte sincrónico en el

rendimiento de la base de datos principal. Ahora los datos redo se transmiten a la base de datos de

reserva remota en paralelo con las E/S de archivos de registro locales en línea de la base principal, y

Page 51: Replicacion y Cluster de Bases de Datos

45

así se evita que las E/S de reserva influyan sobre el total de tiempo de recorrido de ida y vuelta. De

ese modo, se permite mayor distancia geográfica entre las bases de datos principal y de reserva en

una configuración sincrónica con cero pérdidas de datos. En redes de baja latencia, puede reducir el

impacto de la replicación sincrónica en el rendimiento de la base de datos principal hasta alcanzar

un nivel cercano a cero, por lo cual resulta interesante para complementar una base de reserva

asincrónica remota a fin de lograr una protección de alta disponibilidad y cero pérdida de datos

contra fallas de las bases de datos y los componentes (fallas de redes SAN, por ejemplo).

Una transición es una operación planificada que se usa para reducir el tiempo de inactividad

durante el mantenimiento programado, como actualizaciones de hardware o del sistema operativo,

actualizaciones graduales de la base de datos de Oracle y otras tareas de mantenimiento que se

realizan en las bases de datos. Independientemente del servicio de transporte (ya sea sincrónico o

asincrónico) o el modo de protección que se utilice, una transición siempre es una operación en la

que no se pierde ningún dato.

El archivo pfile contiene todos los parámetros de inicialización de la base de datos. [2]

Un SPFILE (archivo de parámetros del servidor), por otro lado, es un archivo binario de servidor

persistente que sólo se puede modificar con el comando "ALTER SISTEMA DE JUEGO". Esto

significa que usted ya no necesita una copia local de la pfile para iniciar la base de datos desde un

equipo remoto. Edición de una SPFILE se corrompen, y usted no será capaz de iniciar la base de

datos más. [3]

SQL*Plus es un programa de línea de comandos de Oracle que puede ejecutar comandos SQL y PL/SQL de forma interactiva o mediante un script. SQL*Plus opera como una herramienta relativamente simple con una interfaz de líneas de comando básica. Los programadores y los administradores de bases de datos (DBA's) lo usan de forma muy común como interfaz fundamental en la mayoría de las instalaciones de software de Oracle. Oracle 2010, Oracle® Database SQL Language Reference 11g, obtenida el 1 de mayo de 2013, de http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6016.htm

Desarrollo

La práctica consta de dos bases de datos: una primaria y una secundaria que servirá de respaldo en caso de fallar la primaria, en ese ese caso la base de datos secundaria lleva un backup de todos los datos y se pueden acceder a ellos pero en modo protegido o de lectura.

Requisitos:

2 computadoras con características similares (una se utilizara como primaria y la otra como bases de

datos secundaria).

Un cable UTP cruzado.

Sistema operativo OpenSUSE en su versión 12.3 (32 bits).

Oracle Enterprise 11g R2 (32 bits), es necesario utilizar la versión Enterprise ya que en las demás

versiones no cuenta con las herramientas necesarias para configurar un Data guard.

La máquina primaria debe tener instalada una base de datos y la maquina secundaria únicamente el software de Oracle (sin base de datos).

Page 52: Replicacion y Cluster de Bases de Datos

46

Lo primero que debe hacerse es que cada computadora tenga una dirección IP del mismo rango para tener conectividad entre las dos computadoras, en este caso se utilizan las siguientes:

Maquina primaria: 192.168.15.100/24

Línea de comando: ifconfig eth0 192.168.15.100/24 up

Maquina secundaria: 192.168.15.101/24

Línea 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

Configuración del Listener

En esta explicación estamos utilizando el puerto 7438 y el archivo listener.ora queda de la siguiente manera:

Page 53: Replicacion y Cluster de Bases de Datos

47

Verificar que la base de datos está en modo archivelog:

SQL>SELECT log_mode FROM v$database;

LOG_MODE

------------

NOARCHIVELOG

SQL>

Si en dado caso no se encuentra en dicho modo, se establece de la siguiente manera:

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP MOUNT;

SQL>ALTER DATABASE ARCHIVELOG;

SQL>ALTER DATABASE OPEN

Activamos FORCE LOGGING con el siguiente comando:

SQL>ALTER DATABASE FORCE LOGGING;

Inicialización de parámetros:

Verificar que los parámetros DB_NAME y DB_UNIQUE_NAME sean iguales, en este caso DB11G en la base de datos primaria.

DB_NAME especifica un identificador de base de datos de hasta 8 caracteres. Este parámetro debe ser especificado y debe corresponder con el nombre especificado en la sentencia CREATE DATABASE.

DB_UNIQUE_NAME especifica un nombre único global para la base de datos. De cada base de datos DB_UNIQUE_NAME debe ser único dentro de la empresa. El valor de DB_UNIQUE_NAME puede ser de hasta 30 caracteres y distingue entre mayúsculas y minúsculas. Los siguientes caracteres son válidos en un nombre de base de datos: caracteres alfanuméricos, guion bajo (_), signo de número (#) y el signo de dólar ($). [4]

Page 54: Replicacion y Cluster de Bases de Datos

48

El DB_NAME de la base de datos secundaria deberá ser el mismo (DB11G) de la primaria, pero deben tener diferente valor de DB_UNIQUE_NAME. Los valores DB_UNIQUE_NAME de ambas bases serán utilizadas en el DG_CONFIG configurando el parámetro LOG_ARCHIVE_CONFIG. Para esta configuración la base secundaria será configurada con el valor “DB11G_STBY”.

SQL>ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB11G,DB11G_STBY)';

LOG_ARCHIVE_CONFIG: este parámetro habilita o deshabilita el envío de redo logs a destinos remotos y el recipiente de estos. Este parámetro tiene varios atributos pero el que utilizaremos será el siguiente:

DG_CONFIG especifica hasta 30 nombres de bases de datos únicas (Definidas con el parámetro DB_UNIQUE_NAME) para todas las bases de datos en tu configuración de Data Guard. [5]

Se establece los destinos de los archivos remotos. En este caso se utiliza flash recovery área para la ubicación local.

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 parámetro tiene varios atributos que son necesarios para configurar tu ambiente de Dataguard:

ASYNC (Default): Los datos generados de redo por transacción no tienen que haber sido recibidos en cada uno de los destinos habilitados antes de cometerse ésta.

SYNC: Los datos generados de redo por transacción tienen que haber sido recibidos en cada uno de los destinos habilitados antes de cometerse ésta.

AFFIRM y NOAFFIRM: Controla si un destino de transporte de redo acusa de recibo los datos de redo antes o después de escribir estos al standby redo log.

DB_UNIQUE_NAME: Especifica un nombre único para la base de datos que va a recibir los datos de redo. Tienes que especificar este nombre, no hay un valor por default.

VALID_FOR .- Identifica cuando el servicio de transporte de redo puede transmitir datos de redo a los destinos, esto se basa en los siguiente factores:

redo_log_type: Si los archivos de Online Redo Log, Standby Redo log o ambos este siendo archivados en la base de datos destinada.

database_role: Si el rol de la base de datos es la Primaria o la base de datos en Stanby. [6]

Page 55: Replicacion y Cluster de Bases de Datos

49

Los parámetros LOG_ARCHIVE_FORMAT y LOG_ARCHIVE_MAX_PROCESSES deben configurarse con los valores apropiados, así como el REMOTE_LOGIN_PASSWORDFILE debe establecerse en modo exclusive.

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 configuración previa es recomendable estar seguro de que la base de datos primaria esta lista para cambiar de rol y convertirse en una secundaria.

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 parámetros tengan efecto.

Configuración 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 continuación se muestran las entradas para este ejercicio:

Page 56: Replicacion y Cluster de Bases de Datos

50

Respaldo de la base de datos primaria

Para un backup de la base de datos basado en duplicado, o en restaurado manual debe hacerse lo siguiente:

$ rman target=/ RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

Crear un Controlfile y PFILE para la base de datos secundaria:

Crear control file para la base de datos secundaria usando el siguiente comando:

SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/db11g_stby.ctl';

Crear el archivo de parámetros (PFILE) para la secundaria:

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

Una vez creado el archivo de parámetros, se procede a configurar las siguientes entradas:

*.db_unique_name='DB11G_STBY' *.fal_server='DB11G' *.log_archive_dest_2='SERVICE=db11g ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G'

FAL_SERVER especifica el servidor FAL (Fetch Archive Log) para un base de datos en Standby. Este valor es un nombre de servicio de Oracle Net.

Se deben crear los standby redo logs de la siguiente manera:

Page 57: Replicacion y Cluster de Bases de Datos

51

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

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

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

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

CONFIGURACIÓN MANUAL DE LA BASE SECUNDARIA

Verificar la configuración de listener.ora y tnsnames.ora, deberán contener la siguiente configuración:

Listener.ora

Tnsnames.ora

Page 58: Replicacion y Cluster de Bases de Datos

52

Crear los siguientes directorios que son necesarios:

$ mkdir -p /u01/app/oracle/oradata/DB11G $ mkdir -p /u01/app/oracle/flash_recovery_area/DB11G $ mkdir -p /u01/app/oracle/admin/DB11G/adump

Se copian los siguientes archivos de configuración 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 contraseña.

$ 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 añadir una regla de permitir escuchar por el puerto 22, ya que SCP usa ese puerto para el copiado seguro (Secure CoPy).

Iniciar listener

Asegurarse de que el listener de la base de datos secundaria es iniciado.

Page 59: Replicacion y Cluster de Bases de Datos

53

$ lsnrctl start

Restaurar copia de seguridad

Crear el SPFILE a partir del PFILE

$ export ORACLE_SID=DB11G $ sqlplus / as sysdba SQL> CREATE SPFILE FROM PFILE='/tmp/initDB11G_stby.ora';

Restaurar los archivos de copia de seguridad.

$ export ORACLE_SID=DB11G $ rman target=/ RMAN> STARTUP MOUNT; RMAN> RESTORE DATABASE;

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

Crear los Redo Logs Crear los online redo logs para la base secundaria SQL>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;

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

Page 60: Replicacion y Cluster de Bases de Datos

54

SQL>ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo02.log') SIZE 52428800;

SQL>ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo03.log') SIZE 52428800;

SQL>ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

Después 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 aplicación. Inicie el proceso de aplicación en el servidor secundario SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Si se necesita cancelar el proceso de aplicación, 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.

Page 61: Replicacion y Cluster de Bases de Datos

55

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

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

SQL>ALTER SYSTEM SWITCH LOGFILE;

Compruebe el nuevo redo log archivados ha llegado al servidor en espera y se han aplicado. SQL>ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

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

Modo de protección Cada vez que configuramos un Data Guard (StandBy mas envío de archives automáticos) siempre vamos a quedar enmarcados en unos de estos tipos de disponibilidad de la StandBy : 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 cómo actúa 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 protección cada redo data -vector de redo generado en la primaria- debe ser aplicado por lo menos en una StandBy , en los on line redo logs y además en los redo de stanby de esa Standby sólo allí se produce el commit. Si por ABC motivo el redo data no es escrito en una StandBy , la base de datos primaria se viene abajo (shutdown), si existen 2 StandBy en máxima protección , basta que los redo data sean escritos en 1 de ellas, para que la base de datos productiva siga arriba. MAXIMA DISPONIBILIDAD (MAXIMUM AVAILABILITY) Este modo de protección no afecta la base de datos y proporciona un alto nivel de protección de los datos, tal cual en el modo de máxima protección, las transacciones no se comitean hasta que el redo data sea aplicado en los redologs de la base de datos standby , por lo menos en una de ellas (si existe más de una) Si no se puede escribir el redo data, en por lo menos una StandBy , la base de datos primaria no se cae.

Page 62: Replicacion y Cluster de Bases de Datos

56

MAXIMA PERFORMANCE (MAXIMUM PERFORMANCE) Este modo de protección ofrece la mayor seguridad en la base de datos sin perder nada en la performance de la base de datos primaria, acá las transacciones de la base de datos primaria se les generá commit sólo cuando la transacción llega a los redo locales. Este modo se debiese usar cuando la red hacía la StandBy no es lo suficientemente óptima y se producen delays al momento de traspasar paquetes a través de TCP. De forma predeterminada, con la creación de una base de datos en espera, la base de datos primaria está en modo de rendimiento máximo. 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 máxima.

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;

Máximo 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;

Máxima protección.

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;

Page 63: Replicacion y Cluster de Bases de Datos

57

Base de datos de conmutación (SWITHOVER) (primaria y secundaria) Una base de datos puede estar en uno de dos modos mutuamente excluyentes (primaria o en espera). Estas funciones se pueden modificar en tiempo de ejecución sin pérdida de datos o restablecimiento de registros redo. Este proceso se conoce como conmutación (switchover) y puede llevarse a cabo mediante las siguientes declaraciones

Convertir base de datos primaria a secundaria.

SQL>CONNECT / AS SYSDBA

SQL>ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY;

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP NOMOUNT;

SQL>ALTER DATABASE MOUNT STANDBY DATABASE;

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

Convertir la base de datos standby original a primaria. SQL>CONNECT / AS SYSDBA

SQL>ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP;

Failover Si la base de datos principal no está disponible la base de datos standby se puede activar como base de datos primaria con las siguientes sentencias. SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;

SQL>ALTER DATABASE ACTIVATE STANDBY DATABASE;

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

Page 64: Replicacion y Cluster de Bases de Datos

58

La base de datos primaria original, ahora se puede configurar como un modo de espera. Si Flashback base de datos se habilita en la base de datos primaria, a continuación, esto se puede hacer con relativa facilidad (que se muestra aquí). De lo contrario, todo el proceso de instalación se deben seguir, pero esta vez utilizando el servidor principal original como el modo de espera. 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 sólo lectura para permitir el acceso de consulta. Esto se utiliza a menudo para descargar información del servidor standby para conseguir más recursos en el servidor principal. Cuando se abre en modo de sólo lectura, el envío de archive log continúa, pero la recuperación gestionada se detiene, por lo que la base de datos standby se convierte cada vez más obsoleta hasta que se reanude la recuperación gestionada (managed recovery). Para cambiar la base de datos a solo lectura haga lo siguiente: SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP MOUNT;

SQL>ALTER DATABASE OPEN READ ONLY;

Para reanudar la recuperación 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 característica Active Data Guard. Esto permite que la base de datos en espera de ser abierto en modo de sólo lectura, pero aún se aplica la información de los redo. Esto significa que una base de datos stanby puede estar disponible para la consulta, y aun así estar al día o actualizada. Hay implicaciones de licencia para esta función, pero los siguientes comandos muestran cómo Active Data Guard se puede activar:

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP MOUNT;

SQL>ALTER DATABASE OPEN READ ONLY;

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

Page 65: Replicacion y Cluster de Bases de Datos

59

Referencias:

Oracle 2010, Oracle® Database SQL Language Reference 11g, obtenida el 1 de mayo de 2013, de http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6016.htm

Oracle 2009, Documento técnico de Oracle: Oracle Data Guard 11g versión 2, obtenida el 1 de mayo de 2013, de http://www.oracle.com/technetwork/es/database/enterprise-edition/documentation/tutorial-oracle-data-guard-11gr2-1707492-esa.pdf

Oracle 2012, Oracle® Data Guard Concepts and Administration 11g Release 2 (11.2), obtenida el 4 de mayo de 2013, de http://docs.oracle.com/cd/E11882_01/server.112/e17022/create_ps.htm

Page 66: Replicacion y Cluster de Bases de Datos

60

Page 67: Replicacion y Cluster de Bases de Datos

61

SQL SERVER CLUSTER

Ana Rosa Rosales Mancia Silvia Yessenia Argueta Campos

OBJETIVOS

o Conocer el funcionamiento del clúster 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 más recomendable es configurar máximo tres nodos. La construcción de los ordenadores del clúster es más fácil y económica debido a su flexibilidad: pueden tener toda la misma configuración de hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (clúster semihomogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo), lo que hace más fácil y económica su construcción.

CONCEPTOS BASICOSSQL SERVER

SQL Server es un conjunto de objetos eficientemente almacenados. Los objetos donde se almacena la información se denominan tablas, y éstas a su vez están compuestas de filas y columnas. En el centro de SQL Server está el motor de SQL Server, el cual procesa los comandos de la base de datos. Los procesos se ejecutan dentro del sistema operativo y entienden únicamente de conexiones y de sentencias SQL. SQL Server incluye herramientas para la administración de los recursos que el ordenador nos proporciona y los gestiona para un mejor rendimiento de la base de datos. Una buena instalación y configuración de SQL Server, y sobre todo una buena administración de las herramientas que éste nos proporciona, logrará: · Qué las consultas que se realicen mediante sentencias SQL obtengan un tiempo de Respuesta óptima.· Qué la memoria y la CPU de la máquina estén aprovechadas al máximo.

CLÚSTER

El término clúster se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilización de hardware común y que se comportan como si fuesen una única computadora. Hoy en día desempeñan un papel importante en la solución de problemas de las ciencias, las ingenierías y del comercio moderno. Simplemente, un clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. Los clústeres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por

Page 68: Replicacion y Cluster de Bases de Datos

62

encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables. La construcción de los ordenadores del clúster es más fácil y económica debido a su flexibilidad: pueden tener toda la misma configuración de hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (clúster semihomogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo), lo que hace más fácil y económica su construcción. Para que un clúster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.

CLASIFICACIÓN DE LOS CLÚSTER

Alto rendimiento:

Son clústeres en los cuales se ejecutan tareas que requieren de gran capacidad computacional, grandes cantidades de memoria, o ambos a la vez. El llevar a cabo estas tareas puede comprometer los recursos del clúster por largos periodos de tiempo.

Alta disponibilidad:

Son clústeres cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Estos clústeres tratan de brindar la máxima disponibilidad de los servicios que ofrecen. La confiabilidad se provee mediante software que detecta fallos y permite recuperarse frente a los mismos, mientras que en hardware se evita tener un único punto de fallos

.Alta eficiencia:

Son clústeres cuyo objetivo de diseño es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del clúster no es considerado un gran problema.

VENTAJAS DE USAR CLÚSTER

De un clúster 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

Page 69: Replicacion y Cluster de Bases de Datos

63

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

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

Hacer click en siguiente

Page 70: Replicacion y Cluster de Bases de Datos

64

Hacer click en el boton instalar

Esperar unos minutos mientras se instala

Page 71: Replicacion y Cluster de Bases de Datos

65

Click en el botón cerrar

Page 72: Replicacion y Cluster de Bases de Datos

66

Aquí ya se tiene la característica de servidor de dominio luego se crea el nuevo bosque al cual se van a unir los nodos de la red del cluster. Para esto ejecutamos la aplicación dcpromo.exe

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

Seleccionar un nuevo bosque click->siguiente

Page 73: Replicacion y Cluster de Bases de Datos

67

Escribir el nombre del bosque a crear click-> siguiente

Seleccionar la versión del Windows server en este caso Windows server 2008 r2 click ->siguiente

Page 74: Replicacion y Cluster de Bases de Datos

68

Escribir la contraseña de administrador del dominio

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

Page 75: Replicacion y Cluster de Bases de Datos

69

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

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

Page 76: Replicacion y Cluster de Bases de Datos

70

Colocar la contraseña para el nuevo usuario dar siguiente y listo ya se tiene el nuevo usuario.

Todas las computadoras que se utilicen como nodos del cluster tienen que pertenecer al dominio creado y agregar este usuario en el grupo de administradores.

Page 77: Replicacion y Cluster de Bases de Datos

71

2 -CONFIGURACION DEL SERVIDOR DE ALMACENAMIENTO ISCSI

El servidor de dns y almacenamiento están alojados en la misma computadora, para poder configurar el servidor de almacenamiento iscsi hay que instalar el siguiente software iscsi Target 3.3 como se muestra a continuación:

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

Y esperamos que se instale.

Page 78: Replicacion y Cluster de Bases de Datos

72

Luego de instalar esta aplicación el siguiente paso es crear un destino iscsi para esto Click-> herramientas del sistema ->iscsiTarget aparecerá una ventana como la siguiente damos click derecho sobre Destinos iscsi y seleccionamos crear destino iscsi

Seleccionar un nuevo bosque click->siguiente

Page 79: Replicacion y Cluster de Bases de Datos

73

Escribir el nombre del bosque a crear click-> siguiente

Seleccionar la versión del Windows server en este caso Windows server 2008 r2 click ->siguiente

Page 80: Replicacion y Cluster de Bases de Datos

74

Escribir la contraseña de administrador del dominio

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

Page 81: Replicacion y Cluster de Bases de Datos

75

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

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

Page 82: Replicacion y Cluster de Bases de Datos

76

Colocar la contraseña para el nuevo usuario dar siguiente y listo ya se tiene el nuevo usuario.

Todas las computadoras que se utilicen como nodos del cluster tienen que pertenecer al dominio creado y agregar este usuario en el grupo de administradores.

Page 83: Replicacion y Cluster de Bases de Datos

77

2 -CONFIGURACION DEL SERVIDOR DE ALMACENAMIENTO ISCSI

El servidor de dns y almacenamiento están alojados en la misma computadora, para poder configurar el servidor de almacenamiento iscsi hay que instalar el siguiente software iscsi Target 3.3 como se muestra a continuación:

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

Y esperamos que se instale.

Page 84: Replicacion y Cluster de Bases de Datos

78

Luego de instalar esta aplicación el siguiente paso es crear un destino iscsi para esto Click-> herramientas del sistema ->iscsiTarget aparecerá una ventana como la siguiente damos click derecho sobre Destinos iscsi y seleccionamos crear destino iscsi

Page 85: Replicacion y Cluster de Bases de Datos

79

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

Escribimos el nombre del destino una breve descripción 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.

Page 86: Replicacion y Cluster de Bases de Datos

80

Y se finaliza el asistente.

Ahora ya tenemos el destino iscsi que tendrá los discos virtuales que utilizara el cluster para ello hay que realizar l

os siguientes pasos:Hacer click derecho sobre el iniciador iscsi creado->seleccionar crear disco virtual, esta

acción:

Page 87: Replicacion y Cluster de Bases de Datos

81

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

Luego colocamos el tamaño del disco en MB. Seleccionamos siguiente.

Page 88: Replicacion y Cluster de Bases de Datos

82

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

esta imagen muestra el disco virtual creado.

Page 89: Replicacion y Cluster de Bases de Datos

83

Ahora que ya se tiene el almacenamiento procedemos a realizar la conexión de los nodos con el servidor de almacenamiento.

Para esto nos vamos a la computador que va servir de nodo1 y damos click ->Inicio ->Iniciador iscsi y aparecerá una ventana como esta:

Colocamos la ip del servidor de almacenamiento click-> conexión rápida y aparecerá conectado.

Luego click-> En la pestaña volúmenes y dispositivos ->Autoconfigurar aparecerán todos los discos virtuales creados como se muestra a continuación.

Page 90: Replicacion y Cluster de Bases de Datos

84

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

Ahora hay que poner en línea estos discos esto se realiza siempre en el nodo 1.

Click ->Inicio ->Administrador de servidor ->Almacenamiento ->Administración de dispositivos.

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

Page 91: Replicacion y Cluster de Bases de Datos

85

Ya se tiene el almacenamiento para el cluster.

3-CONFIGURACION DE CLUSTER DE WINDOWS.

Para poder realizar una configuración de cluster de conmutación por error es necesario instalar esa característica en todos los nodos. Para ello hay que seguir los siguientes pasos:

Click -> Administrador de servidor -> Caracteristicas ->Agregar características

Seleccionar cluster de conmutación por error.

Page 92: Replicacion y Cluster de Bases de Datos

86

Y click en instalar

Ya que tenemos instalada la característica damos click -> Inicio ->Administrador de cluster de conmutación por error damos click -> crear cluster.

Page 93: Replicacion y Cluster de Bases de Datos

87

Nos pedirá ingresar los nombres de los nodos

Damos click -> siguiente

Page 94: Replicacion y Cluster de Bases de Datos

88

Realiza la confirmación de los datos click ->siguiente

Page 95: Replicacion y Cluster de Bases de Datos

89

Realiza todos las validaciones si da algún 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 dirección ip.

Page 96: Replicacion y Cluster de Bases de Datos

90

Finalizamos la creación del cluster

Page 97: Replicacion y Cluster de Bases de Datos

91

Ahora bien ya tenemos el cluster creado falta crear un servicio para este cluster para esto damos click derecho al cluster creado-> Servicios y aplicaciones ->Coordinador de transacciones distribuidas DTC ->siguiente

Agregamos el nombre en este caso se deja el que da por defecto, agregamos la dirección ip, damos siguiente y finalizamos.

Page 98: Replicacion y Cluster de Bases de Datos

92

Ya tenemos toda la configuración del cluster de conmutación por error a nivel del sistema operativo solo falta configurar el SQL server.

4-CONFIGURACION DE CLUSTER DE CONMUTACIÓN POR ERROR EN SQL SERVER.

Ejecute setup.exe desde el disco de instalación de SQL Server para iniciar el Centro de instalación. Haga click ->Instalacion->Nuevo sql server de conmutación por error

Page 99: Replicacion y Cluster de Bases de Datos

93

En el cuadro de diálogo Configuración de las Reglas de Apoyo, validar que los controles devolver resultados exitosos y haga click en Siguiente.

En el cuadro de diálogo Condiciones de Licencia, haga click en Acepto los términos de la licencia casilla de verificación y haga clic en Siguiente.

Page 100: Replicacion y Cluster de Bases de Datos

94

En el cuadro de diálogo Configuración de Apoyo a las Reglas, haga clic en Instalar. Validar que los controles devolver resultados exitosos. Si los cheques devueltos algunas advertencias, asegúrese de corregirlos antes de proceder con la instalación. Haga clic en Siguiente para continuar.

Page 101: Replicacion y Cluster de Bases de Datos

95

En el cuadro de diálogo Selección de características, seleccione sólo los componentes que desea instalar. Haga clic en Siguiente.

En el cuadro de diálogo Configuración de instancia, escriba el nombre de red de SQL Server. Este es el nombre que estará disponible en la red para los clientes. Esto variará dependiendo de su selección si se trata de una instancia predeterminada o con nombre. En este ejemplo, la instancia por defecto se selecciona

Page 102: Replicacion y Cluster de Bases de Datos

96

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

Page 103: Replicacion y Cluster de Bases de Datos

97

En el cuadro de diálogo Requisitos de espacio en disco haga clic en Siguiente.

En el cuadro de diálogo Grupo de recursos de clúster, consulte los recursos disponibles en Windows Server 2008 de clúster. Esto le dirá que un grupo de recursos se creará en el clúster de SQL Server. Para especificar el clúster de SQL Server recurso de nombre de grupo, puede utilizar el cuadro desplegable para especificar un grupo existente o escriba el nombre de un nuevo grupo para crearlo. Haga clic en Siguiente.

Page 104: Replicacion y Cluster de Bases de Datos

98

En el cuadro de diálogo de selección de disco de clúster, seleccione los grupos de discos que están disponibles en el clúster de SQL Server 2008 para su uso. Haga click en Siguiente.

Page 105: Replicacion y Cluster de Bases de Datos

99

En el cuadro de diálogo Configuración de red de clúster, escriba la dirección IP y la máscara de subred que el clúster de SQL Server 2008 va a utilizar. Desmarque la casilla bajo la columna de DHCP que va a utilizar direcciones IP estáticas. Si no ha deshabilitado los adaptadores y protocolos IPv6, que sería mejor para desactivar la fila para IPv6

En el cuadro de diálogo Directiva de seguridad del clúster, acepte el valor por defecto de uso de los servicios SID (recomendado).

Page 106: Replicacion y Cluster de Bases de Datos

100

En el cuadro de diálogo Configuración del servidor, escriba las credenciales que se utilizarán para sus cuentas de servicio de SQL Server en la ficha Cuentas de servicio. En la ficha Clasificación, seleccione la intercalación apropiada para ser utilizada por SQL Server. Tenga en cuenta que el tipo de inicio está establecido en manual para todos los clústeres de servicios y no se puede cambiar durante el proceso de instalación. Haga clic en Siguiente.

En el cuadro de diálogo Configuración de Database Engine, seleccionar el modo de autenticación apropiado. Si desea agregar el usuario actualmente conectado a formar parte del grupo de administradores de SQL Server, haga clic en el botón Agregar usuario actual.

Page 107: Replicacion y Cluster de Bases de Datos

101

En la ficha de datos de directorios, escriba la ruta donde se va a su sistema y archivos de usuario de base de datos creada. Esto será por defecto y damos click siguiente.

En el error y la caja de diálogo de informes de uso, haga clic en Siguiente.

Page 108: Replicacion y Cluster de Bases de Datos

102

En el cuadro de diálogo Reglas de instalación del clúster, compruebe que todas las comprobaciones son correctas y haga clic en Siguiente.

Page 109: Replicacion y Cluster de Bases de Datos

103

En la página Preparado para instalar el cuadro de diálogo, compruebe que todas las configuraciones son correctas. Haga clic en Siguiente.

Page 110: Replicacion y Cluster de Bases de Datos

104

En el cuadro de diálogo completo, haga clic en Cerrar. Con esto concluye la instalación de un clúster de conmutación por error de SQL Server 2008

En la realización de una correcta instalación y configuración del nodo, ahora tiene una instancia de conmutación por error del clúster completamente funcional.

Ahora falta agregar un nuevo nodo los pasos son muy parecidos ya que so le especificamos el cluster de conmutación por error al queremos pertenecer y la instancia.

Page 111: Replicacion y Cluster de Bases de Datos

105

Para poder desarrollar un cluster de conmutación por error se pueden seguir estos pasos eso si hay que tener cuidado en la infraestructura de red a utilizar y compatibilidad de los programas.

PUEDES VISITAR NUESTRO VIDEO PARA MAYOR INFORMACION AQUI: http://youtu.be/Ljwz9GvV8_o

BIBLIOGRAFIA:

o Microsoft documentacion, visitado dia 10 de abril de 2013 http://technet.microsoft.com/es-es/library/cc730692.aspx.

o Microsoft, visitado 16 de abril de 2013 http://msdn.microsoft.com/es-es/library/ms189134%28v=sql.90%29.aspx

o SlideShared, visitado 16 abril de 2013 http://www.slideshare.net/javacero/presentacin-de-cluster-de-w2008-r2-cluster-de-conmutacin-por-error-por-francisco-javier-acero-lucena.aspx

o Scribd, visitado 16 de abril de 2013 http://es.scribd.com/doc/84699812/Agregar-almacenamiento-a-un-cluster-de-conmutacion-por-error.html

o Youtube.com, visitado 20 de abril de 2013

http://www.youtube.com/watch?v=Q5x0D79afRM

Page 112: Replicacion y Cluster de Bases de Datos

106

Clúster en MySQL

Luis Josué Chávez Vigil, Josué Daniel Orellana Aguirre, Erick Stanley Cruz Martínez

Objetivos:

Conocer el funcionamiento del clúster en MySQL, así como de la manera de configurarlo en una red local, además de distinguir los elementos que lo conforman.

Identificar las características, requerimientos hardware/software, ventajas y desventajas de un clúster MySQL.

Definir lo que es un clúster, así como los diferentes tipos de nodos que el clúster MySQL maneja, y además, aprender la manera correcta de configuración.

Introducción:

MySQL Cluster es la versión de MySQL pensada para alta disponibilidad, escalabilidad y alto rendimiento. Un MySQL server que es parte de un MySQL Clúster difiere sólo en un aspecto de un servidor MySQL normal (no clúster), en que emplea el motor NDB Clúster.

Este motor también se conoce simplemente como NDB, y las dos formas del nombre son sinónimas. Desde que MySQL server es parte del clúster, necesita datos de configuración que sepa cómo acceder al nodo MGM para obtener datos de configuración del clúster.

El comportamiento por defecto es buscar el nodo MGM en localhost. Sin embargo, puede necesitar especificar su localización donde se encuentre, esto puede hacerse en my.cnf o en la línea de comandos del servidor MySQL.

Antes de poderse usar el NDB, al menos un nodo MGM debe ser operacional, así como los nodos de datos deseados.

Conceptos Básicos:

Clúster: Grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio.

Page 113: Replicacion y Cluster de Bases de Datos

107

De un clúster se espera lo siguiente:

Alto rendimiento

Alta disponibilidad

Equilibrio de carga

Escalabilidad

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

Características:

Para comunicación entre nodos, el clúster soporta red TCP/IP en cualquier topología estándar, y como mínimo se espera una red 100 Mbps Ethernet, más un switch, hub, o router para proporcionar conectividad de red al clúster entero. Recomendamos que MySQL Clúster se ejecute en su subred que no está compartida con máquinas no-clúster por las siguientes razones:

Seguridad: La comunicación entre nodos del clúster no está cifrada. La única forma de proteger transmisiones dentro de un MySQL Clúster es ejecutar su clúster en una red protegida.

Eficiencia: Inicializar un MySQL Clúster en una red privada o protegida permite que el clúster haga uso exclusivo del ancho de banda entre máquinas del clúster.

ndbd_mgm.

Es el nodo de Management. Tiene la configuración del clúster. No es necesario más de uno, pero consume tan poco que se pueden tener dos. Nosotros lo usamos para lanzar backups, reiniciar nodos, activar el log… además, los nodos ndbd lo usan al entrar en el clúster para recoger la configuración ndbd:

Son los nodos de almacenamiento. Estos deben tener la capacidad de procesamiento y la memoria RAM suficiente para trabajar con los datos. Al menos debemos tener dos nodos ndbd. Si queremos usar múltiples cores, el demonio será ndbmtd mysqld. Al clúster se puede acceder usando la API o mediante un servicio.

mysqld:

Al menos debemos tener dos nodos mysqld o tendremos un SPOF

Desventajas:

La configuración y puesta en marcha difiere completamente de la versión estándar de la base de datos.

Page 114: Replicacion y Cluster de Bases de Datos

108

Requiere gran cantidad de memoria RAM.

Índices en RAM siempre.

Datos en RAM o en disco duro.

El engine es ndbclúster, no se puede usar InnoDB o MyISAM en clúster.

No es una base de datos de propósito general.

Subqueries lentas

Joins lentas

No soporta integridad referencial y claves externas

No hay rollbacks parciales ni savepoints, solo rollbacks completos

No se garantiza el commit

Recomendaciones: La web de MySQL recomienda 5 servidores:

2 ndbd

2 mysqld

1 ndb_mgmd

Podemos mejorar esta arquitectura y hacerla más barata montando un ndb_mgmd en cada mysqld

2 ndbd

2 mysqld + ndb_mgmd

Page 115: Replicacion y Cluster de Bases de Datos

109

Topología:

Hardware:

3 COMPUTADORAS CON WINDOWS 7

MYSQL CLÚSTER EN C/U DE PC

SWITCH

CABLES DE RED

Archivos de Configuración:

ndb_mgm

config.ini

Acá estan las configuraciones para el manejo de nodos. Dentro se encuentra los datadir y los database. · En el database se encuentran los binarios y archivos de configuracion para la ejecución correcta de config. · En el datadir se hace referencia a los logs que arroja el clúster.

Page 116: Replicacion y Cluster de Bases de Datos

110

ndbd

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

mysqld

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

Procedimiento:

Descargamos el cluster mysql de la siguiente dirección: 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:

Page 117: Replicacion y Cluster de Bases de Datos

111

Arrancar Cluster

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

Mostrar los nodos conectados al administrador

c:\mysql\bin\ndb_mgm -e show

Arrancar todo

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

Arrancando mysql

start /B c:\Users\"Chavez Vigil"\mysql\bin\mysqld --defaults-file=conf\my.ini

c:\Users\"Chavez Vigil"\mysql\bin\mysql -h 127.0.0.1 -P5000 -u root

Apagando servicios

c:\Users\"Chavez Vigil"\mysql\bin\mysqladmin -u root -h 127.0.0.1 -P5000 shutdown

c:\Users\"Chavez Vigil"\mysql\bin\ndb_mgm -e shutdown

C:\Users\Chavez Vigil\my_cluster\ndb_data

Pasos a seguir:

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

Page 118: Replicacion y Cluster de Bases de Datos

112

Creamos una nueva carpeta llamada mysql:

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

Page 119: Replicacion y Cluster de Bases de Datos

113

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

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

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

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

Page 120: Replicacion y Cluster de Bases de Datos

114

[Ndbd default] NoOfReplicas=2

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

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

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

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

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

[Mysqld] [Mysqld]

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

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

Page 121: Replicacion y Cluster de Bases de Datos

115

En la ventana que aparece damos clic en el icono Variables de Entorno. Ahí buscamos la variable path que es la que vamos a editar. Al final de la variable escribimos:

C:\mysql\bin:C;\my_cluster\ndb_data

Esto es para que ejecute los binarios necesarios para el funcionamiento del cluster. Reiniciamos la computadora.

Después 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:

Page 122: Replicacion y Cluster de Bases de Datos

116

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

Con el comando show mostramos los nodos de datos conectados:

Por el momento NO tenemos nodos de datos conectados. Avanzando un poco, esto deberíamos ver cuando los nodos de datos estén conectados. Note que están conectados con las ip que le definimos en el archivo de configuración:

Page 123: Replicacion y Cluster de Bases de Datos

117

Ahora pasamos a la configuración de los nodos de datos. Esto se hará en cada máquina que será nodo de datos y mysql. Creamos la misma estructura de directorios que se hizo en el nodo de administrador. Descomprimimos el archivo del cluster y hacemos lo siguiente:

Volvemos a copiar el contenido del archivo descomprimido, tal como en el administador. Una vez hecho esto, entramos en la carpeta conf. Editamos (creamos mas bien dicho) un archivo llamado my.cnf que se encuentra en el directorio conf. Cada uno de los nodos de datos lo poseerá:

Page 124: Replicacion y Cluster de Bases de Datos

118

En síntesis, lo que este archivo significa es que el nodo mysql ocupará el motor ndbcluster para conectarse al nodo de administrador a través del puerto 4002, la cadena de conexión muestra la ip del administrador y el mysql_cluster se encontrará también en la misma máquina administrador.

Posteriormente abrimos la cmd de Windows y OJO, una vez arrancados los servicios, estas ventanas NO deben cerrarse, de lo contrario se interrumpirá la comunicación.

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

Page 125: Replicacion y Cluster de Bases de Datos

119

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

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

Page 126: Replicacion y Cluster de Bases de Datos

120

Ahora bien, vamos a crear una tabla en este nodo de datos. Para ello escribimos use prueba; que representa que ocuparemos la base de datos prueba. Luego creamos la tabla en ella llamada alumno, y al final de la consulta de create table alumno escribimos engine=ndb;para que esta sentencia se ejecute en todos los nodos conectados:

Ahora insertamos un alumno nuevo y describimos la tabla:

Page 127: Replicacion y Cluster de Bases de Datos

121

Bibliografía

MySQL®, obtenida el 26 de abril de 2013, de

http://downloads.mysql.com/tutorials/cluster/mysql_wp_cluster_quickstart_windows.pd

f

Uv.mx, obtenida el 26 de abril de 2013, de

http://www.uv.mx/personal/lizhernandez/files/2013/04/Comandos-mysql.pdf

Manuales Guebs.com®, obtenida el 27 de abril de 2013, de http://manuales.guebs.com/mysql-5.0/ndbcluster.html#mysql-cluster-configuration

Slideshare® Base de Datos MySQL, obtenida el 27 de abril de 2013, de http://www.slideshare.net/miguelangelnieto/mysql-high-availavility-load-balacing-cluster

Scribd® ¿Qué es un CLUSTER?, obtenida el 27 de abril de 2013, de

http://es.scribd.com/doc/6858172/QUE-ES-UN-CLUSTER

Page 128: Replicacion y Cluster de Bases de Datos

122

Sincronización de Bases de Datos en Nube

González Martínez Mauricio Antonio, Ramírez Reyes Heysel Yanira, Zometa Sanchez Henry Mauricio

Objetivos

Conocer e implementar el uso de bases de datos en la nube como un mecanismo de sincronización.

Conocer las ventajas y desventajas que tiene el uso de bases de datos en la nube.

Utilizar los servicios de sincronización que provee Sql Azure.

Conceptos

¿Qué es la sincronización de Bases de Datos en Nube?

La sincronización de bases de datos en nube es el mecanismo de mantener la misma versión de datos en múltiples dispositivos a través de un servidor alojado en internet.

La sincronización 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 información o servicio, mediante una conexión a internet desde cualquier dispositivo móvil 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:

Integración con facilidad y rapidez.

Prestación de servicios a nivel mundial.

Actualizaciones automáticas.

Reducción de equipos.

Comodidad y Accesibilidad inmediata a los datos.

Desventajas:

La disponibilidad de las aplicaciones está ligada a la disponibilidad de acceso a Internet.

Los datos "sensibles" de la empresa no residen en sus instalaciones.

La confiabilidad de los servicios depende de la "salud" tecnológica y financiera de los proveedores de servicios en nube.

Page 129: Replicacion y Cluster de Bases de Datos

123

Escalabilidad a largo plazo. A medida que más usuarios empiecen a compartir la infraestructura de la nube, la sobrecarga en los servidores aumentará, si no se posee un esquema de crecimiento óptimo puede llevar a degradaciones en el servicio.

¿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 añadida es que los desarrolladores y el personal de IT no necesita instalar, actualizar y gestionar la infraestructura de bases de datos. La alta disponibilidad, aspecto siempre complejo, es gestionado de manera transparente.

La gran ventaja de utilizar SQL Azure frente a otros sistemas de almacenamiento en la nube es que todos los conocimientos sobre bases de datos relacionales y el lenguaje de consulta SQL siguen siendo válidos. No es necesario adaptar los conocimientos a nuevos paradigmas de almacenamiento, como pasa con otros sistemas de almacenamiento en la nube no basados en bases de datos relacionales ni SQL. “Si sabes utilizar SQL Server, todos tus conocimientos te valen para SQL Azure”.

Es cierto que hay ciertas características de SQL Server que SQL Azure no soporta, pero si soporta todas las más usadas:

Tablas, tablas temporales, vistas, índices, roles, procedimientos almacenados y funciones.

Consultas complejas y „joins‟ entre múltiples 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 tecnologías antiguas, ya obsoletas, en concreto OleDb, etc.

Page 130: Replicacion y Cluster de Bases de Datos

124

Sincronización con Windows Azure

Con la aparición de SQL Azure, se abre todo un mundo de posibilidades para el uso de bases de datos en la nube; no solo para albergar aplicaciones sin necesidad de infraestructura y en régimen de pago por uso, sino también para mantener versiones de bases de datos SQL Server sincronizadas en la nube, a modo de herramienta de continuidad de negocio, que permita mantener los datos sincronizados y en una ubicación física diferente a la empresarial. Asimismo, aquellas aplicaciones que cuenten con usuarios móviles, o que necesiten proporcionar parte de la información a proveedores o clientes a través de Internet, son buenas candidatas para sincronizar con los servidores de SQL Server on-premise.

Las bases para la sincronización: SQL Azure Data Sync

Microsoft Data Sync es el marco de trabajo que nos proporciona la infraestructura necesaria para realizar este tipo de sincronizaciones, permitiéndonos centrarnos solo en la parte más relacionada con el negocio y abstrayendo la parte más "de detalle" del proceso.

Es un servicio de sincronización de datos en la nube basada en las tecnologías de Microsoft Sync Framework. SQL Azure Data Sync permite crear y programar sincronizaciones periódicas entre SQL Azure y SQL Server (local) u otras bases de datos de SQL Azure. Proporciona sincronización bidireccional de datos y las capacidades de gestión de datos permite que los datos que se pueden compartir fácilmente a través de bases de datos SQL Azure en múltiples 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 página de Windows Live y registrarse.

• Tener una cuenta de Windows Azure activa. Si no tiene una cuenta de Windows Azure ir a la página de inicio de Windows Azure y regístrate o aplicar a la evaluación gratuita de 90 días.

• Tener una suscripción activa de base de datos de Windows Azure SQL Database. Las bases de datos On-premises deben ser SQL Server 2005 Service Pack 3 o posterior.

Desarrollo

El escenario planteado consiste la replicación de una base de datos local de SQL Server, con otra almacenada en la nube, para fines demostrativos solamente replicamos una tabla muy sencilla, cuya

Page 131: Replicacion y Cluster de Bases de Datos

125

estructura deberá ser la misma en la base de datos Azure. Esto puede ser escalado y dependerá de que tablas o campos queramos mantener sincronizados.

Instalar el Client Agent

Instale el software requerido

• .NET Framework 4.0

• Microsoft SQL Server 2008 R2 SP1 System CLR Types (x86)

• Microsoft SQL Server 2008 R2 SP1 Shared Management Objects (x86) Para lograr la sincronización de Bases de Datos de SQL Server con la de SQL Azure se debe instalar el Agent Client., el cual es el encargado de gestionar todo lo relacionado a la sincronización de la base de datos local. Una vez instalado el software requerido procedemos a la Instalación de Microsoft SQL Data Sync Agent Preview como se muestra en las siguientes imágenes:

Page 132: Replicacion y Cluster de Bases de Datos

126

Introducir un nombre de usuario y una contraseña

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

Page 133: Replicacion y Cluster de Bases de Datos

127

Procedimiento para la Sincronización en Windows Azure con Data Sync

Entrar a la Base de Datos usando la autenticación 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.

Page 134: Replicacion y Cluster de Bases de Datos

128

Dirigirse al sitio web de Windows Azure cuya dirección es www.windowsazure.com/es-es/ dentro del sitio de Azure dar clic en la opción de Portal

Iniciar sesión con nuestra cuenta de correo electrónico y la contraseña.

Aparecerá el portal de Windows Azure con todos sus servicios.

Page 135: Replicacion y Cluster de Bases de Datos

129

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

Page 136: Replicacion y Cluster de Bases de Datos

130

Ahora creamos un Servidor dando clic en la opción SERVIDORES

Dar clic en la opción Crear un servidor de Bases de Datos SQL

Ingresamos el nombre del servidor, la contraseña de acceso al mismo y la región que este mas cerca a nuestra zona. La contraseña debe contener letras mayúsculas, minúsculas y números. Después de llenar los campos damos clic en el cheque o Aplicar.

Page 137: Replicacion y Cluster de Bases de Datos

131

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

Dar clic en Crear una Base de Datos SQL

Page 138: Replicacion y Cluster de Bases de Datos

132

Se coloca el nombre de la Base de Datos, se define que es una edición web, se asigna el tamaño de capacidad de almacenamiento, se define el tipo de lenguaje que se utilizara y por último se le indica que pertenecerá al servidor que recién acabamos de crear. Luego dar clic en Aplicar

Para administrar la Base de datos damos clic en Administrar

Page 139: Replicacion y Cluster de Bases de Datos

133

Espera un momento mientras se carga el portal de administración. Iniciar sesión con el nombre de la Base de Datos, el nombre de Usuario y Contraseña del servidor, luego dar clic en Iniciar Sesión

Una vez cargado el modulo de administración dar clic en Diseñar

Page 140: Replicacion y Cluster de Bases de Datos

134

Hay dos formas de crear una tabla: PRIMERA - Mediante una nueva consulta sql. 1.- Dar clic en la opción Nueva que se encuentra en parte superior. 2.- En el apartado se introduce el código 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 Diseñar y damos clic en Actualizar 5.- Aparecerá la tabla con todos sus campos creados.

Page 141: Replicacion y Cluster de Bases de Datos

135

SEGUNDA - Con el diseñador.

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

Page 142: Replicacion y Cluster de Bases de Datos

136

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

Agregar un nombre al Nuevo Agente de Sincronización y una Contraseña, luego dar clic en Aplicar

Page 143: Replicacion y Cluster de Bases de Datos

137

Lo que sigue es crear una clave de identificación con la cual se podrá tener acceso a la Base de Datos que se encuentra en Azure.

Dar clic en el botón Generar y luego en la opción Copiar. Posteriormente clic en Aplicar.

En el equipo local ejecutar Microsoft SQL Data Sync Agent Preview y dar clic en Submit Agent Key y pegar la contraseña generada con el Agente de Sincronizacion

Page 144: Replicacion y Cluster de Bases de Datos

138

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

A continuación se hace el registro del servidor y de la Base de Datos que vamos a sincronizar dando clic en Register. Seleccionar la autenticación de Windows, ingresar el nombre del servidor y el nombre de la Base de Datos, luego dar clic en Test Conection para verificar que todo este bien de ser asi aparecerá un mensaje corroborándolo

Page 145: Replicacion y Cluster de Bases de Datos

139

Lo siguiente es crear un grupo de Sincronizacion, dicho grupo contendrá las bases de datos que participaran en la sincronización. En el panel principal de Windows Azure dar clic en Agente de Sincronización luego elegir la opción Nuevo Grupo de Sincronización

Page 146: Replicacion y Cluster de Bases de Datos

140

Agregar un nombre al nuevo Grupo de Sincronización y seleccionar la región, luego clic en la flecha siguiente

Seleccionar la ubicación de la Base de Datos Central, introducir el nombre de usuario y contraseña 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 botón Siguiente.

Page 147: Replicacion y Cluster de Bases de Datos

141

Lo que sigue es crear las reglas de sincronización. Seleccionar el grupo creado y luego dar clic en REGLAS DE SINCRONIZACION

En el panel que aparece dar clic en DEFINIR REGLAS DE SINCRONIZACION, aparecerá un asistente para crear la regla. Seleccionar el nombre del Servidor, los campos y la tabla que se quiere sincronizar para finalizar dar clic en Guardar.

Page 148: Replicacion y Cluster de Bases de Datos

142

Una vez creada la regla, ir a la opción CONFIGURAR ahí se hará lo siguiente: 1.- Activar el grupo de Sincronización. 2.- Definir cada cuanto se estarán actualizando los datos. 3.- Guardar la configuración

Con esto ya tenemos listo todo el escenario, ahora queda por parte del usuario hacer las pruebas respectivas para comprobar la funcionalidad con esta herramienta. Para una ayuda audiovisual puede ver el video donde se encuentran los mismos pasos con mayor detalle, pueden verlo en la siguiente dirección: http://www.youtube.com/watch?v=r-hPtf_iLjU

Page 149: Replicacion y Cluster de Bases de Datos

143

Referencias

http://www.estoyenlanube.com/microsoft-sync-framework-y-sql-azure/

http://msdn.microsoft.com/en-us/library/hh456371.aspx

http://msdn.microsoft.com/en-us/library/jj823137.aspx

www.windowsazure.com/en-us/manage/services/sql-databases/getting-started-w-sql-data-sync/

http://jonathanvanderoost.com/2013/02/01/how-to-use-windows-azure-sql-data-sync-newportal/

geeks.ms/blogs/johnbulla/archive/2012/10/12/sql-azure-data-sync-sincronizaci-243-n-de-datos-entre-bases-de-datos-sql-server-on-premise-y-base-de-datos-de-windows-azure-sql-database.aspx

Page 150: Replicacion y Cluster de Bases de Datos
Page 151: Replicacion y Cluster de Bases de Datos

145

Replicación con SQL Server

Autores:

Cisneros Cente, Rolando Alexis

Ibarra Bonilla, Luis Armando

Orellana Hugo, Rosembel

Introducción a la replicación con SQL Server

La replicación es un conjunto de tecnologías destinadas a la copia y distribución de datos y objetos de

base de datos desde una base de datos a otra, para luego sincronizar ambas bases de datos y mantener su

coherencia. La replicación permite distribuir datos entre diferentes ubicaciones y entre usuarios remotos

o móviles mediante redes locales y de área extensa, conexiones de acceso telefónico, conexiones

inalámbricas e Internet.

La réplica tiene una analogía al sector editorial para representar los componentes de una topología de

réplica, que incluyen el publicador, el distribuidor, los suscriptores, las publicaciones, los artículos y las

suscripciones. Resulta útil pensar en la réplica de Microsoft SQL Server como si fuera una revista:

El publicador (editor) de una revista produce una o más publicaciones.

Una publicación contiene artículos.

El publicador distribuye la revista directamente o a través de un distribuidor.

Los suscriptores reciben las publicaciones a las que se han suscrito.

Es importante señalar que la réplica de SQL Server incluye funciones como: la posibilidad de que un

suscriptor realice actualizaciones y de que un publicador envíe cambios incrementales a los artículos de

una publicación.

Existen varios procesos de réplica (denominados agentes) que son responsables de copiar y mover los

datos entre el publicador y los suscriptores. En la siguiente figura se muestra información general acerca

de los componentes y procesos que participan en la réplica.

Page 152: Replicacion y Cluster de Bases de Datos

146

Los elementos que participan en la replicación Sql Server son los siguientes:

Publicador

Es una instancia de base de datos que permite que los datos estén disponibles para otras ubicaciones a través de la réplica. El publicador puede tener una o más publicaciones, cada una de las cuales representa un conjunto de objetos y datos relacionados lógicamente para replicar.

Distribuidor

Es una instancia de base de datos que funciona como almacén para datos específicos de réplica asociados con uno o más publicadores. Cada publicador está asociado con una sola base de datos (conocida como la base de datos de distribución) en el distribuidor. La base de datos de distribución almacena los datos de estado de la réplica, metadatos acerca de la publicación y, en algunos casos, funciona como cola para los datos que se transfieren del publicador a los suscriptores. En muchos casos, una sola instancia de servidor de bases de datos funciona como publicador y como distribuidor Esto se conoce como un distribuidor local. Cuando el publicador y el distribuidor se configuran en instancias distintas del servidor de bases de datos, el distribuidor se denomina un distribuidor remoto.

Suscriptores

Es una instancia de base de datos que recibe datos replicados. Un suscriptor puede recibir datos de varios publicadores y publicaciones. En función del tipo de réplica elegida, el suscriptor también puede devolver los datos modificados al publicador o volver a publicar los datos en otros suscriptores.

Artículo

Un artículo identifica un objeto de base de datos incluido en una publicación. Una publicación puede contener diferentes tipos de artículos, como tablas, vistas, procedimientos almacenados y otros objetos. Cuando las tablas se publican como artículos, se pueden usar filtros para restringir las columnas y filas de datos que se envían a los suscriptores.

Publicación

Page 153: Replicacion y Cluster de Bases de Datos

147

Es un conjunto de uno o más artículos de una base de datos. La agrupación de varios artículos en una publicación permite especificar más fácilmente un conjunto de objetos y datos de bases de datos relacionados lógicamente, que se replican como una unidad.

Suscripción

Es una solicitud de una copia de una publicación que se entrega a un suscriptor. La suscripción define qué publicación se recibirá, dónde y cuándo. Hay dos tipos de suscripciones: de inserción y de extracción.

Agentes necesarios para configurar apropiadamente la replicación SQL Server

Agente SQL Server

El Agente SQL Server aloja y programa los agentes utilizados en la réplica, y proporciona una manera sencilla de ejecutar los agentes de réplica. El Agente SQL Server también controla y supervisa las operaciones fuera de la réplica.

De manera predeterminada, el servicio del Agente SQL Server está deshabilitado cuando se instala SQL Server 2005, a menos que se elija explícitamente iniciar el servicio automáticamente durante la instalación.

Agente de instantáneas

Por lo general, el Agente de instantáneas se utiliza con todos los tipos de réplica. Prepara esquemas y archivos de datos iniciales de tablas publicadas y otros objetos, almacena los archivos de instantáneas y registra la información acerca del estado de sincronización en la base de datos de distribución. El Agente de instantáneas se ejecuta en el distribuidor.

Agente de registro del LOG

Page 154: Replicacion y Cluster de Bases de Datos

148

El Agente de registro del LOG se utiliza en la réplica transaccional. Mueve las transacciones marcadas para réplica desde el registro de transacciones del publicador a la base de datos de distribución. Cada base de datos publicada con la réplica transaccional tiene su propio Agente de registro del LOG, que se ejecuta en el distribuidor y se conecta al publicador (el distribuidor puede estar en el mismo equipo que el publicador).

Agente de distribución

El Agente de distribución se utiliza en la réplica de instantáneas y transaccional. Aplica la instantánea inicial al suscriptor y mueve las transacciones contenidas en la base de datos de distribución a los suscriptores. El Agente de distribución se ejecuta en el distribuidor, para las suscripciones de inserción, o en el suscriptor, para las suscripciones de extracción.

Agente de mezcla

El Agente de mezcla se utiliza con la réplica de mezcla. Aplica la instantánea inicial al suscriptor, y transfiere y reconcilia los cambios incrementales de datos que se producen. Cada suscripción de mezcla tiene su propio Agente de mezcla, que se conecta con el publicador y con el suscriptor, y los actualiza. El Agente de mezcla se ejecuta en el distribuidor, para las suscripciones de inserción, o en el suscriptor, para las suscripciones de extracción. De forma predeterminada, el Agente de mezcla carga los cambios del suscriptor al publicador y, a continuación, descarga los cambios del publicador al suscriptor..

Agente de lectura de cola

El Agente de lectura de cola se utiliza con la réplica transaccional y la opción de actualización en cola. El agente se ejecuta en el distribuidor y transfiere los cambios realizados en el suscriptor de vuelta al publicador. A diferencia del Agente de distribución y del Agente de mezcla, sólo existe una instancia del Agente de lectura de cola para todos los publicadores y las publicaciones de una determinada base de datos.

Servicio SQL Server Browser

El programa SQL Server Browser se ejecuta como un servicio de Windows. SQL Server Browser

escucha las solicitudes entrantes de recursos de Microsoft SQL Server y proporciona información acerca

de las instancias de SQL Server instaladas en el equipo. SQL Server Browser permite efectuar las

siguientes acciones:

Examinar una lista de los servidores disponibles

Conectarse a la instancia correcta del servidor

Conectarse a los extremos de la conexión de administrador dedicada (DAC)

Page 155: Replicacion y Cluster de Bases de Datos

149

Para cada instancia de Motor de base de datos y SSAS, el servicio SQL Server Browser (sqlbrowser)

proporciona el nombre de la instancia y el número de versión. SQL Server Browser se instala con SQL

Server y proporciona este servicio para las versiones anteriores de SQL Server que se ejecutan en el

equipo, empezando por SQL Server 7.0.

SQL Server Browser se puede configurar durante la instalación o utilizando el Administrador de

configuración de SQL Server. De manera predeterminada, el servicio SQL Server Browser se inicia

automáticamente:

Cuando se actualiza una instalación.

Cuando se instala simultáneamente con una instancia de SQL Server 2000.

Cuando se instala en un clúster.

Cuando se instala una instancia con nombre de SQL Server Database Engine (Motor de base de

datos de SQL Server) que incluye todas las instancias de SQL Server Express.

Cuando se instala una instancia con nombre de Analysis Services.

Tipos de réplica en SQL Server

Réplica transaccional.

Se inicia con una instantánea de los datos y los objetos de la base de datos de publicaciones. En cuanto se obtiene la instantánea inicial, los posteriores cambios de datos y modificaciones de los esquemas realizados en el publicador habitualmente se entregan en el suscriptor cuando se producen (casi en tiempo real). Los cambios de datos se aplican al suscriptor en el mismo orden y dentro de los mismos límites de la transacción que cuando se produjeron en el publicador. Por tanto, en una publicación, se garantiza la coherencia transaccional.

Réplica de mezcla.

Normalmente se inicia con una instantánea de los objetos y datos de una base de datos de publicaciones.

Los cambios de datos y las modificaciones de esquema posteriores que se lleven a cabo en el publicador

y en los suscriptores se controlan mediante desencadenadores. El suscriptor se sincroniza con el

publicador cuando están conectados a la red e intercambian todas las filas que han cambiado entre el

publicador y el suscriptor desde la última vez que se produjo la sincronización.

La réplica de mezcla se suele utilizar en entornos de servidor a cliente.

Réplica de instantáneas.

La réplica de instantáneas distribuye los datos exactamente como aparecen en un momento específico en el tiempo y no supervisa las actualizaciones de los datos. Cuando se produce la sincronización, se genera la instantánea completa y se envía a los suscriptores.

Page 156: Replicacion y Cluster de Bases de Datos

150

Desarrollo de escenario practico de replicación

Base de datos:

La base de datos que se utilizara en la demostración está compuesta de 4 tablas y simula un pequeño

centro comercial para su ilustración práctica se presenta la siguiente figura con el diagrama de base de

datos y sus respectivas tablas, esta será la base de datos a replicar:

Page 157: Replicacion y Cluster de Bases de Datos

151

Escenario de replicación:

El diagrama nos muestra la ip que cada una de las computadoras servidoras deben tener (se asume para

el presente tutorial que cada una de las computadoras posea la interfaz de red en el segmento que se

indica, para nuestra demostración 192.168.254.X)

Como se puede observar en la figura anterior la base de datos estará en los tres servidores el servidor

con el nombre distribuidor será el encargado de realizar la publicación y las sucursales Sonsonate y

Santa Ana respectivamente realizaran la suscripción al servidor central que para nuestra simulación

estará en San Salvador.

Bien….. Comencemos!!!!

Lo primero será verificar que los servicios necesarios estén activos en el sistema operativo y corriendo

para poder realizar las publicaciones desde el servidor central para ello seguimos los pasos siguientes:

Clic en el menú inicio, Todos los programas luego buscamos: Microsoft SQL Server 2005,

Configuration Tools y luego SQL Server Configuration Manager.

Page 158: Replicacion y Cluster de Bases de Datos

152

Si los servicios de Agente, Browser e Instancia no están corriendo tendremos que iniciarlos

manualmente para ello daremos click derecho a cada uno y luego Start

Iniciamos sesión en SQL Server Management Studio, ya sea con credenciales de Usuario de Sql o

Credenciales de Sistema Operativo (Windows) En este caso utilizaremos Credenciales de Usuario Sql

server llamada “sa”

Page 159: Replicacion y Cluster de Bases de Datos

153

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

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

Page 160: Replicacion y Cluster de Bases de Datos

154

En la ventana siguiente seleccionamos Publications Databases y permitimos Transactional y Merge asi nuestras publicaciones de bases de datos podrán realizarse tanto para transaccionales como para mezcla

Luego de esto hacemos clic en OK, haremos clic en local Publications para comenzar con el asistente de creación de publicación nueva y Luego clic en New Publication

Page 161: Replicacion y Cluster de Bases de Datos

155

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

En la siguiente ventana colocaremos el tipo de replicación en este caso haremos una replicación transaccional

hacemos clic en next

Page 162: Replicacion y Cluster de Bases de Datos

156

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

Page 163: Replicacion y Cluster de Bases de Datos

157

En la siguiente ventana daremos clic en next, y despues podremos ver la siguiente figura:

En esta configuraremos algunos atributos de las instantaneas que se enviaran en la replicacion, para ello seleccionamos los checkbox que se muestran en la imagen y daremos clic en el boton change.

la siguiente ventana que saldra muestra algunos parametros de la frecuencia con la cual el agente de instantaneas monitoreara la base de datos en esta ventana, para nuestro caso dejaremos Occurs Daily

y en Daily Frecuency colocaremos 30 minutes, en la sección Duration pondremos No end date, estas configuraciones las mostramos en la siguiente imagen.

Page 164: Replicacion y Cluster de Bases de Datos

158

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

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

Page 165: Replicacion y Cluster de Bases de Datos

159

Estas se muestran en la imagen siguiente el usuario que usaremos sera: "sa" y le colocaremos una contraseña

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

Page 166: Replicacion y Cluster de Bases de Datos

160

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

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

Page 167: Replicacion y Cluster de Bases de Datos

161

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

Page 168: Replicacion y Cluster de Bases de Datos

162

la publicación para productos se ha definido, ahora crearemos la otra publicación para compartir la tabla stock ventas y sucursal

Ahora seguimos los mismos pasos anteriores pero nos detendremos en la parte. donde escogemos el tipo de replicación pero ahora seleccionaremos replicación por mezcla pues nuestro ejemplo podrán los servidores secundarios replicar también en el servidor matriz pues el servidor matriz podrá monitorear todas las transacciones de las sucursales secundarias.

En la siguiente ventana escogemos base de datos SQL Server 2005

Page 169: Replicacion y Cluster de Bases de Datos

163

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

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

Page 170: Replicacion y Cluster de Bases de Datos

164

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

Page 171: Replicacion y Cluster de Bases de Datos

165

Hacemos clic en Ok y luego en add para añadir un nuevo filtro para otra tabla

luego hacemos lo mismo para la tabla sucursal y venta

Page 172: Replicacion y Cluster de Bases de Datos

166

Ahora tendríamos creados los filtros:

en la siguiente ventana dejamos los checkbox asi como aparecen pero hacemos clic en el boton change y luego hacemos los cambios mostrados en la siguiente ventana

Page 173: Replicacion y Cluster de Bases de Datos

167

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

Page 174: Replicacion y Cluster de Bases de Datos

168

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

si todo lo hemos realizado de forma correcta tendríamos que ver la siguiente ventana

Page 175: Replicacion y Cluster de Bases de Datos

169

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

luego tendremos que realizar las pruebas

Ahora lo que aremos será una conexión con un servidor remoto, para lo cual tendremos que estar conectados con el servidor remoto y habilitar los puerto 1433 y 1434 respectivamente en el firewall de windows

en Sql server realizamos las siguientes configuraciones:

Hacemos clic en el botón Connect, luego en Database Engine luego en la opción Browse for more

Luego en la pestaña NetworkServer Expandimos el arbol DataBase Engine y veremos que tenemos el servidor remoto damos clic en el que nos queremos conectar y luego clic en Ok

Page 176: Replicacion y Cluster de Bases de Datos

170

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

Page 177: Replicacion y Cluster de Bases de Datos

171

Después de conectar podremos ingresar a las configuraciones del servidor remoto, luego crearemos una suscripción, para ello, hacemos clic derecho en la carpeta Local Subscriptions y después en New Subscription

En La siguiente ventana daremos clic en Find SQL Server Publisher, para buscar el servidor publicador y poder suscribirnos a sus publicaciones.

Page 178: Replicacion y Cluster de Bases de Datos

172

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

Page 179: Replicacion y Cluster de Bases de Datos

173

Después de esto nos autenticaremos con cuenta de SQL Server y utilizaremos el usuario "publicador" y la contraseña que definio el publicador luego daremos clic en connect

luego hacemos clic en PubProductos y luego en next

Page 180: Replicacion y Cluster de Bases de Datos

174

En esta ventana definiremos que el distribuidor esta en el publicador

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

Page 181: Replicacion y Cluster de Bases de Datos

175

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

Page 182: Replicacion y Cluster de Bases de Datos

176

luego daremos clic en next y después en la siguiente ventana daremos clic en el botón que se muestra en la siguiente imagen

Luego realizaremos las configuraciones de seguridad utilizaremos el usuario "sa" para la autenticacion luego daremos clic en Ok

Page 183: Replicacion y Cluster de Bases de Datos

177

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

Page 184: Replicacion y Cluster de Bases de Datos

178

Cerramos la ventana y luego hacemos clic derecho en Local Subscriptions y luego en Refresh, ahora crearemos la subscripcion de mezcla para ello seguimos los mismos pasos que acabamos de seguir pero en la siguiente ventana seleccionamos pubSucursal1

los siguientes pasos serán igual quee para la suscripción anterior, hasta llegar a la parte de Synchronization Schedule, En esta parte Seleccionaremos el Agent schedule como Run continuously para que sea mas rápida la sincronización, hacemos clic en next

Page 185: Replicacion y Cluster de Bases de Datos

179

En la siguiente ventana seleccionaremos en el parametro Initialize When: Inmediately , para que los cambios se realicen inmediatamente, por lo tanto veremos en el transcurso de un minutos que los registros que ingresamos en la base de datos inicial se replicaran en esta sucursal

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

Page 186: Replicacion y Cluster de Bases de Datos

180

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

Page 187: Replicacion y Cluster de Bases de Datos

181

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

Page 188: Replicacion y Cluster de Bases de Datos
Page 189: Replicacion y Cluster de Bases de Datos

183

Page 190: Replicacion y Cluster de Bases de Datos

184

PostgreSQL Cluster con DRBD y Heartbeat

Ana Jiménez, Byron Guerrero, David Sandoval.

Objetivos:

Conocer los conceptos básicos relacionados con Cluster y las tecnologías de

PostgreSQL , Heartbeat y DRBD.

Analizar el funcionamiento de las tecnologías mencionadas anteriormente como una

solo entidad.

Presentar un escenario en el cual se pueda a dar demostrar el funcionamiento del

Cluster y la replicación.

Conceptos:

Cluster:

El término cluster se aplica a un conjunto o conglomerado de computadores, construido utilizando componentes de hardware comunes y en la mayoría de los casos, software libre; los computadores se interconectan mediante alguna tecnología de red. El cluster puede estar conformado por nodos dedicados o por nodos no dedicados

Simplemente, un cluster es un grupo de múltiples computadores unidos mediante una red de alta

velocidad, de tal forma que el conjunto es visto como un único computador, más potente que los comunes de escritorio.

PostgreSQL

Es un SGBD relacional orientado a objetos y libre, publicado bajo la licencia BSD. Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa y/o persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre y apoyada por organizaciones comerciales.

Page 191: Replicacion y Cluster de Bases de Datos

185

PostgreSQL es un potente sistema de base de datos objeto-relacional de código abierto. Cuenta con más de 15 años de desarrollo activo y una arquitectura probada que se ha ganado una sólida reputación de fiabilidad e integridad de datos.

DRBD

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 administración.

Heartbeat

Es un dominio que proporciona servicios de infraestructura de cluster (comunicación y pertenencia) a sus clientes. Esto permite a los clientes tener conocimiento de la presencia (o desaparición) de los procesos en otras maquinas e intercambiar fácilmente mensajes entre ellos. Para resultar útil a los usuarios el dominio HEARTBEAT necesita emplearse en combinación 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 replicación estas son:

Protocol A: Protocolo de replicación asíncrona.

Protocol B: Protocolo de replicación síncrona de memoria

Protocol C: Protocolo de replicación síncrona. Utilizada en este tutorial.

Para más información de cada tipo de replicación en el siguiente enlace:

http://www.drbd.org/users-guide/s-replication-protocols.html

Page 192: Replicacion y Cluster de Bases de Datos

186

Desarrollo:

Se necesitan dos servidores o máquinas de similares características (tanto en las arquitecturas de dichos servidores y en sus sistemas operativos). En ambas es necesario tener una partición sin montar y sin formatear que esta será utilizada para el DRBD.

La capacidad de almacenamiento reservado en estas particiones permitirá almacenar como máximo la capacidad de la partición más chica.

A demás se utilizara un Switch y una tercera maquina que será utilizada como cliente y hará uso de los servidores. La topología utilizada para este tutorial es la siguiente:

El Hardware que se utilizo en la implementación:

2 maquinas como servidores con sistema operativo Debian

Un Switch

Cables UTP

Primario Secundario

Page 193: Replicacion y Cluster de Bases de Datos

187

1 maquina cliente para la conexión a la base de datos

Interfaces usb Lan Ethernet

Instalación y configuración de DRBD

1. Procederemos inicialmente a la instalación de los paquetes necesarios para la

configuración del Heartbeat

# sudoapt-getinstall drbd8-utils build-essential libreadline6-dev zlib1g-dev

2. Primero vamos a guardar una copia del archivo de configuración original:

# mv /etc/drbd.con /etc/drbd_backup.conf

3. Ahora procederemos a la configuración de dicho archivo:

Page 194: Replicacion y Cluster de Bases de Datos

188

4. La primera línea de código hace referencia a una encuesta en la cual drbd nos invita a

participar y la segunda línea (common) la velocidad de sincronización entre las dos

maquinas.

5. De igual manera también denominamos el nombre de recurso (resource pg) en donde

un recurso lo podemos definir como término colectivo pero que hace una referencia en

particular al conjunto de información que se va a replicar.

6. Declaramos que utilizaremos un método de replicación C (protocol c), en el cual la

replicación se dará como completa cuando en ambas maquinas se actualicen los datos.

7. Luego también declaramos el tiempo de espera para la sincronizaion.

8. De igual manera también se declaran los nodos que participaran en el proceso DRBD

los cuales cederán el recurso cuando uno se encuentre bajo o fuera de línea. Junto a

estos nodos internamente se le declaran:

a. La unidad lógica del drbd que se va a crear (/dev/drbd0).

b. La partición sin formato en el cual se va montar (en nuestro caso /dev/sda4).

c. La dirección IP por medio de la cual se cederán recuro.

d. La creación de meta-data correspondiente a la partición lógica que se realizara

más adelante.

9. Recordar que este archivo de configuración debe de estar presente en ambas maquinas

tanto en la primaria como en la secundaria

10. Una vez realizada correctamente la configuración anterior en ambos nodos

procederemos a colorcarnos las respectivas direcciones IP´s para poder iniciar la

sincronización 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:

Page 195: Replicacion y Cluster de Bases de Datos

189

Y observaremos un error al tratar de inicializar el drbd, la causa de este error es que aun no hemos creado la meta-data del recurso que va a compartir.

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

Mediante el comando drbdadm (este comando permite usar comando para manipular drbd0) create-md pg (pg es el nombre del recurso declarado anteriormente en el archivo drbd.conf) nos permite crear la meta-data del dispositivo lógico drbd0 y el recurso. Recordad que estos comandos deben de realizarse en ambos nodos.

Page 196: Replicacion y Cluster de Bases de Datos

190

13. El paso siguiente es inicializar de nuevo el drbd, el cual no debería de darnos ningún

tipo de error.

Podemos ver el estado de la sincronización por medio del comando cat /proc/drbd :

Como podemos ver ya se encuentran conectados pero aun no listos para realizar la replicación o intercambiarse el recurso para ello necesitamos definir un nodo primario y darle formato a la partición que se va a replicar.

14. Ahora es necesario establecer el nodo primario del cluster. Para este ejemplo elegimos

absdeb como servidor primario por lo que solo en ésta máquina ejecutamos el

siguiente comando, luego damos formato a la partición compartida y montamos la

partición:

# sudo 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 sincronización:

Page 197: Replicacion y Cluster de Bases de Datos

191

Una vez finalizado la sincronización y completada de forma satisfactoria se mostrara algo como lo siguiente:

Como se podrá ver el estado (cs:Connected) se encuentra estable o conectado, estadefinido el nodo primario y secundario y se encuentran listos para la replicación o copiar datos(uptodate/uptodate).

Instalación y Configuración de Heartbeat

1. Procedemos a la instalación de Heartbeat desde los repositorios con el siguiente

comando:

# sudo apt-get install Heartbeat

2. En el nodo primario copiamos los archivos de configuración 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/

Page 198: Replicacion y Cluster de Bases de Datos

192

# gzip -d ha.cf.gz

# gzip -d haresources.gz

3. Ahora procederemos a la configuración del archivo ha.cf

Esta fue la configuración realizada para nuestro escenario se muestra un comentario a la par de cada uno de los comandos, el initdead que es el único que no se alcanza a ver es el tiempo se que esperan para cuando ambos nodos no se inician al mismo tiempo, es el tiempo que esperan para iniciar el proceso.

4. Por último debemos modificar el archivo haresources. Ahí declaramos los servicios

que queremos monitorear y que deben estar siempre disponibles. En cuanto caiga una

máquina, la otra tomará el control levantando los servicios monitoreados y tomando la

IP Virtual. Dentro de haresources ingresamos:

Les voy a explicar que significa cada parte de este archivo. En primer lugar definimos cuál va a ser el nodo principal en este caso asbdeb. IPaddr::10.0.0.1 es el script que asigna la IP virtual que tendrá el

Page 199: Replicacion y Cluster de Bases de Datos

193

cluster y el cual será el punto de acceso,también la podríamos llamar un ip flotante que será la que el Heartbeat asigne cuando una maquina caiga.

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 configuración a todos los nodos o realizamos las

mismas configuraciones

Page 200: Replicacion y Cluster de Bases de Datos

194

Instalación y configuracion del PostgreSQL acceso remoto

1. La instalación de PostgreSQL será a través de la compilación del código fuente porque

debemos hacer algunas modificaciones a la variable pg_ctl para que todo funcione

correctamente. Descargue el código fuente del siguiente enlace

http://www.postgresql.org/download/

2. Luego de bajar los fuentes del PostgreSQL descomprimimos, y modificamos el código

de la aplicación pg_ctl, el archivo fuente de esta aplicación esta en postgresql-

8.X.XX/src/bin/pg_ctl/ y se llama pg_ctl.c.

3. Una vez ubicado esta aplicación buscamos la leyenda “no server runnig” dentro del

código y reemplazamos la palabra “runnig” por cualquier otra.

Esto tiene una explicación y es que Heartbeat verifica si un servicio está corriendo o no buscando la cadena “running” u “ok” al pedir su status, entonces cuando heartbeat le pregunta a PostgreSQL si está ejecutándose correctamente él responde “no server running” y heartbeat supone que todo está bien aunque realmente no sea así.

4. Con la partición montada en la maquina primaria crearemos la ubicación 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

Page 201: Replicacion y Cluster de Bases de Datos

195

7. A continuación modificamos un par de archivos para permitir el acceso remoto a la

base de datos; el primero de estos seria /opt/postgresql/data/postgresql.conf

Modificamos la línea de listen_addresses igualándola 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 línea:

Host all all 10.2.0.0/24 trust

Con la línea anterior indicamos a Postgres que permita al bloque de direcciones 10.2.0.0/24 que acceda a cualquier base de datos con cualquier usuario en el servidor. Recordad que estos pasos se aplican solo para la maquina primaria.

Page 202: Replicacion y Cluster de Bases de Datos

196

Pruebas de del Escenario

1. Una vez realizado correctamente la configuraciones anteriores tanto para Heartbeat y

drbd e inicializar el motor PostgreSQL, haber definido el tanto el nodo primario y

secundario procedemos a la iniciación 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 estén replicando correctamente los datos, en el nodo

secundario ejecutamos el comando “watch cat /proc/drbd” mientras que en el nodo

principal bajamos el servicio de hearbeat. Antes de bajar el servicio en el nodo

secundario deberíamos tener la siguiente salida en la maquina primaria:

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 deberíamos de ver algo similar a la captura anterior pero con la diferencia

que ahora nuestro servidor secundario será primario:

Page 203: Replicacion y Cluster de Bases de Datos

197

Referencias

Documentacion de implementación y comandos DRBD

http://www.drbd.org/

Documentacion de implementación e instalación de Heartbeat

http://www.habitacion511.eu/index.php/alta-disponibilidad-en-linux/

Documentacion de PostgreSQL

http://www.postgresql.org/docs/9.1/static/install-procedure.html

Documentacion de Cluster con PostgreSQL

http://www.ipcorp.com.ar/blog/2009/10/01/cluster-de-alta-disponibilidad-de-

servidores-postgresql-con-drbd/

http://wiki.postgresql.org/images/0/07/Ha_postgres.pdf

http://www.slideshare.net/jessejajti/hadrbdpostgres-postgreswest-08-presentation

Page 204: Replicacion y Cluster de Bases de Datos
Page 205: Replicacion y Cluster de Bases de Datos

199

Replicación con PostgreSQL

JuarezYonatan, Larios Raquel, Zelaya Josue

Objetivos:

Aprender sobre el contenido amplio de PostgreSQL.

Analizar el funcionamiento de réplicas 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 gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con su código fuente disponible libremente. Es uno de los sistemas de gestión de bases de datos de código abierto más potentes del mercado y en sus últimas versiones no tiene nada que envidiarle a otras bases de datos comerciales.

PostgreSQL utiliza un modelo cliente/servidor y usa multiprocesos en vez de multihilos para garantizar la estabilidad del sistema. Un fallo en uno de los procesos no afectará el resto y el sistema continuará funcionando.

¿Qué es una Replicación?

La réplica es un conjunto de tecnologías destinadas a la copia y distribución de datos y objetos de base de datos, desde una base de datos a otra, para luego sincronizar ambas bases de datos y mantener su coherencia. La réplica permite distribuir datos a diferentes ubicaciones y a usuarios remotos o móviles mediante redes locales y de área extensa, conexiones de acceso telefónico, conexiones inalámbricas e Internet.

¿Qué es Slony-I?

Es un software que nos permite hacer replicaciones maestro/esclavo asíncrono, realizando actualizaciones en cascada.

Page 206: Replicacion y Cluster de Bases de Datos

200

Slony-I es un maestro "a varios esclavos" sistema de replicación en cascada de apoyo (por ejemplo - un nodo puede alimentar a otro nodo que se alimenta de otro nodo) y de conmutación por error.

El panorama para el desarrollo de Slony-I es que es un esclavo de replicación del sistema principal que incluye todas las características y las capacidades necesarias para replicar bases de datos de gran tamaño a un número razonablemente limitado de los sistemas esclavistas.

Slony-I es un sistema diseñado para su uso en centros de datos y sitios de respaldo, en el modo normal de operación es que todos los nodos están disponibles.

Sobre pgpool-II.

Pgpool-II habla los protocolos de frontend y backend de PostgreSQL, y pasa las conexiones entre ellos. De ese modo, una aplicación de base de datos (frontend) cree que pgpool-II es el verdadero servidor de PostgreSQL, y el servidor (backend) ve a pgpool-II como uno de sus clientes. Debido a que pgpool-II es transparente tanto para el servidor como para el cliente, una aplicación de base de datos existente puede empezar a usarse con pgpool-II casi sin ningún cambio en su código fuente.

pgpool-II funciona sobre Linux, Solaris, FreeBSD y la mayoría de las arquitecturas UNIX. Windows no está soportado. Las versiones de PostgreSQL soportadas son de la 6.4 para arriba. Para usar la paralelización de consultas es necesaria la versión 7.4 o superior.

Pgpool-II proporciona las siguientes características:

Limita el excedente de conexiones.PostgreSQL soporta un cierto número de conexiones concurrentes y rechaza las que superen dicha cifra. Aumentar el límite máximo de conexiones incrementa el consumo de recursos y afecta al rendimiento del sistema. pgpool-II tiene también un límite máximo 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 conexión con las mismas propiedades (nombre de usuario, base de datos y versión del protocolo). Ello reduce la sobrecarga en las conexiones y mejora la productividad global del sistema.

Replicación. pgpool-II puede gestionar múltiples servidores PostgreSQL. El uso de la función de replicación permite crear una copia en dos o más discos físicos, de modo que el servicio puede continuar sin parar los servidores en caso de fallo en algún disco.

Balanceo de carga. Si se replica una base de datos, la ejecución de una consulta SELECT en cualquiera de los servidores devolverá el mismo resultado. pgpool-II se aprovecha de la característica de replicación para reducir la carga en cada uno de los servidores PostgreSQL distribuyendo las consultas SELECT entre los múltiples servidores, mejorando así la productividad global del sistema. En el mejor

Page 207: Replicacion y Cluster de Bases de Datos

201

caso, el rendimiento mejora proporcionalmente al número de servidores PostgreSQL. El balanceo de carga funciona mejor en la situación en la cuál hay muchos usuarios ejecutando muchas consultas al mismo tiempo.

Paralelización de consultas. Al usar la función de paralelización 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 ejecución. La paralelización de consultas es una solución adecuada para búsquedas 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 continuación se describen deben de realizarse en todas las maquinas

en las cuales se realizara una replicación de bases de datos. Lo primero que debemos hacer es descargar la versión de postgres, en nuestro caso la versión 9.2, lo pueden descargar del siguiente enlace http://www.enterprisedb.com/products-services-training/pgdownload. 1 Ejecutamos el instalador como administrador, y nos aparecerá un cuadro de dialogo para

la instalación de postgres.

Page 208: Replicacion y Cluster de Bases de Datos

202

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

3 Presionamos 3 veces siguiente y comenzara el proceso de instalación

Page 209: Replicacion y Cluster de Bases de Datos

203

4 Luego, que ya se haya terminado la instalación, debemos de tener cuidado de seleccionar

la opción de descargar otras herramientas, y damos clic en finalizar.

Page 210: Replicacion y Cluster de Bases de Datos

204

5 Automaticamente se nos abriráuna aplicación StackBuilder, que nos servirá para la

instalación de slony-I. En la pestaña seleccionamos POSTGRESSQL9.2 en el puerto

5432 y damos clic en siguiente

6 Ahora se no muestra una ventana con las categorías de complementos que podemos instalar, debemos elegir soluciones de replicación y chequear la casilla de SLONY-I

Si todo es correcto presionamos siguiente. Se instalaran los paquetes seleccionados y damos clic en finalizar. Se debe aclarar que para realizar esta instalación se debe tener una conexión a internet.

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

Page 211: Replicacion y Cluster de Bases de Datos

205

A continuación mostraremos un ejemplo de una réplica Maestro-Esclavo con la siguiente topología:

MAESTRO ESCLAVO No debemos olvidar que las direcciones de los nodos deben encontrarse en el mismo segmento de red, además la DB a replicar debe de crearse tanto en el nodo maestro como en el nodo esclavo, debe de tener el mismo nombre, los mismos campos y del mismo tipo, es decir, debe ser idéntica. Después de tener las consideraciones anteriores, pasamos a realizar los pasos para la replicación de Bases de Datos. PASO 1: Primero debemos de crear la BD a replicar (debe de crearse en ambos nodos), en este ejemplo utilizaremos la que trae postgres por defecto (postgres) y crearemos una tabla, la cual tendrá que replicarse. La tabla que crearemos se llama PERSONA y tiene como campos, nombre, apellido y dui.

persona

nombre (tex)

apellido (tex)

dui (tex)

Para crear la tabla aremos uso del pgAdminIII, para ello nos vamos a Inicio Todos los Programas PostgreSql pgAdmin III.

Page 212: Replicacion y Cluster de Bases de Datos

206

Luego postgresEschemasPublicTables

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

Page 213: Replicacion y Cluster de Bases de Datos

207

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

Page 214: Replicacion y Cluster de Bases de Datos

208

Nota: Es importante notar que antes del paso anterior (ruta del slony-I) postgres no nos dejara crear cluster, es decir no podemos replicar datos, como se muestra en la siguiente imagen

Cuando ya hemos establecido la ruta de slony-I, el mensaje de la parte inferior de la creación del Cluster cambia a “Especificar el nombre del cluster”

Debemos de verificar que tengamos disponible el lenguaje pgsql

Page 215: Replicacion y Cluster de Bases de Datos

209

Si el lenguaje no está, lo agregamos de la siguiente manera: File OpcionDisplay y seleccionamos Lenguanges

PASO 3: Ahora necesitamos configurar el firewall de Windows para que nos permita conexiones a través del puerto 5432 que es el que utiliza postgres por defecto, para ello nos

vamos a PANEL DE CONTROL SISTEMA Y SEGURIDAD FIREWALL DE

WINDOWS CONFIGURACION AVANZADA REGLAS DE ENTRADA

Page 216: Replicacion y Cluster de Bases de Datos

210

NUEVA REGLA

Luego REGLA DE ENTRADA NUEVA REGLA

Luego seleccionamos el protocolo TCP y especificamos el puerto 5432

Page 217: Replicacion y Cluster de Bases de Datos

211

Damos permitimos la conexión y siguiente

Luego seleccionamos dominio y publico

Page 218: Replicacion y Cluster de Bases de Datos

212

Y por último colocamos un nombre y finalizar

PASO 4: Ahora lo que haremos será configurar el archivo pg_hba de postgres en todas las maquinas donde realizaremos la réplica, este archivo se encuentra en, C:\Program Files (x86)\PostgreSQL\9.2\data\pg_hba. En este archivo definiremos las direcciones de los nodos

Page 219: Replicacion y Cluster de Bases de Datos

213

y les diremos a cuales BD pueden conectarse y con cuales usuarios y cuál será el metodo de encriptación de la contraseña. Deberá quedarnos así:

# TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. #host replication postgres 127.0.0.1/32 md5 #host replication postgres ::1/128 md5 #Maestra host all all 192.168.0.1/24 md5 #Esclavo

host all all 192.168.0.2/24 md5

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

cluster name = slony_postgres; node 1 admin conninfo = 'dbname = postgres host = 192.168.0.1 user = postgres password = oracle'; node 2 admin conninfo = 'dbname = postgres host = 192.168.0.2 user = postgres password = oracle'; init cluster (id=1, comment = 'Maestro'); create set (id=1, origin=1, comment= 'Mistablas'); set add table (set id=1, origin=1, id=1, fully qualified name = 'public.persona', comment= 'postgres'); store node (id = 2, comment = 'nodoesclavo', EVENT NODE = 1);

Page 220: Replicacion y Cluster de Bases de Datos

214

store path (server = 1, client = 2, conninfo = 'dbname = postgres host = 192.168.0.1 user = postgres password = oracle'); store path (server = 2, client = 1, conninfo = 'dbname = postgres host = 192.168.0.2 user = postgres password = oracle'); store listen (origin = 1, provider = 1, receiver = 2);

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

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

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

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

PASO 7: Ahora ejecutamos el escrip Maestro.txt en el nodo maestro, para ello abrimos la consola de windows y nos colocamos en la ruta donde se encuentra guardado y ejecutamos el commandoslonik Maestro.txt

PASO 8: Ahora ejecutamos el escrip Suscriptor.txt en el nodo esclavo, para ello abrimos la consola de windows y nos colocamos en la ruta donde se encuentra guardado y ejecutamos el

Page 221: Replicacion y Cluster de Bases de Datos

215

commandoslonik Suscriptor.txt

PASO 9: Ahora en ambos nodos (siempre en la consola de windows) ejecutamos la siguiente línea: slonslonypostgres “dbname = postgresuser=postgrespassword=oracle”

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

Page 222: Replicacion y Cluster de Bases de Datos

216

REPLICACION CON POSTGRES Y PGPOOL EN LINUX

PREPARATIVOS INICIALES

El ejemplo de réplica presentado a continuación corresponde al siguiente escenario.

Figura 1.

En el escenario descrito en la figura 1, se encuentran dos máquinas 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 configuración de este escenario seguiremos los siguientes pasos:

Paso 1. Configuración de los nombres de host.

Esta configuración es importante porque nos permitirá usar el nombre de host en lugar de la dirección

IP para poder realizar la configuración. Lo primero que debemos hacer en ambos nodos es editar el

Page 223: Replicacion y Cluster de Bases de Datos

217

fichero /etc/host.

# nano /etc/host

Deberá quedar como se muestra en la figura 2.

Figura 2.

Paso 2. Instalación 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

Page 224: Replicacion y Cluster de Bases de Datos

218

Paso 3. Configuración de Postgresql.

Los siguientes pasos aplican a ambas instancias de PostgreSQL en los nodos pgsql1 y pgsql2.

Logueados como usuario postgres debemos añadir al usuario pgpool2 a los administradores de

postgres. Para loguearnos:

# su - postgres

Añadiendo al usuario pgpool2 .

createuser --superuser pgpool2

exit

A continuación vamos a controlar a cuáles host se les permitirá conectarse, cómo deberán autenticarse,

cuáles nombres de usuario de postgresql pueden usar y a cuáles bases de datos pueden acceder. Lo cual

lograremos editando el fichero: /etc/postgresql/9.2/main/pg_hba.conf

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

La figura 3 muestra como debe quedar el fichero.

Figura 3.

Page 225: Replicacion y Cluster de Bases de Datos

219

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

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

Cambiamos los siguientes parametros:

listen_addresses = '*'

port = 5432

Reiniciamos postgres para activar los cambios:

# /etc/init.d/postgresqlrestart

Paso 4. Configuración pgpool2.

La configuración de pgpool-II la realizaremos únicamente en el nodo pgsql1, pues sólo en ese host lo

tenemos instalado.

El fichero pcp.conf es un fichero de nombres de usuario y contraseñas usado para autenticarse con la

interfaz. Todos los comandos requieren que pcp.conf se haya configurado. Debemos editar el fichero:

/etc/pgpool2/pcp.conf para añadir nuestro usuario y contraseña.

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

Ahora editamos el archivo:

# nano /etc/pgpool2/pcp.conf

Page 226: Replicacion y Cluster de Bases de Datos

220

y agregamos al final:

root:dd22141acb5ea065acd5ed773729c98f

Luego editamos el archivo de configuración 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

Page 227: Replicacion y Cluster de Bases de Datos

221

child_life_time = 300

connection_life_time = 0

child_max_connections = 0

client_idle_limit = 0

authentication_timeout = 60

logdir = '/var/run/postgresql'

replication_mode = true

load_balance_mode = true

replication_stop_on_mismatch = true

replicate_select = false

reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'

print_timestamp = true

master_slave_mode = false

connection_cache = true

health_check_timeout = 20

health_check_period = 60

health_check_user = ''

failover_command = ''

failback_command = ''

insert_lock = false

ignore_leading_white_space = true

log_statement = false

log_connections = false

log_hostname = false

parallel_mode = false

enable_query_cache = false

#set pgpool2 hostname

pgpool2_hostname = 'pgsql1'

# system DB info

system_db_hostname = 'localhost'

Page 228: Replicacion y Cluster de Bases de Datos

222

system_db_port = 5432

system_db_dbname = 'pgpool'

system_db_schema = 'pgpool_catalog'

system_db_user = 'pgpool'

system_db_password = ''

# backend_hostname, backend_port, backend_weight

# here are examples

backend_hostname1 = 'pgsql2'

backend_port1 = 5432

backend_weight1 = 1

backend_hostname0 = 'pgsql1'

backend_port0 = 5432

backend_weight0 = 1

EL siguiente paso es arrancar pgpool2

# /etc/init.d/pgpool2 start

Ahora ya somos capaces de conectarnos al puerto 9999 de la IP de administración del nodo pgsql1 .

Page 229: Replicacion y Cluster de Bases de Datos

223

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

Paso 5. Probrando la replicación.

Tras haber comprobado que ya podemos conectarnos, vamos a proceder a probar la replicación.

Para ello es necesario que la misma configuración de postgresql que se hizo en psql1 esté en psql2.

Para probar la replicación 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 CONFIGURACIÓN DE

PGPOOL2 SOLO SE DEBE HACER EN PSQL1.

Page 230: Replicacion y Cluster de Bases de Datos

224

Bibliografía.

Wallen J., Set up MySQL database replication to ensure up-to-date backups. Obtenida el 31 de abril de 2013 en http://www.techrepublic.com/blog/itdojo/set-up-mysql-database-replication-to-ensure-up-to-date-backups/3340?pg=1

Oracle MySQL, Capítulo 6. Replicación 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,. Replicación en MySQL. Obtenida el 5 de mayo de 2013 en http://basesdedatosues.blogspot.com/2012/06/replicacion-mysql-replicacion-en-mysq.html

Jaume Sabater (2008). Replicación y alta disponibilidad de PostgreSQL con pgpool-II. (1 Nov – 2008) http://linuxsilo.net/articles/postgresql-pgpool.html

pgpool Global Development Group (2003 – 2011). Pgpool-II user manual http://pgpool.projects.pgfoundry.org/pgpool-II/doc/pgpool-en.html

Cristián Fabres A. Levantar el servicio postgres en linux. http://mundo2.cl.tripod.com/colabora/inst_pg_01_cf.htm

Replicación con Postgres http://www.slideshare.net/JohannaMendez2/replicacion-con-postgresql-y-slony

Slony-I Support. http://www.pgadmin.org/docs/dev/slony.html

Slony-I enterprise-level replication system http://www.slony.info/

Page 231: Replicacion y Cluster de Bases de Datos

225