postgresql Replicación en PostgreSQL


Ejemplo

  • 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 utilidad pg_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í.