Você está na página 1de 12

SOLUCIN PARA LA ALTA DISPONIBILIDAD Y PROTECCIN DE LA INFORMACIN EN ENTORNOS PEQUEOS: REPLICACIN DE DATOS CON HOT STANDBY Y STREAMING REPLICATION

DE POSTGRESQL 9.1
Lisleydi Mier Pierre2, MsC. Yudisney Vazquez Ortz2
1

Estudiante de la Facultad 4, Universidad de las Ciencias Informticas, Carretera a San Antonio de los Baos Km. 2 , Boyeros, Ciudad de La Habana 2 Ing. en Ciencias Informticas, Universidad de las Ciencias Informticas 1 e-mail: yvazquezo@uci.cu 2 e-mail: lmier@estudiantes.uci.cu

RESUMEN En una sociedad donde la informacin ha alcanzado altas cotizaciones las bases de datos estn sometidas a crecimiento, consulta y actualizacin constantes; lo que implica que puedan colapsar, incluso, los servidores de bases de datos ms potentes derivando en fallas de los sistemas informticos. Por tanto, lograr de la informacin la disponibilidad y proteccin, a pesar de su versatilidad, es una tarea de primer orden de las empresas y organismos cubanos. Las tcnicas y soluciones existentes para lograr este propsito en el mbito del cdigo abierto son dismiles pero complejas, sobre todo si se tiene en cuenta que los especialistas del pas no estn an preparados para lidiar con estas ya que generalmente requieren de complicados mecanismos de configuracin y administracin. Problema del que no escapa la solucin de replicacin con Hot Standby y Streaming Replication, caractersticas de PostgreSQL que permiten la implementacin de un sistema de replicacin asncrono maestro-esclavo. El presente artculo propone, en aras de contrarrestar la situacin existente, la creacin de un script en bash que automatice el proceso de montaje de la solucin de replicacin con Hot Standby y Streaming Replication de PostgreSQL 9.1, como herramienta para garantizar la disponibilidad y proteccin de la informacin en entornos pequeos y con ella, potenciar el empleo de tecnologas de cdigo abierto en el pas para alcanzar la soberana tecnolgica. PALABRAS CLAVES: alta disponibilidad y proteccin de la informacin, Hot Standby y Streaming Replication, bash para montaje de solucin de replicacin.

SOLUTION FOR TO GUARANTEE THE INFORMATION HIGH AVAILABILITY AND PROTECTION IN SMALL ENVIRONMENTS: DATA REPLICATION WITH HOT STANDBY AND STREAMING REPLICATION OF POSTGRESQL 9.1
ABSTRACT In a society where information had reached high prices, the databases are undergoing to constants growth, consultation and updating; which implies that they can collapse, even the databases servers more powerful, drifting in computer systems failures. Therefore, to achieve information availability and protection, despite its versatility, is a task of first order of the Cubans enterprises and organisms. The techniques and existing solutions for this purpose in the field of open source are dissimilar but complex, especially if one considers that the country's specialists are not yet prepared to deal with these, as they usually require complicated mechanisms of configuration and administration. Problem that isnt solving with Hot Standby Replication and Replication Streaming, PostgreSQL features that enabling the implementation of an asynchronous master-slave replication system. This article proposes, in order to counter the situation, creating a bash script to automate the assembly process of the replication solution with Hot Standby and Streaming Replication of PostgreSQL 9.1, as a tool to ensure the information

availability and protection in small environments and with it, potent the use of open source technologies in the country to achieve technological sovereignty. KEY WORDS: bash script to mount replication solution, high availability and data protection, Hot Standby and Streaming Replication.

