implementación de replicación maestro-esclavo postgresql-11 (replicación de flujo)

 

  • Introducción maestro-esclavo

    • La replicación de transmisión de PostgreSQL es asíncrona de manera predeterminada. Si el servidor primario falla, algunas de las transacciones confirmadas pueden no haberse replicado en el servidor de respaldo, lo que puede causar la pérdida de datos. La cantidad de datos perdidos es proporcional al retraso de replicación durante la conmutación por error.
    • La replicación sincrónica puede garantizar que todas las modificaciones de una transacción se puedan transmitir a uno o más servidores de respaldo sincrónicos. Esto amplía el nivel de persistencia estándar proporcionado por una confirmación de transacción. Este nivel de protección se llama replicación segura de 2 en la teoría de la informática. Cuando synchronous_commitse establece remote_write, a continuación, un (grupo- grupo-1-safe seguro y 1-safe).
    • Al solicitar la replicación síncrona, cada confirmación de una transacción de escritura esperará hasta que reciba una confirmación de que la confirmación se ha escrito en el registro de escritura anticipada en el disco tanto en el servidor primario como en el de respaldo. La única posibilidad de que se pierdan datos es que tanto el servidor primario como el servidor de respaldo se bloqueen al mismo tiempo. Esto puede proporcionar un mayor nivel de persistencia, aunque solo el administrador del sistema es responsable de la ubicación y administración de los dos servidores. Esperar la confirmación aumenta la confianza del usuario de que la modificación no se perderá, pero también aumenta innecesariamente el tiempo de respuesta a la transacción solicitada. El tiempo mínimo de espera es el tiempo de ida y vuelta entre el servidor primario y el servidor de respaldo.
    • Las transacciones de solo lectura y las reversiones de transacciones no necesitan esperar la respuesta del servidor en espera. Las confirmaciones de subtransacciones no necesitan esperar la respuesta del servidor de respaldo, solo las confirmaciones de nivel superior deben esperar. Las acciones de larga duración (como la carga de datos o la creación de índices) no esperarán al mensaje de confirmación final. Todas las acciones de presentación en dos fases requieren espera de presentación, incluida la preparación y presentación.
    • La copia de seguridad de sincronización puede ser una copia de seguridad de replicación física o un suscriptor de replicación lógica. También puede ser consumidor de cualquier otra secuencia de replicación WAL física o lógica, y sabe cómo enviar mensajes de retroalimentación apropiados. Además de la incorporada en el sistema de replicación física y lógica, que comprende otros pg_receivewaly pg_recvlogicalprocedimientos especiales y similares, así como algún sistema de copia de terceros y programas personalizados. Para obtener detalles sobre el soporte de replicación síncrona, consulte la documentación correspondiente.
  • Distribución de máquinas maestro-esclavo

    • Dirección IP Versión DB Relación maestro-esclavo
      192.168.63.134 11,6 Maestro
      192.168.63.141 11,6 De
  •  

    Instalar postgresql

    • yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm -y 
      yum install postgresql11 -y 
      yum install postgresql11-server - y

       

  • Configuración de la biblioteca principal

    • Inicialización de la biblioteca principal.

      • / usr / pgsql-11 / bin / postgresql-11-setup initdb 
        systemctl start postgresql-11

         

    • Crear usuarios de replicación para sincronización maestro-esclavo
      • Código de copia

        [root @ localhost data] # sudo -i -u postgres 
        -bash-4.2 $ psql 
        psql (11.6) 
        Ingrese "help" para obtener información de ayuda. 
        
        postgres = # crear rol repl réplica de inicio de sesión contraseña cifrada '123456'; 
        CREAR PAPEL

        Código de copia

    • Configure la biblioteca esclava para usar la cuenta repl en la biblioteca maestra
      • Código de copia

        vim /var/lib/pgsql/11/data/pg_hba.conf #Solo 
        
        necesita agregar las dos líneas siguientes, repl se usa para usuarios de respaldo, 192.168.63.0/24 detrás es la dirección IP en la 
        replicación del host del segmento de red repl 192.168.63.0/24 md5 
        host all repl 192.168.63.0/24 trust 
        
        vim /var/lib/pgsql/11/data/postgresql.conf 
        
        listen_addresses = '*' # en qué direcciones IP escuchar; 
        puerto = 5432 # (el cambio requiere reiniciar) 
        max_connections = 512 # (el cambio requiere reiniciar) 
        shared_buffers = 128MB # min 128kB 
        dynamic_shared_memory_type = posix # el valor predeterminado es la primera opción 
        wal_level = hot_standby # mínimo, réplica o lógica
        archive_mode = on # habilita el archivado; off, on o always 
        archive_command = 'cp% p / var / lib / pgsql / 11 / data / pg_archive /% f' # comando para usar para archivar un segmento de archivo de registro 
        max_wal_senders = 6 # número máximo de procesos 
        walsender wal_keep_segments = 10240 # en segmentos de archivo de registro, 16 MB cada uno; 0 deshabilita 
        wal_sender_timeout = 60s # en milisegundos; 0 deshabilita 
        log_directory = 'log' # directorio donde se escriben los archivos de registro

        Código de copia

         

      • Después de la modificación, debe crear algunas estructuras de directorio que acaba de configurar:
      • mkdir / var / lib / pgsql / 11 / data / pg_archive / 
        chown -R postgres.postgres / var / lib / pgsql / 11 / data

         

      • Reinicie el servicio de biblioteca principal.
      • systemctl restart postgresql-11

         

  • Configuración esclava

    • Una vez completada la instalación desde la biblioteca, no inicialice, si se ha inicializado, elimine su directorio de datos
    • Código de copia

      
      # Copie todos los archivos de datos del nodo maestro [root @ localhost ~] # pg_basebackup -h 192.168.63.134 -U repl -D / var / lib / pgsql / 11 / data / -X stream -P 
      contraseña: 
      25312/25312 kB (100%), 1/1 de tablas 
      [el root @ localhost ~] # LS / var / lib / pgSQL / 12 es / Data / 
      current_logfiles backup_label pg_commit_ts la pg_hba.conf pg_logical pg_notify pg_serial pg_stat pg_subtrans pg_twophase pg_wal postgresql.auto.conf conectarse 
      Base global pg_archive pg_dynshmem pg_ident.conf pg_multixact pg_replslot pg_snapshots pg_stat_tmp pg_tblspc PG_VERSION pg_xact postgresql.conf

      Código de copia

       

    • Desde el archivo de configuración de la biblioteca, modifique de acuerdo con la siguiente configuración.

      Código de copia

      [root @ localhost ~] # vim /var/lib/pgsql/11/data/postgresql.conf 
      listen_addresses = '*' # en qué direcciones IP escuchar; 
      puerto = 5432 # (el cambio requiere reiniciar) 
      max_connections = 1000 # (el cambio requiere reiniciar) 
      shared_buffers = 128MB # min 128kB 
      dynamic_shared_memory_type = posix # la opción predeterminada es la primera opción 
      wal_level = replica # mínimo, réplica o 
      archivo_modo lógico = on # habilita el archivo ; off, on o always 
      archive_command = 'cp% p / var / lib / pgsql / 12 / data / pg_archive /% f' # comando para usar para archivar un segmento de archivo de registro  
      wal_sender_timeout = 60s # en milisegundos; 0 deshabilita
      hot_standby = on # "on" permite consultas durante la recuperación 
      max_standby_streaming_delay = 30s # retraso máximo antes de cancelar consultas 
      wal_receiver_status_interval = 10s # envía respuestas al menos esto a menudo 
      hot_standby_feedback = on # envía información desde el modo de espera para evitar 
      log_directory = 'log' # directorio donde los archivos de registro están escritos,

      Código de copia

       

    • Cree un archivo de recuperación recovery.conf.
      • Código de copia

        [root @ localhost 11] # cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.conf 
        [root @ localhost 11] # vim / var / lib / pgsql /11/data/recovery.conf 
        
        # Ajuste los parámetros: 
        recovery_target_timeline = 'latest' #Sync to the 
        last data standby_mode = on # Especifique la identidad de la biblioteca esclava 
        trigger_file = 'failover.now' 
        primary_conninfo = 'host = 192.168.63.134 port = 5432 user = repl password = 123456 '#Conecte a la información de la biblioteca principal

        Código de copia

         

      • Empezar esclavo
        systemctl start postgresql-11

         

    • Verifique la configuración maestro-esclavo
      • Ejecute el siguiente comando en la biblioteca principal
        postgres = # select client_addr, sync_state de pg_stat_replication; 
          client_addr | sync_state 
        ---------------- + ------------ 
         192.168.63.141 | asíncrono 
        (1 行 记录)

         

    • Puedes crear una base de datos para verificarte

 

Consulte https://www.cnblogs.com/miclis/p/10480979.html para obtener detalles sobre la conmutación maestro-esclavo 

Publicado 19 artículos originales · elogiado 4 · 170,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/u011250186/article/details/105518805
Recomendado
Clasificación