Los servidores de bases de datos pueden
trabajar en conjunto. De esta manera, en caso de que un servidor falle, otro servidor puede tomar su lugar inmediatamente. Y así se
asegura la alta disponibilidad de la información.
Por otro lado, también es posible
preparar muchos servidores para que atiendan todas las peticiones entrantes dividiendo la carga entre ellos. Esta operación es sencilla cuando el trabajo requerido es de sólo lectura.
Pero cuando necesitamos hacer operaciones de escritura, el proceso comienza a complicarse. Esto pasa porque conforme nuevos datos comienzan a ser escritos en un servidor, estos tienen que ser propagados en el menor tiempo posible a todos los demás. Así, cuando se trate de consultar esta información, todos los servidores deberán ser capaces de regresar un resultado consistente. Esto es conocido como
Database Replication.
Usando archivos
Una manera común en PostgreSQL de lidiar con la consistencia de datos en un cluster de bases de datos, es mediante el envío de registros
WAL entre servidores. También conocido como
Log Shipping.
Se puede lograr alta disponibilidad de la información teniendo un servidor
primario o
maestro que esté reportando los cambios, mediante archivos de
WAL, a servidores
esclavos o
standby. Para realizar esto es recomendable que los los servidores, tanto
standby como
primario, sean lo más similares posibles y que las versiones de PostgreSQL sean las mismas.
El servidor
esclavo o
standby estará continuamente aplicando todos los cambios recibidos en los registros
WAL y el servidor
maestro o
primario estará enviando cada todos estos cambios a los
esclavos. La lectura de registros
WAL puede ser mediante archivos
WAL o leída mediante una conexión
TCP al servidor maestro (
Streaming Replication).
Para configurar el envió de archivos
WAL en un servidor
primario debe existir un directorio dentro del servidor que siempre sea accesible por los servidores
standby incluso si el
primario está abajo.
Streaming Replication
La capacidad de Streaming Replication fue añadida a PostgreSQL en la versión nueve y es aquella que hace que técnicas como
Hot Standby sean posibles.
Streaming Replication nos da la capacidad de estar enviando y aplicando cambios entre servidores de forma continua y asíncrona. Los servidores
esclavos se conectan al
primario el cuál está continuamente haciendo
streaming de registros
WAL sin necesidad de estar al pendiente de que un archivo sea llenado.
El que
StreamingReplication sea un proceso asíncrono por defecto, genera un pequeño retraso en lo que la información está guardada en el servidor
primario y lo que tarda en reflejarse en todos los
esclavos, sin embargo, este proceso sigue siendo aún más rápido que el uso de archivos.
Si deseas
aprender más sobre este y otros secretos, regístrate
hoy al curso de
PostgreSQL de Platzi y no te pierdas los artículos y tutoriales que estaremos publicando. Si te interesa algún tema en específico, no dudes en dejarlo en los comentarios.