1. INTRODUCCIN
En una sociedad donde la informacin ha alcanzado altas cotizaciones, las bases de datos estn sometidas a crecimiento, consulta y actualizacin constantes. Con los grandes volmenes de informacin que se manipulan en las empresas, incluso los servidores de bases de datos ms potentes pueden colapsar, crearse cuellos de botellas y, por ende, derivar en fallas de los sistemas informticos. Un estudio realizado hace ms de 15 aos, cuando an la informacin no haba alcanzado los niveles actuales de importancia y, los sistemas informticos no eran ni la mitad de indispensables que son hoy para el funcionamiento eficiente de una empresa, gener que la no disponibilidad de los sistemas ocasionaba en 4 horas un impacto negativo de 40 millones en la cuenta de resultados y que se afectaban por dems, la productividad de las 450 empresas norteamericanas estudiadas, donde como promedio 1 hora de tiempo perdido equivala a 355 horas de trabajo productivo. (Akren, 2011) Estudios ms recientes en Argentina sealan que una empresa puede perder miles de dlares por hora de cada de sus sistemas, siendo las ms afectadas las firmas de hidrocarburos que manejan grandes volmenes de informacin vitales como el estado de los pozos (hasta 700 mil dlares), las telefnicas (hasta 600 mil dlares) y los hipermercados (hasta 550 mil dlares). (Garca, 2006) En Cuba, aunque las prdidas de las empresas y organismos no reflejarn cifras tan exorbitantes, s puede afectarse la eficiencia y la calidad de los servicios brindados a la poblacin, as como la productividad de empresas recaudadoras de divisas como la Empresa de Telecomunicaciones de Cuba, la Universidad de las Ciencias Informticas o el Banco Central de Cuba. Sin dudas garantizar de la informacin su disponibilidad y proteccin, es tarea de primer orden de las empresas y organismos hoy da. Razn por lo que se han creado soluciones para que estas primen por encima de los problemas derivados de su versatilidad. La replicacin de los datos a otros sitios, en estrecha combinacin con el balanceo de carga y la alta disponibilidad, ha sido una de estas soluciones, posibilitando que estos sean duplicados en otra localizacin y, por tanto, accesibles tambin desde all. Esta solucin ha ido evolucionando a medida que han ido proporcionndose ms y mejores formas de realizarla. Inicialmente se duplicaban las bases de datos manualmente, lo que generaba que se consultaran, la mayora del tiempo, datos desactualizados. (Corporacin-Sybven, 2011) En la actualidad existen herramientas que automatizan el proceso y garantizan la consistencia de los datos en todos los sitios a los que son replicados. Por otro lado, las herramientas y tcnicas de replicacin deben tener en cuenta las caractersticas de los sistemas de gestin de bases de datos que se empleen en la empresa u organismo donde se implante la solucin de replicacin, la cual debe ser, por dems, compatible con el gestor. En Cuba hasta poco ms del 2009, se haca uso excesivo de gestores de bases de datos propietarios como soporte a las aplicaciones empleadas en sus empresas y organismos, lo que acarreaba problemas como: (Vazquez, 2011) - La imposibilidad de solicitar soporte y capacitacin para el empleo de los gestores a las empresas propietarias de los sistemas; dificultndose la resolucin de problemas surgidos del trabajo con ellos.

El pago de grandes sumas de dinero por su empleo en aquellas empresas donde se utilizaban en contratos con terceros; destinndose anualmente cientos de miles de dlares a tal propsito. El desarrollo de soluciones de software costosas con base en este tipo de gestores; disminuyndose las utilidades de los proyectos de exportacin de las empresas productoras de software. La posibilidad real de que en las soluciones propietarias empleadas existieran puertas traseras; dejando al pas vulnerable a ataques causantes de daos a la economa y seguridad nacional.

A raz de esta situacin se cre en la Universidad de las Ciencias Informticas, en febrero de 2009, la Comunidad Tcnica Cubana de PostgreSQL con el propsito de potenciar el empleo de PostgreSQL como sistema de gestin de bases de datos. (Castillo, 2010) Fue elegido dicho gestor por ser un sistema objeto-relacional, de propsito general, multiusuario y de cdigo abierto, potente y diseado esencialmente para sistemas de informacin transaccional. (PostgreSQL.org, 2011) El proyecto PostgreSQL ha implementado varias soluciones para hacer frente a este problema de la alta disponibilidad de la informacin, e incluso, al ser de cdigo abierto y altamente extensible, varias compaas han creado en torno a l soluciones comerciales que ofrecen variadas opciones. (PGDG, 2011) No obstante las caractersticas que lo reafirman como el gestor de cdigo abierto ms potente del mercado y, de contar con una amplia gama de soluciones en torno a l para lograr la alta disponibilidad de la informacin, los especialistas cubanos se enfrentan a algunos problemas a la hora de identificar una solucin que garantice la disponibilidad de una informacin siempre consistente, los fundamentales son: - La inexperiencia en el trabajo con las tecnologas para el montaje de las soluciones de alta disponibilidad, balanceo de carga y replicacin con PostgreSQL; que impiden el aprovechamiento al mximo de sus potencialidades y dificultan su empleo. - La poca disponibilidad de recursos materiales para el diseo de soluciones de alta disponibilidad, balanceo de carga y replicacin; que muchas veces requieren ordenadores potentes y comunicacin constante entre ellos. - La dificultad para configurar estas soluciones en la mayora de los casos; que frena su empleo y proliferacin en el pas, aun cuando existen muchas guas para la correcta configuracin de las soluciones persisten problemas sobre todo por el poco dominio de los especialistas del sistema operativo y el gestor de bases de datos. Estos problemas influyen negativamente en la instauracin de soluciones para la disponibilidad de la informacin y su proteccin en las empresas y organismos del pas, basadas en tecnologas de cdigo abierto. Ante esta situacin, surge la propuesta de desarrollar un ejecutable que automatice el proceso de configuracin de servidores PostgreSQL 9.1, facilitando la instauracin de una solucin de replicacin que garantice la alta disponibilidad y proteccin de la informacin en entornos pequeos. Con la cual se: - Garantizara la alta disponibilidad de la informacin en pequeas empresas, sin necesidad de invertir en recursos de hardware y software. - Facilitara el proceso de configuracin de la solucin de replicacin con tecnologas de bases de datos de cdigo abierto. - Disminuiran las posibilidades de congestin de los servidores de bases de datos de las empresas al balancear la carga de las peticiones. - Favorecera la proteccin de la informacin al tener un respaldo el servidor de bases de datos de las empresas.

