Postgresql archive_command em um servidor em espera em cascata

1

Descobri que o archive_command é executado apenas pelo postgresql em um master.

Se eu estou executando uma replicação em cascata como:

Mestre - > Escravo1 - > Slave2 e deseja arquivar os segmentos do WAL no Slave1, o comando nunca é executado.

Isso está correto?

Se sim, e se eu apenas copiar (rsync ou similar) os segmentos do WAL do diretório pg_xlog para o diretório do meu arquivo? Eu poderia então usar este diretório de arquivo como a fonte para um restore_command em um novo escravo?

    
por Matt 07.06.2013 / 16:43

2 respostas

0

If so, what if I just copy (rsync or similar) myself the WAL segments from pg_xlog directory to my archive directory? Could I then use this archive directory as the source for a restore_command in a new slave?

Sim, você pode. No entanto, você é responsável por não deixar nenhum arquivo de log ao fazer isso.

Para obter os melhores resultados, você provavelmente desejará fazer a cópia em cascata / rsync / whatever como parte de sua restore_command no Slave1.

    
por 07.06.2013 / 22:42
0

Observe que, se você estiver no Postgres 9.5 ou 9.6, poderá fazer isso funcionar.

No modo de espera, você precisa definir archive_mode = always . Quando o Postgres vir archive_mode = on , ele só arquivará o WAL como master, mas always o instruirá para arquivar o WAL mesmo como um standby. A última seção de estes documentos descreve esse comportamento.

É claro que o modo de espera precisa de outra configuração adequada para acompanhar isso, por exemplo:

archive_mode = always
hot_standby = on
wal_level = replica
max_wal_senders = 3
archive_command = whatever-you-like
archive_timeout = 300

Basicamente, se você informar a espera para always archive WAL, ela obedecerá a archive_command como normal, então configure as coisas de acordo.

    
por 18.07.2017 / 21:49

Tags