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.