2. TECNOLOGAS

A EMPLEAR EN ENTORNOS REPLICACIN DE DATOS EN POSTGRESQL

PEQUEOS

PARA

LA

PostgreSQL es un sistema de gestin de bases de datos objeto-relacional, de propsito general, multiusuario y de cdigo abierto liberado bajo la licencia BSD, que soporta gran parte del estndar SQL y ofrece modernas caractersticas como consultas complejas, disparadores, vistas, integridad transaccional, control de concurrencia multiversin y que puede ser extendido por el usuario aadiendo tipos de datos, operadores, funciones agregadas, funciones ventanas y funciones recursivas, mtodos de indexado y lenguajes procedurales. (PGDG, 2011) Tcnicas implementadas por PostgreSQL para la alta disponibilidad, el balanceo de carga y la replicacin Los servidores de bases de datos, a los que en la mayora de los casos les llegan peticiones tanto de lectura como de escritura, son difciles de combinar para balancear la carga entre ellos, debido a que los datos actualizados deben ser replicados al resto de los nodos del sistema de replicacin para mantener la consistencia de los mismos. No existe una solucin nica que elimine este problema de sincronizacin, las existentes (descritas brevemente en los subepgrafes siguientes) tratan de resolverlo de distintas maneras minimizando su impacto para casos especficos. Comparticin de disco ante fallas Permite la sincronizacin teniendo una sola copia de la base de datos almacenada en un arreglo de discos compartido por mltiples servidores. Si el servidor principal falla el esclavo es habilitado. La principal limitante de este mtodo es que si el arreglo de discos falla o se corrompe, los servidores primario y esclavo no funcionan, adems el esclavo nunca podr acceder al almacenamiento compartido mientras el servidor primario est corriendo. (PGDG, 2011) Replicacin del sistema de archivos Versin modificada de la funcionalidad de compartir hardware, donde todos los cambios al sistema de archivos son duplicados a un sistema de archivos residente en otra computadora. Su principal restriccin es que la copia debe hacerse de forma que se asegure que el esclavo tenga una copia consistente del sistema copiado. (PGDG, 2011) Warm Standby y Hot Standby usando PITR (Point-in-Time Recovery) Los servidores warm y hot pueden mantenerse actualizados mediante la lectura de los registros WAL. Si el servidor principal falla, uno de los esclavos pueden establecerse rpidamente como el nuevo servidor de bases de datos maestro. Este mtodo asincrnico slo puede realizarse para el servidor de bases de datos entero. Un servidor esclavo PITR puede implementarse usando transporte de registros basados en archivos, replicacin de flujos o una combinacin de ambas. (PGDG, 2011) Replicacin basada en triggers de maestro a esclavo Una replicacin maestro-esclavo enva las consultas de modificacin de datos al servidor maestro, ste de forma asincrnica enva los datos modificados al esclavo, quien puede responder consultas de slo lectura mientras el servidor maestro est corriendo. Slony-I implementa este mecanismo. (PGDG, 2011) Replicacin con una capa media basada en sentencias Con este tipo de replicacin un programa intercepta cada consulta SQL y la enva a uno o ms servidores, aquellas de lectura-escritura se envan a todos los servidores y las de slo lectura a uno de ellos, permitiendo distribuir la carga de lectura. El principal problema de este tipo de replicacin es que consultas como random(), current_timestamp() y similares, pueden tener valores diferentes en los servidores, por lo que para resolverlo se deben implementar otros mecanismos. Pgpool-II y Sequoia implementan este mecanismo. (PGDG, 2011) Replicacin asncrona multimaestro Empleada para servidores que no estn regularmente conectados, donde cada servidor trabaja independientemente y peridicamente se comunica con los dems servidores para identificar los conflictos. Bucardo implementa este mecanismo. (PGDG, 2011) Replicacin sncrona multimaestro

