Mantenimiento de la Base de Datos



5. WAL

En Postrgresql, los Redo Logs son conocidos como WAL (“WriteAheadLogs”) y tiene como propósito el garantizar la integridad de los datos del sistema de gestión de base de datos, el cuál debe escribir los cambios en algún tipo de almacenamiento estable. Estos ficheros tienen un nombre único y un tamaño por defecto de 16MB y se generan en el subdirectorio pg_xlog que se encuentra en el directorio de datos ($PGDATA) usado por PostgreSQL. El número de ficheros WAL contenidos en pg_xlogdependerá del valor asignado al parámetro checkpoint_segments en el fichero de configuración postgresql.conf.

Esta funcionalidad nos permite transferir asincrónicamente registros WAL sobre la marcha (record-based log shipping) entre un servidor maestro y uno/varios esclavos. SR se configura mediante los parámetros primary_conninfo en el fichero recovery.conf y max_wal_senders, wal_sender_delay y wal_keep_segments en postgresql.conf.

Beneficios:

a)Número significativamente menor de escrituras en disco.
b)El archivo de registro se escribe secuencialmente, y por lo que el costo de la sincronización del registro es mucho menor que el costo de lavado de las páginas de datos.
c)El siguiente beneficio es la consistencia de las páginas de datos. La verdad es que, antes de WAL , PostgreSQL nunca fue capaz de garantizar la coherencia en el caso de un accidente.

Las tareas que tendremos que implementar/realizar serán:

a)Limpiar el directorio donde se archivan los ficheros WAL en el servidor maestro, borrando los ficheros WAL antiguos que no se necesiten.
b)Limpiar el directorio a donde se transfieren los ficheros WAL en el servidor esclavo, borrando los ficheros WAL antiguos que no se necesiten.
c)Activar automáticamente el servidor esclavo como nuevo servidor maestro en caso de fallo del servidor maestro en uso.
d)Monitorizar el estado de la replicación para saber el retraso del servidor esclavo en relación al maestro.
e)Estas tareas las trataremos en próximos artículos. En el momento de escribir este artículo, y como ya hemos dicho, la versión 9.0 está todavía en fase beta y aun quedan algunos detalles por pulir. Además se están preparando por la comunidad algunos programas que ayudarán a la implementación de algunas de estas tareas de mantenimiento.