Estou tentando criar uma réplica hot-standby para um mestre do PostgreSQL 9.5.
O processo básico que usei é iniciar um backup no mestre:
SELECT pg_start_backup('label', true)
No escravo, eu executo, pg_basebackup:
pg_basebackup -h <master ip> -D /data/pgsql/9.5/data -U replicator -v -P --xlog-method=stream
Depois que isso for concluído, executo o comando para interromper o backup no mestre:
SELECT pg_stop_backup()
Neste ponto, obtive o seguinte no STDOUT:
NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments to be archived
WARNING: pg_stop_backup still waiting for all required WAL segments to be archived (60 seconds elapsed)
HINT: Check that your archive_command is executing properly. pg_stop_backup can be canceled safely, but the database backup will not be usable without all the WAL segments.
Isso continua e não sai.
O comando archive no mestre é definido como:
rsync -a %p <replica ip>:/data/wal-archive/%f
Inicialmente, isso não estava funcionando, pois a chave do servidor precisava ser aceita. Depois de fazer isso manualmente, o rsync foi iniciado e posso ver um grande acúmulo de arquivos (~ 15 GB até agora) em /data/wal-archive.
Este é um banco de dados de 20 TB, então eu realmente não quero ter que iniciar esse processo novamente estragando algo.
É seguro sair do terminal emitindo os AVISOS? Eu li em outros posts que o archive_mode só precisa estar ativado durante o processo de streaming dos DBs para a réplica para fins de configuração da réplica e, além disso, não é necessário.
Nesse caso, posso apenas fazer um CTRL-C no terminal e prosseguir com a configuração da réplica?
Posso então desligar o archive_mode no master?
Sim, é seguro usar CTRL-C fora do pg_stop_backup().
A construção de arquivos no diretório /data/wal_archive surge do comando archive_ no master.
Uma vez que o serviço postgres é iniciado no escravo, esses "logs" são consumidos (ou seja, gravados no banco de dados no escravo) e então excluídos.