En esta solucin, que puede ser implementada en 2 fases, cada servidor acepta peticiones de escritura y los datos modificados son transmitidos del servidor original a cada nodo antes de cada commit de la transaccin. Una gran actividad de escritura puede causar bloqueos excesivos afectando el rendimiento. Es mejor fundamentalmente para cargas de trabajo de slo lectura; al cada servidor aceptar peticiones de escritura, no existen problemas con funciones no determinsticas como random(). (PostgreSQL.org-1, 2011) Determinacin de qu tcnica emplear para los entornos pequeos De todas las tcnicas analizadas, la solucin que est ms acorde a las necesidades de los entornos pequeos del pas es la asncrona, en la que: - No se requiere hardware especial, dando la posibilidad a pequeas entidades y empresas la posibilidad de implementarla con el equipamiento de que disponen y sin invertir para ello en nuevo equipamiento. - No se espera por mltiples servidores, permitiendo que se realice la consulta de los datos sin necesidad de que ambos servidores del sistema de replicacin estn disponibles. - El servidor esclavo puede aceptar consultas de slo lectura, permitiendo balancear la carga de peticiones entre ste y el servidor maestro, de forma que no se sobrecargue el ltimo. Hot Standby y Streaming Replication Este tipo de replicacin incluido en el ncleo de PostgreSQL a partir de su versin 9.0, est basado en la transferencia de registros WAL entre servidores; la que se realiza de registro a registro o de ficheros WAL completos. Streaming Replication permite transferir asincrnicamente registros WAL sobre la marcha entre los servidores, lo que implica que el suplente se conecta al maestro copiando las cadenas del WAL como son generadas sin esperar a que sean archivadas, reducindose el tiempo de desincronizacin entre los servidores. (Martnez, 2010) Como muestra la figura 1, en el servidor esclavo existe un proceso receptor WAL que se conecta mediante TCP/IP al maestro, donde el proceso remitente WAL enva los registros sobre la marcha al esclavo. El emplear solamente esta caracterstica puede ocasionar que el maestro recicle los ficheros WAL antes de que sean transferidos al esclavo.

Registro WAL Remitente WAL Receptor WAL

Servidor maestro

Servidor esclavo

Archivos WAL

Registro WAL Registro WAL ... Registro WAL

Archivos WAL

Directorio pg_xlog

Directorio pg_xlog

Fig. 1: Funcionamiento de Streaming Replication Por su parte, Hot Standby permite transferir asincrnicamente los registros WAL cuando stos estn completos. El emplear solamente este mtodo puede ocasionar que se pierdan las ltimas transacciones registradas en el servidor maestro en caso de alguna cada del mismo.

Por tales motivos, para tener un sistema ms robusto se suelen emplear los dos mtodos conjuntamente. Estas dos funcionalidades combinadas implementan en el ncleo del gestor lo necesario para instalar un sistema de replicacin asncrono maestro-esclavo. (Martnez, 2010)

Peticiones de Lectura/Escritura

Peticiones de Lectura

Remitente WAL

Streaming Replication basada en registro a registro Receptor WAL

Servidor maestro

Servidor esclavo

copy / rsync

Archivos WAL

WAL archivados

Directorio pg_xlog

Directorio de archivo

Trasnferencia de archivos WAL completos

Archivos WAL transferidos

Archivos WAL

Directorio pg_xlog

Directorio de archivo

Fig. 2: Replicacin combinando Hot Standby y Streaming Replication La solucin mostrada en la figura 2 es la ms acertada para implementar en los entornos pequeos del pas empleando tecnologas de bases de datos de cdigo abierto, ya que: - No requiere de invertir en nuevo equipamiento. - Permite el balanceo de carga entre ambos servidores. - Garantiza la proteccin de la informacin, al tener las bases de datos ntegras en dos localizaciones. - El tiempo de desincronizacin entre los servidores es el menor posible. - El servidor esclavo puede configurarse como maestro en caso de cadas del principal. - Minimiza las posibilidades de prdidas de informacin, al archivar los WAL en ambos servidores.

