Implementação da replicação master-slave do postgresql-11 (replicação de fluxo)

 

  • Introdução mestre-escravo

    • A replicação de streaming do PostgreSQL é assíncrona por padrão. Se o servidor principal travar, algumas das transações confirmadas podem não ter sido replicadas no servidor de backup, o que pode causar perda de dados. A quantidade de dados perdidos é proporcional ao atraso da replicação durante o failover.
    • A replicação síncrona pode garantir que todas as modificações de uma transação possam ser transmitidas para um ou mais servidores de backup síncronos. Isso expande o nível de persistência padrão fornecido por uma confirmação de transação. Esse nível de proteção é chamado de replicação 2-segura na teoria da ciência da computação. Quando synchronous_commité definida remote_write, em seguida, um grupo 1-cofre (grupo- segura e 1-segura).
    • Ao solicitar a replicação síncrona, cada confirmação de uma transação de gravação aguardará até receber uma confirmação de que a confirmação foi gravada no disco de logon write-ahead nos servidores principal e de backup. A única possibilidade de perda de dados é que o servidor principal e o servidor de backup falhem ao mesmo tempo. Isso pode fornecer um nível mais alto de persistência, embora apenas o administrador do sistema seja responsável pelo posicionamento e gerenciamento dos dois servidores. Aguardar confirmação aumenta a confiança do usuário de que a modificação não será perdida, mas também aumenta desnecessariamente o tempo de resposta à transação solicitada. O tempo mínimo de espera é o tempo de ida e volta entre o servidor principal e o servidor de backup.
    • As transações somente leitura e as reversões de transações não precisam aguardar a resposta do servidor em espera. As confirmações de sub-transação não precisam aguardar a resposta do servidor de backup, apenas as confirmações de nível superior precisam aguardar. Ações de longa execução (como carregamento de dados ou criação de índice) não aguardarão a mensagem final de confirmação. Todas as ações de envio em duas fases requerem espera de envio, incluindo preparação e envio.
    • O backup de sincronização pode ser um backup de replicação física ou um assinante de replicação lógica. Também pode ser consumidor de qualquer outro fluxo de replicação físico ou lógico do WAL e sabe como enviar mensagens de feedback apropriadas. Além do built-in sistema de replicação física e lógica, compreendendo mais pg_receivewale pg_recvlogicalregimes especiais e similares, bem como algum sistema de cópia de terceiros e programas personalizados. Para detalhes do suporte à replicação síncrona, consulte a documentação correspondente.
  • Distribuição da máquina mestre-escravo

    • Endereço IP Versão do banco de dados Relação mestre-escravo
      192.168.63.134 11,6 Mestre
      192.168.63.141 11,6 A partir de
  •  

    Instale o 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

       

  • Configuração da biblioteca principal

    • Inicialização da biblioteca principal

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

         

    • Crie usuários de replicação para sincronização mestre-escravo
      • Copiar código

        [root @ dados do host local] # sudo -i -u postgres 
        -bash-4.2 $ psql 
        psql (11.6) 
        Digite "help" para obter informações de ajuda. 
        
        postgres = # criar função substituir senha de criptografia de replicação de login '123456'; 
        CREATE ROLE

        Copiar código

    • Configure a biblioteca escrava para usar a conta repl na biblioteca principal
      • Copiar código

        vim /var/lib/pgsql/11/data/pg_hba.conf #Só 
        
        precisa adicionar as duas linhas a seguir, repl é usado para usuários de backup, 192.168.63.0/24 atrás é o endereço IP na 
        replicação de host do segmento de rede repl 192.168.63.0/24 md5 
        hospeda todos repl 192.168.63.0/24 trust 
        
        vim /var/lib/pgsql/11/data/postgresql.conf 
        
        listen_addresses = '*' # em que endereço (s) IP (s) escutar; 
        port = 5432 # (a mudança requer reinicialização) 
        max_connections = 512 # (a mudança requer reinicialização) 
        shared_buffers = 128MB # min 128kB 
        dynamic_shared_memory_type = posix # o padrão é a primeira opção 
        wal_level = hot_standby # mínimo, réplica ou lógica
        archive_mode = on # ativa o arquivamento;  off, on ou sempre
        archive_command = 'comando cp% p / var / lib / pgsql / 11 / data / pg_archive /% f' # para usar para arquivar um segmento de arquivo de log 
        max_wal_senders = 6 # número máximo de processos do walsender 
        wal_keep_segments = 10240 # em segmentos de arquivo de log, 16 MB cada ; 0 desativa 
        wal_sender_timeout = 60s # em milissegundos; 0 desativa 
        log_directory = 'log' # diretório em que os arquivos de log são gravados

        Copiar código

         

      • Após a modificação, você precisa criar algumas estruturas de diretório que você acabou de configurar:
      • mkdir / var / lib / pgsql / 11 / data / pg_archive / 
        chown -R postgres.postgres / var / lib / pgsql / 11 / data

         

      • Reinicie o serviço de biblioteca principal
      • systemctl restart postgresql-11

         

  • Configuração do escravo

    • Após a conclusão da instalação da biblioteca, não inicialize, se tiver sido inicializada, exclua seu diretório de dados
    • Copiar código

      
      #Copie todos os arquivos de dados do nó mestre [root @ localhost ~] # pg_basebackup -h 192.168.63.134 -U repl -D / var / lib / pgsql / 11 / data / -X stream -P 
      senha: P : 
      25312/25312 kB (100%), 1/1 de tabela 
      [a raiz @ localhost ~] # LS / var / lib / pgSQL / 12 é / dados / 
      current_logfiles backup_label pg_commit_ts o pg_hba.conf pg_logical pg_notify pg_serial pg_stat pg_subtrans pg_twophase pg_wal postgresql.auto.conf log 
      da base de dados 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

      Copiar código

       

    • No arquivo de configuração da biblioteca, modifique de acordo com a seguinte configuração.

      Copiar código

      [root @ localhost ~] # vim /var/lib/pgsql/11/data/postgresql.conf 
      listen_addresses = '*' # em quais endereços IP escutar; 
      port = 5432 # (a mudança requer reinicialização) 
      max_connections = 1000 # (a mudança requer reinicialização) 
      shared_buffers = 128MB # min 128kB 
      dynamic_shared_memory_type = posix # o padrão é a primeira opção 
      wal_level = réplica # mínimo, réplica ou lógico 
      archive_mode = on # permite arquivamento ; 
      comando off, on ou sempre archive_command = 'cp% p / var / lib / pgsql / 12 / data / pg_archive /% f' # para usar para arquivar um segmento de arquivo de log 
      wal_sender_timeout = 60s # em milissegundos; 0 desativa
      hot_standby = on # "on" permite consultas durante a recuperação 
      max_standby_streaming_delay = 30s # atraso máximo antes de cancelar as consultas 
      wal_receiver_status_interval = 10s # envia respostas pelo menos com frequência neste 
      hot_standby_feedback = on # envia informações do modo de espera para impedir o 
      diretório log_directory = 'log' # onde os arquivos de log estão escritos,

      Copiar código

       

    • Crie um arquivo de recuperação recovery.conf.
      • Copiar código

        [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 os parâmetros: 
        recovery_target_timeline = 'latest' #Sync com os dados mais recentes 
        standby_mode = on #Especifique a identidade da biblioteca escrava 
        trigger_file = 'failover.now' 
        primary_conninfo = 'host = 192.168.63.134 port = 5432 user = repl password = 123456 '#Conecte-se às informações da biblioteca principal

        Copiar código

         

      • Iniciar escravo
        systemctl start postgresql-11

         

    • Verifique a configuração mestre-escravo
      • Execute o seguinte comando na biblioteca principal
        postgres = # selecione client_addr, sync_state em pg_stat_replication; 
          client_addr | sync_state 
        ---------------- + ------------ 
         192.168.63.141 | assíncrono 
        (1 记录)

         

    • Você pode criar um banco de dados para verificar a si mesmo

 

Consulte https://www.cnblogs.com/miclis/p/10480979.html para obter detalhes 

Publicado 19 artigos originais · elogiado 4 · 170.000 visualizações +

Acho que você gosta

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