En este articulo se abordará la replicación en PostgreSQL 8.4, el objetivo es mostrar las capacidades de replicación de este Sistema Gestor de Bases de Datos auxiliándose de herramientas extras, tales como lo es Slony.
SOBRE POSTGRESQL
PostgreSQL es una potente herramienta de gestión de bases de datos relacional y orientada a objetos (SGBDOO en sus siglas en ingles). PostgreSQL se distribuye bajo licencia BSD (Berkeley Software Distribution). Es una licencia de software libre permisiva, lo que permite su uso, redistribución, modificación con la única restricción de mantener el copyright del software a sus autores.
SOBRE LA REPLICACIÓN
La replicación es una técnica que se basa en copiar y mantener objetos de una o mas bases de datos en múltiples ubicaciones y de esa manera poder tener respaldo de los datos en todo momento.
La replicación es una buena alternativa para tener disponibilidad de información cuando un servidor se cae. La replicación no suplanta los backup’s, sino, simplemente garantiza la operatividad.
SOBRE SLONY-I
Slony-I es un sistema de replicación asíncrono para PostgreSQL de una base de datos maestra hacia múltiples bases de datos hijas.
CASO PRACTICO DE REPLICACION
A continuación se presenta una descripción general de la demostración practica realizada:
Sistema operativo: windows 7
base de datos a replicar:
tipo de replicación: maestro/esclavo
Herramientas a utilizar: GestorPostgreSQL 8.4, Pgadmin III, Slony-I
El detalle completo y paso a paso del caso practico de replicación a si como la información de las herramientas utilizadas se muestran en el siguiente documento y video en donde se muestra la implementación de dicha replicación.
Libro que contiene una serie de practicas de laboratorio, talleres y preguntas, para ser empleado como apoyo practico en un curso de estructuras de datos y de fundamentos de datos, aborda arreglos, pilas, colas, serializacion, modelo entidad relacion, ado conectado, ado desconectado, archivos, etc.
un aporte formal al conocimiento.
Formato electronico en PDF
Impreso a Demanda en papel (paises disponibles para envio)
Oracle Streams propaga y administra 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.
Bien a continuación les dejo un paso a paso un tanto "extenso" para
montar el Oracle Streams:
Requisitos:
En nuestro caso utilizamos 2 computadoras de 4GB de RAM, procesador i3, 500GB
de disco duro.
A continuación se observa un video que muestra la configuración con Oracle Streams de 2 máquinas (origen y destino) , y paramás detalle debajo del video se muestran los pasos a seguir textualmente .
Nombres del SID y TNS name:
orclp, ORCLP (Origen)
orcls, ORCLS (Destino)
Debemos configurar ambos parámetros en cada base de datos (ORCLP, ORCLS):
1. Habilitamos el modo ARCHIVELOG en
ambas bases de datos:
DB Origen: orclp
SQL> connect sys/sys as sysdba
Connected.
SQL> shutdown
immediate
SQL> startup mount;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE ARCHIVE LOG
START
2. Creamos un usuario administrador para
el Stream
DB Origen: orclp
SQL> connect sys/sys as sysdba
Connected.
SQL> create user strmadmin identified by oracle;
User created.
SQL> grant connect, resource, dba
to strmadmin;
Grant
succeeded.
SQL> grant execute on dbms_aqadm to
strmadmin;
Grant succeeded.
SQL>grant execute on
dms_capture_adm to strmadmin;
Grant succeeded.
SQL>grant execute on dbms_propagation_adm to strmadmin;
Grant succeeded.
SQL>grant execute on dms_streams_adm to strmadmin;
Grant succeeded.
SQL>grant execute on dms_apply_adm to strmadmin;
Grant succeeded.
SQL>grant execute on dms_flashback to strmadmin;
Grant succeeded.
SQL> begin
dbms_streams_auth.grant_admin_privilege
2 (grantee => 'strmadmin',
3 grant_privileges => true);
4 end;
5 /
PL/SQL procedure successfully completed.
SQL> grant select_catalog_role,
select any dictionary to strmadmin;
Grant succeeded.
2.1 Ahora realizamos las mismas
operaciones en la base de datos destino: orcls
SQL> conn sys/sys as sysdba
Connected.
SQL> create user
strmadmin identified by oracle;
User created.
SQL> grant connect, resource, dba
to strmadmin;
Grant succeeded.
SQL> grant execute on dbms_aqadm to strmadmin;
Grant succeeded.
SQL>grant execute on
dms_capture_adm to strmadmin;
Grant succeeded.
SQL>grant execute on
dbms_propagation_adm to strmadmin;
Grant succeeded.
SQL>grant execute on dms_streams_adm to strmadmin;
Grant succeeded.
SQL>grant execute on dms_apply_adm to strmadmin;
Grant succeeded.
SQL>grant execute on dms_flashback to strmadmin;
Grant succeeded.
SQL> begin
dbms_streams_auth.grant_admin_privilege
2 (grantee => 'strmadmin',
3 grant_privileges => true);
4 end;
5 /
PL/SQL procedure successfully completed.
SQL> grant select_catalog_role,
select any dictionary to strmadmin;
Grant succeeded.
3. Ahora deberemos configurar el fichero
INIT.ORA con los siguientes parámetros:
DB Origen: orclp
SQL> conn sys/sys as sysdba
Connected.
SQL> alter system
set global_names=true;
System altered.
SQL> alter system set
streams_pool_size = 100 m;
System altered.
DB destino: orcls
SQL> conn sys/sys as sysdba
Connected.
SQL> alter system
set global_names=true;
System altered.
SQL> alter system set
streams_pool_size = 100 m;
System altered.
4. Ahora crearemos el enlace en cada
base de datos apuntando a la otra:
DB Origen: orclp
SQL> connect strmadmin/oracle@orclp
Connected.
SQL> create
database link ORCLS
2 connect to strmadmin
3 identified by oracle
4 using 'orcls';
Database link created.
DB Destino: orcls
SQL> connect strmadmin/oracle@orcls
Connected.
SQL> create database link ORCLP
2 connect to strmadmin
3 identified by oracle
4 using 'orclp';
Database link created.
5. Configuramos el origen y el destino
de las consultas:
DB origen: orclp
SQL> connect strmadmin/oracle@orclp
Connected.
SQL> EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
PL/SQL procedure successfully completed.
DB Destino: orcls
SQL> conn strmadmin/oracle@orcls
Connected.
SQL> EXEC
DBMS_STREAMS_ADM.SET_UP_QUEUE();
PL/SQL procedure successfully completed.
6. Configuramos el
esquema para los streams:
Esquema: SCOTT
Table: tablastream
NOTA: El esquema scott viene bloqueado en las
versiones 10g asi que deberemos desbloquearlos:
DB Origen: orclp
SQL> connect sys/sys as sysdba
Connected.
SQL> alter user
scott account unlock identified by oracle;
User altered.
SQL> connect scott/oracle@orclp
Connected.
SQL> create table tablastream ( no number primary key,name varchar2(20),ddate
date);
Table created.
DB Destino: orcls
SQL> connect sys/sys as sysdba
Connected.
SQL> alter user scott account
unlock identified by oracle;
User altered.
SQL> connect scott/oracle@orcls
Connected.
SQL> create table tablastream ( no number primary key,name varchar2(20),ddate
date);
Table created.
7. Creamos un acceso
suplementario en la base de datos origen:
DB Origen: orclp
SQL> connect scott/oracle@orclp
Connected.
SQL> alter table tablastream
2 add supplemental log data (primary key,unique) columns;
Table altered.
8. Configuramos el
proceso de captura en la base de datos origen:
DB Origen: orclp
SQL> connect strmadmin/oracle@orclp
Connected.
SQL> begin dbms_streams_adm.add_table_rules
2 ( table_name => 'scott.tablastream',
3 streams_type => 'capture',
4 streams_name => 'capture_stream',
5 queue_name=> 'strmadmin.streams_queue',
6 include_dml => true,
7 include_ddl => true,
8 inclusion_rule => true);
9 end;
10 /
PL/SQL procedure successfully completed.
9. Configuramos el
proceso de propagación:
DB Origen: orclp
SQL> connect strmadmin/oracle@orclp
Connected.
SQL> begin
dbms_streams_adm.add_table_propagation_rules