3. MONTAJE DE UNA SOLUCIN DE REPLICACIN BASADA EN HOT STANDBY Y


STREAMING REPLICATION PARA ENTORNOS PEQUEOS Para el montaje de la solucin de replicacin basada en Hot Standby y Streaming Replication para entornos pequeos en el pas, se debe contar con un procedimiento que explique los pasos necesarios para ello. Procedimiento para la configuracin de Hot Standby y Streaming Replication Para el montaje de una solucin de replicacin con Hot Standby y Streaming Replication se deben realizar los pasos siguientes para la correcta configuracin de los servidores PostgreSQL: (Sotolongo, 2011) - (Martnez, 2010) 1. Crear los directorios necesarios para el sistema de replicacin en ambos servidores (para el archivado de WAL en el maestro y en el esclavo y otro en el esclavo para los WAL transferidos desde el maestro). 2. Configurar el servidor maestro para que soporte la replicacin con Hot Standby y el archivado WAL. 3. Configurar el maestro para que soporte la transferencia de archivos WAL al esclavo va Streaming Replication. 4. Iniciar el servidor maestro. 5. Realizar copia de seguridad base del servidor maestro. 6. Restaurar la copia de seguridad base del servidor maestro en el esclavo.

7. 8. 9.

Configurar el esclavo para que soporte la replicacin con Hot Standby aceptando consultas de slo lectura. Activar el uso de ficheros WAL transferidos en el proceso de restauracin del servidor. Reiniciar los servidores maestro y esclavo.

Como se evidencia en el procedimiento, an la configuracin de esta solucin es un poco rebuscada, sobre todo para aquellos usuarios principiantes en las tecnologas de cdigo abierto. El grupo de desarrolladores de PostgreSQL se ha centrado en proveer la infraestructura necesaria para poder implementar y usar este tipo de replicacin, a la que en fases posteriores se le debern realizar programas/scripts para facilitar su administracin y monitorizacin. En correspondencia con esta necesidad, es que se propone el desarrollo de un script en Bash que facilite la automatizacin del procedimiento pretende que, an especialistas con pocos conocimientos de PostgreSQL y el sistema operativo, puedan montar el sistema de replicacin, garantizando la disponibilidad y proteccin de la informacin en entornos pequeos con el empleo de tecnologas de cdigo abierto. Solucin de automatizacin del montaje del sistema de replicacin La propuesta est conformada por dos scripts que automatizarn, mediante su ejecucin, el proceso de configuracin de la solucin de replicacin que ofrece PostgreSQL 9.1: - archivador_wal.sh: script creado por Rafael Martnez mediante el cual se copian los archivos WAL a archivar al directorio /usr/local/pgsql/wal_arch en el maestro y al directorio /usr/local/pgsql/wal_shipped en el esclavo. A este script se le realizaron pequeas modificaciones de localizacin de los directorios, en funcin de la instalacin realizada para las pruebas. (Martnez, 2010) - hs_sr.sh: programa que ejecuta todos los pasos definidos en el procedimiento culminando en el montaje exitoso de la solucin de replicacin con Hot Standby y Streaming Replication. Requerimientos para la ejecucin del script de configuracin Hot Standby y Streaming Replication Para la correcta ejecucin del script hs_sr.sh se deben cumplir los siguientes requerimientos: 1. Tener instalado en ambos servidores (maestro y esclavo) el sistema Linux de forma idntica. La solucin fue probada en Ubuntu 10.10. 2. Estar disponibles y conectados a la red ambos servidores, garantizando que puedan comunicarse. 3. Tener instalado PostgreSQL 9.1 en ambos servidores con los clsteres inicializados y los servicios detenidos. La solucin fue probada en PostgreSQL 9.1.1. 4. Copiar el script archivador_wal.sh en el directorio /usr/local/pgsql/bin/ del servidor maestro. 5. Editar en los script hs_sr.sh y archivador_wal.sh los IP de los servidores maestro y esclavo y, cualquier otro parmetro que deba ser actualizado acorde a las caractersticas y configuraciones de los servidores en los que se montar la solucin. 6. Tener instalado el paquete ssh en ambos servidores. 7. Configurar el acceso mediante llaves SSH entre el maestro y el esclavo, para ello se debe: a. Generar las claves pblicas y privadas entre el servidor maestro y el esclavo: una vez logueados como postgres en ambos utilizar el comando ssh-keygen -t rsa. b. Crear el fichero authorized_keys en el directorio home del usuario postgres en el servidor esclavo con el contenido de la llave pblica del servidor maestro: logueados como root utilizar el comando scp /var/lib/pgsql/.ssh/id_rsa.pub ipservidoresclavo:/var/lib/pgsql/.ssh/authorized_keys. c. Crear el fichero authorized_keys en el directorio home del usuario postgres en el maestro con el contenido de la llave pblica del servidor esclavo: logueados como root utilizar el comando scp /var/lib/pgsql/.ssh/id_rsa.pub ipservidormaestro:/var/lib/pgsql/.ssh/authorized_keys. 8. Antes de ejecutar el script hs_sr.sh establecer a postgres como el propietario del directorio de instalacin del gestor y sus subdirectorios: logueados como root utilizar el comando chown -R postgres.postgres /usr/local/pgsql.

