Como configurar a replicação de streaming postgreSql 12 no CentOS 8

Como configurar a replicação de streaming postgreSql 12 no CentOS 8

PostGresql O banco de dados suporta várias soluções de replicação para criar aplicativos de alta disponibilidade, escalável e tolerante a falhas, um dos quais é Log de escreva (Wal) Envio. Esta solução permite que um servidor em espera seja implementado usando o envio de log baseado em arquivo ou replicação de streaming ou sempre que possível, uma combinação de ambas as abordagens.

Com a replicação de streaming, um servidor de banco de dados em espera (escravo de replicação) está configurado para conectar -se ao servidor mestre/primário, que fluem os fluxos Wal registros para o modo de espera como são gerados, sem esperar pelo Wal arquivo a ser preenchido.

Por padrão, a replicação de streaming é assíncrona, onde os dados são gravados no (s) servidor (s) em espera após uma transação ter sido cometida no servidor primário. Isso significa que há um pequeno atraso entre cometer uma transação no servidor mestre e as mudanças se tornando visíveis no servidor de espera. Uma desvantagem dessa abordagem é que, caso o servidor mestre trave, quaisquer transações não comprometidas podem não ser replicadas e isso pode causar perda de dados.

Este guia mostra como configurar um PostgreSQL 12 replicação de streaming mestre-standby em CENTOS 8. Nós vamos usar "slots de replicação”Para o modo de espera como uma solução para evitar que o servidor mestre reciclasse Wal segmentos antes do modo de espera os receber.

Observe que, em comparação com outros métodos, os slots de replicação mantêm apenas o número de segmentos conhecidos por serem necessários.

Ambiente de teste:

Este guia assume que você está conectado aos seus servidores de banco de dados mestre e em espera como a raiz via Ssh (usar Sudo comando sempre que necessário se você estiver conectado como um usuário normal com direitos administrativos):

PostgreSQL Master Database Server: 10.20.20.9 PostGresql Standby Database Server: 10.20.20.8 

Ambos os servidores de banco de dados devem ter PostgreSQL 12 Instalado, caso contrário, consulte: Como instalar o PostgreSQL e Pgadmin no CentOS 8.

Observação: PostgreSQL 12 vem com grandes mudanças na implementação e configuração da replicação, como a substituição de recuperação.conf e a conversão de recuperação.conf Parâmetros para parâmetros normais de configuração do PostGresql, facilitando muito a configuração da replicação do cluster.

Etapa 1: Configurando o servidor de banco de dados PostGresql Master/Primary Database

1. No servidor mestre, mude para a conta do sistema Postgres e configure os endereços IP (s) nos quais o servidor mestre ouvirá conexões de clientes.

Nesse caso, vamos usar * Significando tudo.

# SU - PostGres $ psql -c "ALTER SYSTEM SET LOUD_ADDRESS para '*';" 

O Alter System Set O comando SQL é um recurso poderoso para alterar os parâmetros de configuração de um servidor, diretamente com uma consulta SQL. As configurações são salvas no PostGresql.conf.auto arquivo localizado na raiz da pasta de dados (e.g /var/lib/pgsql/12/dados/) e leia a adição àqueles armazenados em PostGresql.conf. Mas as configurações no primeiro têm precedência sobre as de arquivos posteriores e outros relacionados.

Configurar endereços IP no PostgreSQL Master

2. Em seguida, crie uma função de replicação que será usada para conexões do servidor de espera para o servidor mestre, usando o createUser programa. No comando seguinte, o -P Sinalizações solicitam uma senha para a nova função e -e ecoa os comandos que o CreateUser gera e envia para o servidor de banco de dados.

# SU -PostGres $ createUser -Replicação -p -e Replicator $ saída 
Crie usuário de replicação no pgmaster

3. Em seguida, insira a seguinte entrada no final do /var/lib/pgsql/12/data/pg_hba.conf arquivo de configuração de autenticação do cliente com o campo de banco de dados definido como replicação, como mostrado na captura de tela.

Replicador de replicação do host 10.20.20.24/24 MD5 
Configure a autenticação de replicação

4. Agora reinicie o PostGres12 Serviço usando o seguinte comando SystemCTL para aplicar as alterações.

# SystemCtl Reiniciar PostGresql-12.serviço 

5. Em seguida, se você tiver o Firewalld Serviço em execução, você precisa adicionar o serviço PostgreSQL na configuração do Firewalld para permitir solicitações do servidor em espera ao mestre.

# firewall-cmd --add-service = pósgresql --permanent # firewall-cmd--reload 

Etapa 2: Fazendo um backup base para bootstrap no servidor de espera

6. Em seguida, você precisa fazer um backup base do servidor mestre no servidor em espera; Isso ajuda a inicializar o servidor de espera. Você precisa interromper o serviço PostGresql 12 no servidor de espera, mudar para a conta de usuário do Postgres, faça backup do diretório de dados (/var/lib/pgsql/12/dados/), em seguida, exclua tudo sob ele, como mostrado, antes de fazer o backup da base.

# SystemCtl Stop PostGresql-12.Serviço # SU -PostGres $ cp -r/var/lib/pgsql/12/data/var/lib/pgsql/12/data_orig $ rm -rf/var/lib/pgsql/12/data/* 

