pg_start_backup
executará um ponto de verificação, como dezso observa. Isso tem um impacto, mas seu banco de dados executa pontos de verificação regularmente de qualquer maneira e deve fazê-lo para funcionar, para que eles claramente não sejam um problema para você. Um ponto de verificação antecipado significa que menos dados foram acumulados, o que significa que, se houver um ponto de verificação depg_start_backup
impacto menor que o normal.
Onde você precisa se preocupar é o rsync ou equivalente pg_basebackup
etapa . A E / S de leitura não será muito ruim, pois é seqüencial, mas provavelmente prejudicará significativamente o desempenho de E / S do banco de dados e também tenderá a empurrar dados quentes do cache de RAM em favor de menos de dados usados, causando a interrupção do cache à medida que os dados mais necessários são então lidos novamente.
Você pode usar nice
e ionice
ajudar a limitar o impacto de E / S (mas não o impacto do cache); no entanto, há um custo para isso. O backup levará mais tempo e até você concluir o backup e executarpg_stop_backup
o sistema, o meu sistema está acumulando - como eu o entendo - ele não pode excluir, acumulando dívidas do ponto de verificação para um ponto de verificação GRANDE no final da execução do backup e acumulando tabela e índice inchar porque não pode limpar linhas mortas. Portanto, você realmente não pode dar ao luxo de fazer o backup durar para sempre, especialmente se você tiver tabelas de rotatividade muito altas.
No final, é difícil dizer se você pode usar com segurança pg_start_backup
e pg_stop_backup
para backups quentes em seu ambiente. A maioria das pessoas pode, mas se você estiver próximo do que seu hardware pode fazer, tiver requisitos de tempo apertados, não puder arcar com o risco de uma paralisação e possuir tabelas de rotatividade muito altas e tabelas muito grandes, pode ser problemático .
Infelizmente, você precisa testá-lo e ver.
Se você puder, pode valer a pena emitir um CHECKPOINT
instantâneo atômico do volume em que seu banco de dados está usando LVM, as ferramentas de sua SAN, EBS ou o que você estiver usando. Se você puder fazer isso, poderá copiar o instantâneo à vontade. Essa abordagem não é adequada para fazer um backup básico para PITR / espera quente / espera quente, mas é perfeitamente bom para uma cópia de backup estática e tem um impacto muito menor no sistema. Só é possível fazer isso se os instantâneos forem atômicos e todo o banco de dados, incluindo o WAL, estiver em um único volume.
Uma possibilidade que ainda não investiguei é combinar as duas abordagens. Ocorre-me que alguém poderia ( não testado e possivelmente errado e inseguro , ainda não sei):
pg_start_backup
- Disparar instantâneos de todos os espaços de tabela, o datadir principal e o volume xlog
pg_stop_backup
- Copie o WAL até o arquivo final de
pg_stop_backup
- Copie os dados dos volumes de captura instantânea
Essencialmente, a idéia é reduzir quanto tempo o banco de dados deve atrasar seus pontos de verificação, analisando cada volume que você pode copiar quando quiser.