[go: up one dir, main page]

0% encontró este documento útil (0 votos)
317 vistas34 páginas

Replicación PostgreSQL

Este documento describe cómo instalar y configurar la replicación de bases de datos PostgreSQL y MySQL en Windows y Ubuntu. Explica cómo instalar PostgreSQL y MySQL en ambas plataformas, y luego implementa la replicación maestro-maestro homogénea de PostgreSQL en Windows usando la herramienta Rubyrep debido a su configuración simple e independencia de plataforma. También cubre la replicación heterogénea de PostgreSQL y MySQL en Ubuntu usando Rubyrep.

Cargado por

Anthrax Hvs
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
317 vistas34 páginas

Replicación PostgreSQL

Este documento describe cómo instalar y configurar la replicación de bases de datos PostgreSQL y MySQL en Windows y Ubuntu. Explica cómo instalar PostgreSQL y MySQL en ambas plataformas, y luego implementa la replicación maestro-maestro homogénea de PostgreSQL en Windows usando la herramienta Rubyrep debido a su configuración simple e independencia de plataforma. También cubre la replicación heterogénea de PostgreSQL y MySQL en Ubuntu usando Rubyrep.

Cargado por

Anthrax Hvs
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 34

SEDE REGIONAL CHOROTEGA, CAMPUS NICOYA

CARRERA: Ingeniería en Sistemas de Información


CURSO: Administración de Base de Datos
PROFESOR: José A. Jiménez Torrentes
SEMESTRE: II Ciclo 2010

Tema:

Replicación Base de Datos PostgreSQL

Presentado por:

Participación
Nombre Carné
(%)

1° Apellido 2° Apellido Nombres #####

Fernández Mora Gabriel 5 0374 0124 33.3

Pérez Meza Raymond 7 0193 0792 33.3

Vargas Ramírez Walter 5 0371 0262 33.3

Diciembre 01, 2010

Nicoya, Guanacaste, Costa Rica


Tabla de Contenido
Introducción .................................................................................................................................3

Manual de instalación de PostgreSQL en Windows .....................................................................4

Manual de instalación de MYSQL ...........................................................................................11


Instalación de PostgreSQL en Ubuntu 10.04 ..............................................................................16

Instalación de MySQL en Ubuntu 10.04 .....................................................................................18

Implementación de replicación de Bases de Datos en Windows ...............................................20

Replicación Homogénea con PostgreSQL ...............................................................................20


Replicación Heterogénea con PostgreSQL..............................................................................27
Implementación de replicación de Bases de Datos en Ubuntu ..................................................29

Configuraciones previas para la replicación en Ubuntu .........................................................29


Replicación Maestro – Maestro Homogénea .........................................................................30
Replicación Heterogénea, PostgreSQL y MySQL con Rubyrep...............................................32
Referencias.................................................................................................................................34
Introducción

En el presente documento se mostrará cómo se hace la replicación de base de datos


PostgreSQL tanto homogénea como heterogéneamente de las siguientes formas:

- Maestro – Maestro
- Maestro –Esclavo

Ambos tipos de replicación en plataforma Windows así como también en plataforma


Linux (Ubuntu).

Como parte inicial se mostrarán las instalaciones de los gestores necesarios, en este caso
PostgreSQL y MySQL en Windows así como en Ubuntu, y como segunda parte las
configuraciones necesarias para la replicación.
Manual de instalación de PostgreSQL en Windows

En esta pantalla nos pide el idioma con el que deseamos trabajar

Acá pulsamos el botón siguiente, para continuar con la instalación


Se nos muestran algunas características que se tendrá con la siguiente instalación

Marcamos cada una de las opciones para configurar el PostgreSQL.

Acá configuramos un usuario, más una contraseña para usar el sistema gestor de bases de
datos
Continuamos con la instalación y damos click el botón siguiente

Luego nos aparece la siguiente pantalla de instalación que nos permitirá poseer una
configuración más óptima

Luego de haber dado click, en el botón siguiente, continuamos con la instalación


Luego, nos aparece, la Instalación se realizó correctamente

Luego, se nos presenta la siguiente pantalla y procedemos a dar en el botón, next

Seleccionamos las siguientes características de los paquetes y damos Next


Esperamos que asistente descargue los paquetes y los configure.

Luego nos sale la siguiente pantalla en la cual damos next.

Nos sale esta otra pantalla que tiene que ver con el paquete que seleccionamos de JDBC por lo
que damos al botón next.
Dejamos la ruta por defecto si lo deseamos y damos next