7. Em seguida, use o pg_basebackup ferramenta para fazer o backup base com a propriedade certa (o usuário do sistema de banco de dados I.e PostGres, dentro do PostGres conta de usuário) e com as permissões certas.

No comando a seguir, a opção:

  • -h - Especifica o host que é o servidor mestre.
  • -D - Especifica o diretório de dados.
  • -você - Especifica o usuário da conexão.
  • -P - Ativa o relatório de progresso.
  • -v - Ativa o modo detalhado.
  • -R - Ativa a criação da configuração de recuperação: cria um espera.sinal arquivar e anexar configurações de conexão a PostGresql.auto.conf sob o diretório de dados.
  • -X - Usado para incluir os arquivos de log Write-Ahead necessários (arquivos WAL) no backup. Um valor do fluxo significa transmitir o Wal enquanto o backup é criado.
  • -C - Ativa a criação de um slot de replicação nomeado pela opção -s antes de iniciar o backup.
  • -S - Especifica o nome do slot de replicação.
$ pg_basebackup -h 10.20.20.9 -d/var/lib/pgsql/12/data -u replicator -p -v -r -x stream -c -s pgstandby1 $ sai 
Backup base do servidor mestre

8. Quando o processo de backup é feito, o novo diretório de dados no servidor de espera deve se parecer com a captura de tela. A espera.sinal é criado e as configurações de conexão são anexadas a PostGresql.auto.conf. Você pode listar seu conteúdo usando o comando ls.

# ls -l/var/lib/pgsql/12/dados/ 
Verifique o diretório de dados de backup

Um escravo de replicação será executado em “Hot Standby”Modo se o Hot Standby O parâmetro está definido como ON (o valor padrão) em PostGresql.conf E há um espera.sinal arquivo presente no diretório de dados.

9. Agora de volta ao servidor mestre, você poderá ver o slot de replicação chamado pgstandby1 Quando você abre o pg_replication_slots Ver o seguinte.

# su - postgres $ psql -c "Selecione * de pg_replication_slots;" $ saída 
Crie slot de replicação

10. Para visualizar as configurações de conexão anexadas no PostGresql.auto.conf Arquivo, use o comando CAT.

# cat/var/lib/pgsql/12/data/postgreSql.auto.conf 
Veja as configurações de conexão

11. Agora inicie as operações normais de banco de dados no servidor em espera iniciando o serviço PostgreSQL da seguinte maneira.

# SystemCtl Iniciar PostGresql-12 

Etapa 3: Testando a replicação do streaming postgreSQL

12. Uma vez que uma conexão seja estabelecida com sucesso entre o mestre e o espera, você verá um Wal Processo receptor no servidor em espera com um status de streaming, você pode verificar isso usando o pg_stat_wal_receiver visualizar.

$ psql -c "\ x" -c "Selecione * de pg_stat_wal_receiver;" 
Verifique o processo do receptor WAL

e um correspondente Wal processo de remetente no servidor mestre/primário com um estado de streaming e um sync_state De ASYNC, você pode verificar esta exibição PG_STAT_REPLICATION PG_STAT_REPLICATION.

$ psql -c "\ x" -c "selecione * de pg_stat_replication;" 
Verifique o processo do remetente do WAL no mestre

Na captura de tela acima, a replicação de streaming é assíncrona. Na próxima seção, demonstraremos como ativar opcionalmente replicação síncrona.

13. Agora teste se a replicação está funcionando bem criando um banco de dados de teste no servidor mestre e verifique se existe no servidor de espera.
[mestre] PostGres =# Crie banco de dados Tecmint;
[em espera] PostGres =# \ l

Replicação de streaming de teste

Opcional: ativar a replicação síncrona

14. A replicação síncrona oferece a capacidade de comprometer uma transação (ou gravar dados) no banco de dados primário e na espera/réplica simultaneamente. Ele apenas confirma que uma transação é bem -sucedida quando todas as alterações feitas pela transação foram transferidas para um ou mais servidores síncronos em espera.

Para ativar a replicação síncrona, o syncrons_commit Também deve ser definido como ON (que é o valor padrão, portanto, não há necessidade de nenhuma alteração) e você também precisa definir o syncrons_standby_names parâmetro para um valor não vazio. Para este guia, vamos defini -lo para todos.

$ psql -c "ALTER SYSTEM SET SYNCHRONOUS_STANDBY_NAMES para '*';" 
Definir nomes de espera SYNC em mestre

15. Em seguida, recarregue o serviço PostGresql 12 para aplicar as novas alterações.

# Systemctl Recaro PostGresql-12.serviço 

16. Agora, quando você consulta o Wal processo do remetente no servidor primário mais uma vez, ele deve mostrar um estado de streaming e um sync_state de sincronizar.

$ psql -c "\ x" -c "selecione * de pg_stat_replication;" 
Verifique o processo do remetente do WAL no mestre

Chegamos ao final deste guia. Mostramos como configurar PostgreSQL 12 Replicação de transmissão de banco de dados Master-Standby em CENTOS 8. Também abordamos como ativar a replicação síncrona em um cluster de banco de dados PostGresql.

Existem muitos usos de replicação e você sempre pode escolher uma solução que atenda ao seu ambiente de TI e/ou requisitos específicos de aplicativos. Para mais detalhes, vá para servidores de espera de login em espera na documentação PostGresql 12.