División Política Administrativa Ecuador 2013 (DPA)

Adjunto los scripts de creación de tres tablas para MySQL y PostgreSQL para generar la división política administrativa del Ecuador en su versión del 2013.

Las tablas no contienen restricciones ni validaciones, eso se tiene que agregar en base a las necesidades de programación.

Si se quiere hacer el uso de claves subrogadas se tiene que crear las tablas con la llave subrogada vacías y realizar inserciones en base a joins entre las tablas propuestas.

DPA Ecuador MySQL
DPA Ecuador PostgreSQL

PostgreSQL replicación

PostgreSQL permite la replicación con esclavos abiertos para consulta, esta replicación se realiza como en otras bases de datos con la transferencia del log de transacciones a un servidor remoto. Para realizar esta configuración utilizaremos PostgreSQL 9.3 instalado desde sus repositorios de yum .

Para este entorno asumimos que tenemos una base de datos maestro en el host “master” con el ip 192.168.0.10, y un host esclavo llamado “slave” en el ip 192.168.0.11.

Como primer paso creamos un usuario de replicación en el maestro.

psql -c "CREATE USER replicator REPLICATION LOGIN ENCRYPTED PASSWORD 'passwd';"

En la base de datos maestro cambiamos los valores por defecto de los siguientes parámetros en el archivo postgresql.conf, será necesario crear el directorio /var/lib/pgsql/9.3/backup/archive/ para los archivos que genere WAL.

listen_addresses = '*'
wal_level = hot_standby
checkpoint_segments=8
archive_mode=on
archive_command=' test ! -f /var/lib/pgsql/9.3/backup/archive/%f && cp %p /var/lib/pgsql/9.3/backup/archive/%f '
max_wal_senders = 3
wal_keep_segments = 8

luego en pg_hba.conf agregamos una línea para que el host esclavo se pueda conectar al master remotamente.

host replication replicator 192.168.0.79/24 md5

Finalmente reiniciamos la base de datos para que todos los cambios sean tomados en cuenta por el motor.

Para crear la base de datos esclavo inicial a partir de la cual se aplicaran los logs podemos usar el comando pg_basebackup, este utilitario se conecta remotamente a la base de datos maestro y copia en el esclavo todos los archivos necesarios. Por supuesto bajamos la base de datos en el esclavo antes de proceder para evitar errores.

pg_ctl stop
pg_basebackup -h 192.168.0.10 -D /var/lib/postgresql/9.3/data  -U replicator -v -P

En el archivo postgresql.conf del esclavo activamos la opción de hot_standby, esta clausula se ignora si hay un cambio de roles y el esclavo pasa a ser el maestro.

hot_standby = on

finalmente creamos el archivo recovery.conf en el directorio de datos de PostgreSQL del esclavo, este archivo debe contener las siguientes directivas:

standby_mode='on'
primary_conninfo = 'host=192.168.0.10 port=5432 user=replicator password=passwd'
trigger_file= '/tmp/postgresql.trigger'

levantamos la base de datos en el esclavo y comprobamos el estado de la la replicación en el maestro con la siguiente consulta:

select * from pg_stat_replication;

Y eso es todo, espero que sea de utilidad.