9.

Ejecutar el script hs_sr.sh con el usuario postgres: se puede emplear el comando source /directorio/ubicacin/hs_sr.sh.

Descripcin de las funciones definidas en el script hs_sr.sh La tabla 1 muestra la descripcin de las funciones definidas en el script con su respectiva explicacin, para un mayor entendimiento del mismo y que pueda ser adaptado al entorno de cada especialista. Tabla 1: Funciones definidas en el script hs_sr.sh Funcin crear_directorios () Descripcin Funcin para la creacin de los directorios necesarios para el sistema de replicacin y el otorgamiento de los permisos a postgres de los mismos; crendose: - Un directorio wal_arch para archivar los WAL del maestro. - Un directorio wal_arch para archivar los WAL del esclavo. - Un directorio wal_shipped para transferir los WAL del maestro al esclavo. - Los comandos especificados en la clusula ELSE de este y todos los comandos del script son en caso de errores, los que automticamente abortan la ejecucin del resto del script Funcin para la configuracin del maestro de forma que soporte la replicacin con Hot Standby; modificndose en el postgresql.conf los parmetros: - wal_level = hot_standby - archive_mode = on - archive_command = '/usr/local/pgsql/bin/archivador_wal.sh -P %p -F %f' - max_wal_senders = 1 - wal_keep_segments = 10 - hot_standby = on - max_standby_archive_delay = 120s - max_standby_streaming_delay = 120s Funcin para la configuracin del maestro para que soporte la transferencia de archivos WAL al esclavo va Streaming Replication, mediante la adicin de la entrada: - Host replication all $SERVIDOR_ESCLAVO trust Especificando el IP del esclavo al pg_hba.conf Funcin para iniciar el servicio postgresql en el servidor maestro mediante el pg_ctl, que hasta el momento no haba sido iniciado Funcin para obtener el respaldo base del servidor maestro mediante: - pg_start_backup(etiqueta) que inicia la creacin del respaldo - tar que compacta el directorio DATA - pg_stop_backup() que detiene la creacin del respaldo Funcin para restaurar el respaldo obtenido del servidor maestro en el esclavo; para lo que: - Se copia el respaldo base del maestro al esclavo - Se elimina el directorio DATA del esclavo - Se descompacta el respaldo base del maestro en el directorio pgsql del esclavo, el cual sustituye al recin eliminado directorio DATA Funcin para activar en el esclavo el soporte a la replicacin con Hot Standby aceptando consultas de slo lectura, para ello se debe modificar en el postgresql.conf del servidor esclavo el parmetro hot_stanby = on Funcin para activar el uso de los WAL transferidos desde el maestro al esclavo y en caso de fallas restaurar el ltimo; para ello: - Se realiza una copia del fichero recovery.conf.sample ubicado en el directorio SHARE para el DATA - Se edita en el nuevo recovery.conf los parmetros standby_mode = on, primary_conninfo = 'host=$SERVIDOR_MAESTRO port=5432 user=postgres',

soportar_replica cion()

soportar_transfer encia_wal()

iniciar_maestro( ) obtener_respald o_base() restaurar_respal do_base()

soportar_rep_esc lavo() activar_uso_wal _transferidos()

reiniciar_servido res()

trigger_file = '/usr/local/pgsql/data/pg_failover_trigger' y restore_command = 'cp /usr/local/pgsql/wal_shipped/%f %p' - Se le otorgan a postgres los privilegios sobre el directorio PGSQL y DATA Funcin para reiniciar ambos servidores con pg_ctl en funcin de que los cambios realizados a los ficheros de configuracin tengan efecto