Damos next y finalizar.

Nos aparcera esta ventana que tiene que ver con el paquete de ODBC que seleccionamos
anteriormente y damos next
Igual que la anterior si deseamos lo dejamos en la ubicación por defecto y damos next

Luego damos next , netx y nos saldra esta pantalla de finalizar, a la cual le damos click en el
botton finish.

Por último damos click en el botón finish de la instalación principal y con esto tenemos ya listo
nuestro postgres para ser usado.
Manual de instalación de MYSQL

Una vez ejecutado el instalador del MySQL server 5.5, le damos al check acepto términos de
licencia, y damos click en next.

Luego de dar next, podemos precionar el boton, instal para finalizar la instalación.

Se nos despliega la siguiente pantalla del


instalador, procedemos a dar click en el
botón next.
Luego nos aparece la siguiente pantalla, y le damos finalizar, finish

Luego se nos despliega la siguiente pantalla.

Luego nos pide el tipo de trabajo que


realizaremos
Luego de dar en el botón, next, se nos despliega la siguiente pantalla

En esta pantalla configuramos la cantidad de usuarios que pueden acceder al servidor


Acá se nos brinda el puerto por el cual MySQL se comunica atreves de la red, y poder así
conectarse desde cualquier lugar, además agregamos la acepción del firewall del Windows de
la computadora.

En este paso digitamos la contraseña para el usuario root que utilizara el MySQL
Esperamos a que realice la instalación
del software

Y listo.. ya tenemos instalada la herramienta


Instalación de PostgreSQL en Ubuntu 10.04
Pasos:

1. Abrimos el terminal de nuestro sistema


2. Nos volvemos usuario administrador o root con sudo su

3. Instalando postgres desde consola: sudo apt-get install postgresql postgresql-cliente


pgadmin3

El pgadmin es nuestro administrador grafico de postgres

4. Lo siguiente es cambiar la contraseña del usuario administrador de PostgreSQL


del Sistema: sudo passwd postgres.

Nos solicitara la contraseña la cual seremos libres al escogerla.

5. Ahora debemos cambiar la contraseña del “usuario postgres” en el motor:

1. sudo su postgres -c "psql template1"

2. Ingresamos el siguiente comando:


ALTER USER postgres WITH PASSWORD 'contraseña';
3. Una vez ejecutado, salimos con \q

6. Luego configuramos el acceso remoto a nuestro sistema:

1. modificar el archivo postgresql.conf

sudo gedit /etc/postgresql/8.4/main/postgresql.conf

2. Buscamos la línea:
#listen_addresses = 'localhost'

y la cambiamos por:
listen_addresses = '*'

También buscamos la siguiente línea:


#password_encryption = on

Y la cambiamos por:
password_encryption = on

7. Reiniciamos el servicio
Instalación de MySQL en Ubuntu 10.04
Pasos:

1. Abrimos el terminal de nuestro sistema


2. Nos volvemos usuario administrador o root con sudo su

3. Instalamos MySQL desde consola:

sudo apt-get install mysql-server mysql-client mysql-query-browser

4. Librerías de Java son necesarias en algún momento para la conexión

sudo apt-get install libmysql-java

5. Editamos el archive my.cnf de MySQL con el objetivo de permitir conexiones remotas

1. gedit /etc/mysql/my.cnf

2. Comentamos: bind-address =127.0.0.1


6. Ingresamos a MYSQL

1. Ingresamos a MySQL remotamente si lo deseamos por medio del terminal o el


administrador gráfico, en este caso lo aremos por medio del terminal con la
siguiente instrucción.
Mysql --user=nombreusuario --host=127.0.0.1 --password=xxxxx

2. Le damos permisos de acceso remoto a nuestro usuario y le especificamos en los


primeros 3 campos de la dirección ip de donde se le va a permitir el acceso y el
campo 4 le damos % con el objetivo de que sea cualquier máquina que venga de
esa dirección ip.

7. Reiniciamos el servicio de MySQL


Implementación de replicación de Bases de Datos en Windows

Replicación Homogénea con PostgreSQL


Para efectos de replicación en PostgreSQL existen muchas herramientas para lograr replicar
bases de datos, el cuadro comparativo a continuación describe las herramientas disponibles.

A nivel práctico como requerimiento para este proyecto de replicación se estableció que la
replicación debe lograrse de forma Maestro – Maestro. Por lo tanto con este cuadro podemos
identificar que son funcionales las siguientes herramientas:

