postgresql
Alta disponibilidad de PostgreSQL
Buscar..
Replicación en PostgreSQL
Configurando el servidor primario
Requisitos:
- Usuario de replicación para actividades de replicación
- Directorio para almacenar los archivos WAL
Crear usuario de replicación
createuser -U postgres replication -P -c 5 --replication
+ option -P will prompt you for new password + option -c is for maximum connections. 5 connections are enough for replication + -replication will grant replication privileges to the user
Crear un directorio de archivos en el directorio de datos.
mkdir $PGDATA/archive
Edita el archivo pg_hba.conf
Este es el archivo de autenticación de la base de host, contiene la configuración para la autenticación automática del cliente. Añadir a continuación la entrada:
#hosttype database_name user_name hostname/IP method host replication replication <slave-IP>/32 md5
Edita el archivo postgresql.conf
Este es el archivo de configuración de PostgreSQL.
wal_level = hot_standby
Este parámetro decide el comportamiento del servidor esclavo.
`hot_standby` logs what is required to accept read only queries on slave server. `streaming` logs what is required to just apply the WAL's on slave. `archive` which logs what is required for archiving.
archive_mode=on
Este parámetro permite enviar segmentos WAL a la ubicación de archivo utilizando el parámetro
archive_command
.archive_command = 'test ! -f /path/to/archivedir/%f && cp %p /path/to/archivedir/%f'
Básicamente, lo que hace arriba en
archive_command
es que copia los segmentos de WAL al directorio de archivo.wal_senders = 5
Este es el número máximo de procesos de remitente WAL.Ahora reinicie el servidor primario.
Copia de seguridad del servidor primay al servidor esclavo
Antes de hacer cambios en el servidor, detenga el servidor primario.
Importante: no vuelva a iniciar el servicio hasta que todos los pasos de configuración y copia de seguridad estén completos. Debe activar el servidor en espera en un estado en el que esté listo para ser un servidor de respaldo. Esto significa que todos los ajustes de configuración deben estar en su lugar y las bases de datos ya deben estar sincronizadas. De lo contrario, la replicación de secuencias no se iniciará
Ahora ejecuta la utilidad pg_basebackup
pg_basebackup
utilidadpg_basebackup
copia los datos del directorio de datos del servidor primario al directorio de datos esclavos.$ pg_basebackup -h <primary IP> -D /var/lib/postgresql/<version>/main -U replication -v -P --xlog-method=stream
-D: This is tells pg_basebackup where to the initial backup
-h: Specifies the system where to look for the primary server
-xlog-method=stream: This will force the pg_basebackup to open another connection and stream enough xlog while backup is running.
It also ensures that fresh backup can be started without failing back to using an archive.
Configurando el servidor standby
Para configurar el servidor en espera, editará postgresql.conf y creará un nuevo archivo de configuración llamado recovery.conf.
hot_standby = on
Esto especifica si se le permite ejecutar consultas mientras se recupera
Creando el archivo recovery.conf
standby_mode = on
Establezca la cadena de conexión al servidor primario. Reemplace con la dirección IP externa del servidor primario. Reemplazar con la contraseña para el usuario llamado replicación
`primary_conninfo = 'host = puerto = 5432 usuario = contraseña de replicación ='
(Opcional) Establezca la ubicación del archivo disparador:
trigger_file = '/tmp/postgresql.trigger.5432'
La ruta del
trigger_file
que especifique es la ubicación donde puede agregar un archivo cuando desee que el sistema realice una conmutación por error al servidor en espera. La presencia del archivo "activa" la conmutación por error. Alternativamente, puede usar el comando pg_ctl Promote para activar la conmutación por error.
Iniciar el servidor en espera
Ahora tiene todo en su lugar y está listo para activar el servidor en espera
Atribución
Este artículo se deriva sustancialmente de y se atribuye a Cómo configurar PostgreSQL para alta disponibilidad y replicación con Hot Standby , con pequeños cambios en el formato y ejemplos y algunos textos eliminados. La fuente se publicó bajo la licencia pública de Creative Commons 3.0 , que se mantiene aquí.