Eu tenho um servidor postgresql existente que gostaria de replicar para outro local usando a replicação de streaming. Como posso estimar melhor a quantidade de largura de banda que será necessária para manter os bancos de dados razoavelmente sincronizados, usando a carga de trabalho real que tenho agora? Eu li a pg_stat_*
lista, mas nada me chama a atenção para uma taxa de transação geral ou quantidade de dados gravados (exceto para pg_stat_bgwriter, que tem totais desde que o servidor foi iniciado pela última vez). O número de buffers (que acredito serem de 8kB cada) escritos de acordo com o log do ponto de verificação estaria no estádio correto?
Bem, grosso modo, em estado estacionário (ou seja, depois de ter um servidor em espera inicializado com um backup de base e sincronizado com o primário), a quantidade de largura de banda necessária para manter um standby em sincronia será aproximadamente o volume WAL do seu primário Taxa de transferência.
Agora, qual é a taxa de transferência do volume WAL do seu primário? Basicamente, quantos arquivos WAL de 16 MiB seu servidor principal produz por unidade de tempo. Você pode vasculhar o
pg_xlog
diretório principal e ver quantos novos arquivos estão sendo processados. Ou aqui está um comando shell bacana usandopsql
, crédito de depesz que você pode usar:(echo "ibase=16" psql -qAtX -c "select pg_xlogfile_name(pg_current_xlog_location())" | cut -b 9-16,23-24) | bc
A saída desse comando fornecerá uma contagem decimal do número do arquivo WAL em que você está. Execute esse comando novamente em, digamos, 10 minutos. Subtraia o primeiro número do segundo e isso lhe dará quantos segmentos de 16 MiB WAL precisariam ser sincronizados entre o primário e o standby naquele período de tempo. Isso responderá sua pergunta sobre:
Mas! Algumas ressalvas:
A etapa inicial de copiar um backup básico para colocar um novo modo de espera on-line precisará de MUITA largura de banda (já que você precisará efetivamente copiar todo
DATADIR
o backup para abrir o novo servidor) e, em seguida, o standup terá trabalho a fazer para alcançar a posição atual do primário. Efetivamente, isso significa que você precisará de muita largura de banda adicional além de suas necessidades de estado estável para poder inicializar de maneira confiável um novo servidor em espera em um tempo razoável.O volume de WAL produzido pelo primário será influenciado por configurações como wal_level , que deve ser ativado
hot_standby
quando você realmente deseja ativar um servidor em esperaConfigurações úteis a serem habilitadas quando você estiver usando a replicação de streaming, como hot_standby_feedback , consumirão mais largura de banda.
Você provavelmente descobrirá que a taxa de transferência do seu WAL varia consideravelmente, dependendo de quão ocupado está o seu banco de dados, autovacuuming, pontos de verificação, DDL, etc.