1. PGCluster
2. Bucardo
3. Rubyrep

Analizando estas herramientas, se determinó que se utilizará rubyrep.

Se pueden definir entonces algunas de las características más importantes de rubyrep:

1. Configuración Simple.
2. Instalación completa se realiza a través de un archivo de configuración simple sola.
3. Instalación sencilla
4. La instalación puede hacerse ya sea a través de
* Ruby tradicional
* JRuby

4.1 En caso de JRuby esto significa:

1. La instalación de una JVM


2. Descargar y extraer de un archivo zip
3. Hecho.
5. Independiente de la plataforma
Se ejecuta en las plataformas Linux y Windows.

Algunas características de la replicación

rubyrep continuamente puede replicar los cambios entre las bases de datos de izquierda y
derecha.
a. Automáticamente crea disparadores, tablas de registro, etc necesarios.
b. Descubre automáticamente las tablas agregadas recientemente y sincroniza el
contenido de la tabla.
c. Reconfigura automáticamente secuencias de evitar la duplicación de los conflictos
clave.
d. Seguimiento de los cambios de columnas de clave principal
e. Se puede aplicar tanto maestro-esclavo y la replicación maestro-maestro
f. Precompilados métodos de resolución de conflictos disponibles: izquierda / derecha
gana, el cambio antes / después gana.
g. Las decisiones de replicación, opcionalmente, se pueden registrar en la tabla rubyrep
registro de eventos.

Replicando con rubyrep!

Como propuesta se puede presentar entonces:

 Replicación Maestro – Maestro


 Replicación Maestro – Esclavo

Ambas son realizables tanto en Windows como en ambiente Linux (Ubuntu en este caso.)

Iniciaremos con la replicación Maestro – Maestro en Windows

Replicación PostgreSQL [Maestro - Maestro]

Nota preliminar: Las base de datos a replicar ya debe existir en el nodo 2 y debe tener la
misma estructura, así como las mismas tablas y campos con iguales nombres.

1. Descargar el siguiente paquete:

http://rubyforge.org/frs/download.php/70640/rubyrep-1.1.2.zip

2. Descomprimimos el paquete, preferiblemente en C:\


3. Entramos a la carpeta donde descomprimimos, sería algo así “C:\rubyrep-1.1.2\config”
4. Copiamos el archivo postgres_config y lo pegamos en C:\ruby-rep1.1.2
5. Ahora abrimos el archivo postgres_config y lo configuramos con los parámetros
necesarios, como sigue a continuación.

# Used as component of a rubyrep config file.


# Defines connection parameters to the postgresql databases.

RR::Initializer::run do |config|

#Configuración del primer nodo.

config.left = {
:adapter => 'postgresql',
:database => 'tres', #Nombre de la base de datos a replicar
:username => 'postgres', #Nombre de usuario (por defecto postgres)
:password => 'admin', #Contraseña de usuario postgres
:host => '10.0.2.15' #Dirección ip del nodo 1.
}

#Configuración del segundo nodo.

config.right = {
:adapter => 'postgresql',
:database => 'tres', #Nombre de la base de datos a replicar
:username => 'postgres', #Nombre de usuario (por defecto postgres)
:password => 'admin', #Contraseña de usuario postgres
:host => '10.0.2.16' #Dirección ip del nodo 2.
}
config.include_tables /./ #incluimos las tablas de la bd
config.exclude_tables 'schema_migrations' #excluimos esta tabla
config.exclude_tables 'plugin_schema_info' #excluimos esta tabla

config.options[:auto_key_limit]=2

end

6. Cerramos y guardamos cambios, se debería ver así!

7. Abrimos una consola de Windows


a. Inicio -> Ejecutar
b. Escribimos cmd y presionamos enter
8. Una vez en la consola nos movemos de directorios hasta llegar a “C:\”, para esto
hacemos:
cd C:\

y presionamos enter.
9. Una vez en “C:\”, digitamos:

cd rubyrep-1.1.2

y presionamos enter.

10. Cuando estemos en “C:\rubyrep-1.1.2”, digitamos:

rubyrep replicate –c postgres_config.rb

y presionamos enter.
Esperamos el mensaje de Starting replication…

Listo! Tenemos replicación Maestro – Maestro

Nota:

Para hacer la replicación Maestro – Esclavo simplemente agregamos las siguientes


líneas al archivo postgres_config.br

config.options[:right_change_handling]=:ignore