Ejecucin y resultados del script hs_sr.sh Una vez satisfechos todos los requerimientos, se ejecut el script hs_sr.sh. Las figuras siguientes evidencian su correcta ejecucin y con ella la configuracin del sistema de replicacin de PostgreSQL 9.1 con Hot Standby y Streaming Replication.

Fig. 3: Ejecucin de hs_sr.sh en el maestro

Fig. 6: Esclavo sin acciones en el maestro

Fig.4: Culminada la ejecucin de hs_sr.sh

Fig. 7: Bases de datos en el maestro

Fig. 5: Listado de bases de datos existentes en el maestro sin haber realizado ninguna accin

Fig. 8: Bases de datos en el esclavo, replicada la base de datos probando_replicacion

Fig. 9: Propiedades de la recin creada tabla tb_persona en probando_replicacion en el maestro

Fig. 10: Propiedades de la tabla tb_persona en probando_replicacion replicada al servidor esclavo

Como muestran las figuras anteriores, en todo momento los servidores estn sincronizados, teniendo la recin creada base de datos probando_replicacion y las mismas propiedades la recin creada tabla tb_persona en la base de datos probando_replicacion en ambos sitios. Posibles errores con la ejecucin del script hs_sr.sh Durante las pruebas de ejecucin del script se detectaron algunas deficiencias que no pudieron ser resueltas debido a que no fueron encontradas las causas que las ocasionaban, ellas son: - Una vez ejecutado el script por primera vez puede generarse el error: ERROR WAL level not sufficient for making an online backup HINT: wal_level must be set to archive or hot_standby at server start. El cual no debera generarse ya que la funcin soportar_replicacion() se encarga precisamente de cambiar el valor de wal_level a hot_standby. Volviendo a loguearse como postgres y ejecutando nuevamente el script culmina la configuracin del sistema de replicacin exitosamente. - Una vez ejecutado correctamente el script y realizadas acciones en el servidor maestro, puede que consultndose el esclavo no se reflejen los cambios. Reiniciando el servidor esclavo se reflejarn automticamente. Proyecciones inmediatas An cuando se logre la sincronizacin entre ambos sitios y por ende, la proteccin de la informacin, se debe: - Continuar mejorando el script hs_sr.sh con vistas a ofrecer una solucin ms robusta que valide los posibles errores o fallos que se produzcan cuando el sistema est en explotacin y, que realice un correcto tratamiento de estos errores. - Agregar al script hs_sr.sh tareas de mantenimiento para limpiar los directorios donde se archivan los ficheros WAL en el servidor maestro y donde se transfieren los ficheros WAL en el servidor esclavo. - Aadir al script hs_sr.sh el procedimiento para la activacin automtica del servidor esclavo como el maestro en caso de fallo del servidor maestro en uso. - Aadir al script hs_sr.sh tareas de monitorizacin del estado de la replicacin para saber el retraso del servidor esclavo en relacin al maestro. - Aadir al script hs_sr.sh la compatibilidad con el mtodo de encriptacin md5. - Aadir al script hs_sr.sh validaciones de los comandos sed que verifiquen las sustituciones exitosas o no de los mismos.

4. CONCLUSIONES

10

La solucin de replicacin con Hot Standby y Streaming Replication de PostgreSQL 9.1 permite la instauracin de un sistema de replicacin asncrono maestro-esclavo que garantiza la disponibilidad y proteccin de la informacin en entornos pequeos. Su configuracin an es un poco rebuscada, sobre todo para aquellos usuarios principiantes en las tecnologas de cdigo abierto, razn por la que la propuesta del presente trabajo fue el desarrollo de un script en Bash que facilite la automatizacin de dicho proceso para que, an especialistas con pocos conocimientos de PostgreSQL y el sistema operativo, puedan montar el sistema de replicacin. Como resultado del trabajo se arriban a las siguientes conclusiones: - Las tcnicas fundamentales que implementa PostgreSQL para garantizar la disponibilidad y proteccin de la informacin son: la comparticin de disco ante fallas, replicacin del sistema de archivos, Warm Standby y Hot Standby usando PITR, replicacin basada en triggers de maestro a esclavo, replicacin con una capa media basada en sentencias, replicacin asncrona y replicacin sncrona multimaestro. - La solucin que est ms acorde a las necesidades de los entornos pequeos del pas es la asncrona, en la que fundamentalmente no se requiere hardware especial. - Hot Standby y Streaming Replication son dos caractersticas de PostgreSQL, que combinadas implementan en el ncleo del gestor lo necesario para instalar un sistema de replicacin asncrono maestro-esclavo robusto, en el que los nodos esclavos se pueden utilizar para realizar consultas de slo lectura. La propuesta est conformada por dos scripts bash que automatizan el proceso de configuracin de la solucin de replicacin que ofrece PostgreSQL 9.1 con Hot Standby y Streaming Replication: (1) archivador_wal.sh y (2) hs_sr.sh; garantizndose el montaje de una solucin con PostgreSQL 9.1 para lograr la alta disponibilidad y proteccin de la informacin en entornos pequeos. Impacto social La utilizacin de esta solucin en las empresas y organismos cubanos: - Garantiza la alta disponibilidad de la informacin en pequeas empresas, sin necesidad de invertir en recursos de hardware y software. - Facilita el proceso de configuracin de la solucin de replicacin con tecnologas de bases de datos de cdigo abierto. - Disminuye las posibilidades de congestin de los servidores de bases de datos de las empresas al balancear la carga de las peticiones. - Favorece la proteccin de la informacin al tener un respaldo el servidor de bases de datos de las empresas. Adems, su empleo constituye un paso de avance significativo en el proceso de migracin al software de cdigo abierto que lleva a cabo el pas. Impacto econmico El empleo de esta solucin en lugar de soluciones propietarias garantizara el ahorro en el pago de licencias de uso y soporte.

