Replicação mestre-escravo Postgresql + comutação mestre-escravo (replicação de streaming)

O pgsql possui vários métodos de replicação mestre-escravo. O recomendado é a replicação por streaming.

1. Pré-condições

1. Pelo menos dois bancos de dados pgsql (podem ser dois em um dispositivo)

Você pode consultar o seguinte tutorial
para compilar e instalar o pgsql: compilação e instalação do pgsql (linux)
O pgsql pode ser aberto em vários locais em uma única máquina: o pgsql pode ser aberto em vários locais em uma única máquina

2. Os dois bancos de dados foram conectados por meio de ferramentas

9版本后才支持流复制,完成的支持建议用10以后的版本(现在应该都用是14,15了)

3. Descrição das vantagens da replicação de fluxo

Mesmo que a conexão entre a biblioteca secundária e a biblioteca principal seja desconectada por um período de tempo, ela não será afetada (não funcionará se o tempo for muito longo)

2. Configure mestre e escravo

Os hosts de demonstração são os seguintes:
Máquina da biblioteca principal 192.168.0.233:5432
Máquina da biblioteca escrava 192.168.0.165:5432

(1) Operação da biblioteca principal

1. Crie uma conta duplicada

psql
CREATE USER replica replication encrypted password 'replica';

2. Modifique pg_hba.conf

vi /var/pgsqldata/pg_hba.conf

Adicione o seguinte

host   replication    replica    192.168.0.165/32     trust

Se houver um campo como host all all, lembre-se de escrevê-lo acima deste

3. Modifique postgresql.conf

vi /var/pgsqldata/postgresql.conf

Encontre a configuração do módulo REPLICATION. O estado padrão são todos os estados de comentários. Existem vários parâmetros que podem ser ajustados ou deixados inalterados por padrão:

级别
wal_level = réplica

4. Reinicie o banco de dados

systemctl restart pgsql

(2) Operação do banco de dados

1. Feche primeiro o processo do banco de dados

systemctl stop pgsql

2. Backup básico

Primeiro faça um backup básico dos dados existentes

cd /var/pgsqldata
pg_basebackup -F p -P -R -D /var/pgsqldata -h 192.168.0.233 -p 5432 -U replica -W

A senha é a réplica definida acima

Se o diretório atual não estiver vazio, a operação não poderá ser executada. Você pode excluir todo o conteúdo do diretório atual e executar o comando acima.

chmod -R 750 /var/pgsqldata
chown -R postgres:postgres /var/pgsqldata

3. Modifique postgresql.conf

vi /var/pgsqldata/postgresql.conf

Modifique as seguintes partes
hot_standby = on # Indica que esta máquina não é usada apenas para arquivamento de dados, mas também para consulta de dados.

max_standby_streaming_delay = 30s #Tempo máximo de atraso para backup de fluxo de dados

wal_receiver_status_interval = 10s # Com que frequência reportar o status do escravo ao mestre

hot_standby_feedback = on # Se houver um erro na replicação de dados, se deve fornecer feedback ao mestre

4. Inicie o servidor escravo

systemctl restart pgsql

(3) Verifique se a conexão está sincronizada

No psql da biblioteca principal, digite o seguinte comando para visualizar todas as conexões, há uma descrição de que é normal.

select client_addr,sync_state from pg_stat_replication;

3. Outros assuntos que necessitam de atenção e possíveis problemas encontrados

(1) Problemas de fuso horário/região

Se os fusos horários do mestre e do escravo forem diferentes, será reportado um erro.
Você pode usar o seguinte para verificar e processar

1. Equipamento principal da biblioteca

locale

Encontre a primeira região mostrada

2. Equipamento de biblioteca escrava

dpkg-reconfigure locales

Em seguida, encontre a região da biblioteca principal na lista e digite o número.

(2) Problemas de permissão

1. A permissão de diretório do pgsql é 750 e outros não podem ser iniciados.

(3) Problemas de plug-in

1. A biblioteca escrava deve possuir o plug-in da biblioteca principal, caso contrário a inicialização falhará.

おすすめ

転載: blog.csdn.net/ziqibit/article/details/129732077