config.options[:sync_conflict_handling]=:left_wins
Al final se debería ver así:

Listo! Tenemos replicación Maestro – Esclavo

Nota:

Antes de hacer cualquier modificación al archivo de configuración de la


replicación para hacer alguna otra prueba, se debe detener el proceso de replicación (se puede
hacer con Ctrl + C) y luego desinstalar la repliación con el siguiente comando: rubyrep uninstall
–c postgres_config.br, esperamos que desinstale la replicación y listo, ya se pueden hacer
cambios en la configuración.
Replicación Heterogénea con PostgreSQL

Con rubyrep se puede hacer una replicación heterogénea muy fácilmente, esto debido a que
rubyrep está desarrollado para trabajar con PostgreSQL y MySQL.

Configurando replicación Maestro - Maestro

Para configurar esta replicación entre PostgreSQL y MySQL hacemos lo siguiente:

Primero en el archivo de configuración postgre_config.br hacemos la siguiente modificación:

# Used as component of a rubyrep config file.


# Defines connection parameters to the postgresql databases.

RR::Initializer::run do |config|

#Configuración del primer nodo.

config.left = {
:adapter => 'postgresql',
:database => 'cuatro2', #Nombre de la base de datos a replicar
:username => 'postgres', #Nombre de usuario (por defecto postgres)
:password => 'admin', #Contraseña de usuario postgres
:host => '10.0.2.15' #Dirección ip del nodo 1.
}

#Configuración del segundo nodo.

config.right = {
:adapter => 'mysql', #Cambiamos a mysql
:database => 'cuatro2', #Nombre de la base de datos a replicar
:username => 'root', #Nombre de usuario (por defecto root en mysql)
:password => 'admin', #Contraseña de usuario root
:host => '10.0.2.16' #Dirección ip del nodo 2.
}
config.include_tables /./ #incluimos las tablas de la bd

config.options[:auto_key_limit]=2

end
Una vez editado el archivo se vería así:

Ahora nos pasamos a mysql de la máquina 2:

Lo siguiente será darle permisos al usuario root para que acceda desde otra máquina
externa, lo hacemos con el siguiente comando desde la consola de mysql.

GRANT ALL PRIVILEGES ON *.* TO root@’10.0.2.15’ identified by


‘admin’;

Con esto ya puedo ejecutar la instrucción para replicar desde la máquina con postgreSQL.

rubyrep replicate –c postgres_config.rb

y Listo!.. Replicación Heterogénea PostgreSQL y MySQL [Maestro-Maestro]

Nota:

Para hacer la replicación Maestro – Esclavo simplemente agregamos las siguientes


líneas al archivo postgres_config.br como en el caso anterior.

config.options[:right_change_handling]=:ignore

config.options[:sync_conflict_handling]=:left_wins

Listo! Tenemos replicación Maestro – Esclavo


Implementación de replicación de Bases de Datos en Ubuntu

Configuraciones previas para la replicación en Ubuntu

11. Descargar el siguiente paquete:

http://rubyforge.org/frs/download.php/70640/rubyrep-1.1.2.zip

12. Descomprimimos el paquete donde lo deseemos, en este caso lo hemos hecho en una
carpeta llamada Replicación en descargas.
13. Luego nos movemos a la carpeta donde hemos descomprimido el paquete de rubyrep:
Cd /home/administrador/Descargas/Replicacion

14. Generamos nuestros archivos de configuración con la siguiente línea:


./rubyrep-1.1.2/rubyrep generate nodo.conf

Nota Punto 4: En este caso generamos un único archivo llamado nodo.conf, la extensión de
este archivo es libre, al igual que su nombre.

15. Antes de comenzar en el archivo pg_hba.conf agregas las direcciones de las demás
maquinas con las que se comunicara nuestro postgred.
gedit /etc/postgresql/8.4/main/pg_hba.conf

Lo editamos y agregamos la dirección del tal modo que quede así:


Replicación Maestro – Maestro Homogénea

1. Editamos el archivo nodo.conf, que habíamos generado en uno de los puntos


anteriores.
1. gedit nodo.conf

Nota: recuerda que en mi caso todo lo que hemos de hacer es en la dirección de


Descargas en la carpeta Replicacion.

16. Configuramos los parámetros necesarios, como sigue a continuación.

RR::Initializer::run do |config|

#Configuración del primer nodo.