REFERENCIAS 1. AKREN, Ken. 2011. Software greenhouse. Alta disponibilidad de sistemas: una definicin. [En lnea] 2011. [Citado el: 26 de julio de 2011.] http://www.swgreenhouse.com/Productos/Vision/DefHighAval.html. CASTILLO MARTNEZ, Gilberto. 2010. Capacitacin de uso y administracin de PostgreSQL. La Habana : s.n., 2010. Conferencia impartida en el I Taller Temtico del MIC: Formacin para la migracin a Estndares Abiertos. CORPORACIN-SYBVEN. 2011. Corporacin Sybven. Integracin Tecnolgica. Replicacin de datos. [En lnea] 2011. [Citado el: 26 de julio de 2011.]

2.

3.

11

http://www.corporacionsybven.com/portal/index.php?option=com_content&view=article&id=38 4:replicacion-de-datos&catid=124:conceptos-teoricos. 4. GARCA BARTELT, Mercedes. 2006. LaNacin.com. Prdidas millonarias por cadas de sistemas. [En lnea] 11 de octubre de 2006. [Citado el: 27 de julio de 2011.] http://www.lanacion.com.ar/848427-perdidas-millonarias-por-la-caida-de-sistemas. 5. MARTNEZ, Rafael. 2010. PostgreSQL-es. Hot standby y Streaming replication. [En lnea] 29 de junio de 2010. [Citado el: 18 de octubre de 2011.] http://www.postgresql.org.es/node/483. 6. PGDG. 2011. PostgreSQL 9.0.4 Documentation. Berkeley, California : s.n., 2011. Disponible en http://www.postgresql.org/docs/. 7. POSTGRESQL.ORG. 2011. PostgreSQL. About. [En lnea] 2011. [Citado el: 26 de julio de 2011.] http://www.postgresql.org/about/. 8. POSTGRESQL.ORG-1. 2011. PostgreSQL. PostgreSQL 9.1.1 Documentation. [En lnea] 2011. [Citado el: 26 de octubre de 2011.] Chapter 25.1: Comparison of different solutions. http://www.postgresql.org/docs/9.1/static/different-replication-solutions.html. 9. SOTOLONGO LEN, Anthony Rafael. 2011. Comunidad Tcnica Cubana de PostgreSQL. Documentacin. [En lnea] 2011. [Citado el: 12 de septiembre de 2011.] http://postgresql.uci.cu/node/46. 10. VAZQUEZ ORTZ, Yudisney. 2011. Estrategia para la obtencin de un gestor de bases de datos cubano. Universidad de las Ciencias Informticas, La Habana, 2011. 80 pginas.

SOBRE LOS AUTORES Yudisney Vazquez Ortz trabaja en el Centro de Tecnologas de Gestin de datos de la Facultad 6, en la Universidad de las Ciencias Informticas. Se desempea como profesora en el Departamento de PostgreSQL del Centro. Tiene una categora docente de Instructor y cientfica de Mster en Gestin de Proyectos Informticos. Es una de las fundadoras de la Comunidad Tcnica Cubana de PostgreSQL, en la que ha trabajado desde el 2009. Lisleydi Mier Pierre es estudiante de la facultad 4 de la Universidad de las Ciencias Informticas.

12