Replicação
Versão 9.6
No primário
postgresql.conf
hot_standby = 'on'
hot_standby_feedback = 'on'
wal_level = 'logical'
wal_compression = 'on'
max_wal_senders = '20'
max_replication_slots = '40'
wal_keep_segments = '100'pg_hba.conf
host replication all 172.17.10.51/32 trustrecarregar a configuração
select pg_reload_conf();ou
systemctl reload postgresql-9.6.servicecriar novo slot de replicação
SELECT * FROM pg_create_physical_replication_slot('the_slot_name');verificar a criação do slot
SELECT * FROM pg_replication_slots;se você precisar remover o slot criado
-- Executar apenas para remover o slot!
SELECT pg_drop_replication_slot('the_slot_name');No secundário
Depois de instalar a mesma versão do PostgreSQL do primário, execute o initdb.
/usr/pgsql-9.6/bin/initdb --pgdata=/var/lib/pgsql/9.6/data
# or
/usr/pgsql-9.6/bin/postgresql96-setup initdbParar o postgres e remover o diretório de dados
rm -rf /var/lib/pgsql/9.6/dataCriar o banco replicado, com o usuário postgres. Use o tmux para isso.
/usr/pgsql-9.6/bin/pg_basebackup --pgdata=/var/lib/pgsql/9.6/data --write-recovery-conf --slot=the_slot_name --progress --host=10.0.3.33 --xlog-method=stream --checkpoint=fastIniciar o serviço do postgres, com o usuário root, usando também o screen.
# this start command will run for a while. be patient.
systemctl start postgresql-9.6.serviceVerificar o status
systemctl status postgresql-9.6.serviceVoltar ao primário e verificar o status do slot (o campo active deve ser true)
SELECT * FROM pg_replication_slots;
-[ RECORD 1 ]-------+-----------------------------
slot_name | the_slot_name
plugin |
slot_type | physical
datoid |
database |
active | t
active_pid | 242213
xmin | 1936192908
catalog_xmin |
restart_lsn | 65966/54EE6000
confirmed_flush_lsn |
Rodrigo de Avila