config.left = {
:adapter => 'postgresql',
:database => 'preplicacion', #Nombre de la base de datos a replicar
:username => 'postgres', #Nombre de usuario (por defecto postgres)
:password => 'lilian1904', #Contraseña de usuario postgres
:host => '172.16.61.134' #Dirección ip del nodo 1.
}

#Configuración del segundo nodo.

config.right = {
:adapter => 'postgresql',
:database => 'preplicacion', #Nombre de la base de datos a replicar
:username => 'postgres', #Nombre de usuario (por defecto postgres)
:password => 'lilian1904', #Contraseña de usuario postgres
:host => '172.16.61.132' #Dirección ip del nodo 2.
}
config.include_tables /./ #incluimos todas las tablas de la bd
config.exclude_tables 'schema_migrations' #excluimos esta tabla
config.exclude_tables 'plugin_schema_info' #excluimos esta tabla
config.options[:auto_key_limit]=2
end
17. Cerramos y guardamos cambios, se debería ver así!

18. Por último desde la mima dirección en la que nos ubicamos anteriormente,
inicializamos la replicación.
./rubyrep-1.1.2/rubyrep replicate -c nodo.conf

Esperamos un momento y recordad que no demos de cerrar la terminal, al menos que


hagamos que este proceso se ejecute en segundo plano, para no ver la terminal
abierta.

Listo tenemos replicación y podemos comenzar a hacer pruebas.

Nota:

Para hacer la replicación Maestro – Esclavo simplemente agregamos las siguientes


líneas al archivo generado en este caso al archivo nodo.conf

config.options[:right_change_handling]=:ignore

config.options[:sync_conflict_handling]=:left_wins
Replicación Heterogénea, PostgreSQL y MySQL con Rubyrep

2. Editamos el archivo nodo.conf, que habíamos generado en uno de los puntos


anteriores o como se explicó anterior mente generamos otro con distinto nombre.
2. gedit nodo.conf

Nota: recuerda que en mi caso todo lo que hemos de hacer es en la dirección de


Descargas en la carpeta Replicación.

19. Configuramos los parámetros necesarios, como sigue a continuación.

RR::Initializer::run do |config|

#Configuración del primer nodo.

config.left = {
:adapter => 'postgresql',
:database => 'preplicacion', #Nombre de la base de datos a replicar
:username => 'postgres', #Nombre de usuario (por defecto postgres)
:password => 'lilian1904', #Contraseña de usuario postgres
:host => '172.16.61.134' #Dirección ip del nodo 1.
}

#Configuración del segundo nodo.

config.right = {
:adapter => 'mysql',
:database => 'preplicacion', #Nombre de la base de datos a replicar
:username => 'root', #Nombre de usuario (por defecto MySQL)
:password => 'lilian1904', #Contraseña de usuario postgres
:host => '172.16.61.133' #Dirección ip del nodo 2.
}
config.include_tables /./ #incluimos todas las tablas de la bd
config.exclude_tables 'schema_migrations' #excluimos esta tabla
config.exclude_tables 'plugin_schema_info' #excluimos esta tabla
config.options[:auto_key_limit]=2
end

20. Cerramos y guardamos cambios, se debería ver así!


21. Por último desde la mima dirección en la que nos ubicamos anteriormente,
inicializamos la replicación.
./rubyrep-1.1.2/rubyrep replicate -c nodo.conf

Esperamos un momento y recuerda que no demos de cerrar la terminal, al menos de


que, hagamos que este proceso se ejecute en segundo plano, para no ver la terminal
abierta.

Listo tenemos replicación y podemos comenzar a hacer pruebas.

Nota:

Para hacer la replicación Maestro – Esclavo entre postgres y MySQL simplemente


agregamos las siguientes líneas al archivo generado en este caso al archivo nodo.conf

config.options[:right_change_handling]=:ignore

config.options[:sync_conflict_handling]=:left_wins
Referencias

Herramientas de replicación:
http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling

Instalar MySQL en Ubuntu:

http://www.kickbill.com/?p=1410
http://armandodiaz.wordpress.com/2008/04/06/instalar-mysql-en-ubuntu/

Permitir conexiones remotas en MySQL:

http://www.k4ch0.org/blog/2009/07/21/permitir-conexiones-remotas-a-mysql-de-manera-
grafica/
http://www.neuroticweb.com/blog/203/conexion-remota-a-mysql-en-ubuntu-debian/

Instalar PostgreSQL en Ubuntu: http://joeljil.wordpress.com/2010/07/09/postgres-ubuntu/

Rubyrep: http://www.rubyrep.org/

También podría gustarte