Tipo Físico
Os backups a nível de sistema de arquivos (ou backups físicos) são essencialmente apenas snapshots de todos os arquivos do banco de dados. Mas isso não é tão fácil quanto pode parecer, porque os arquivos dentro de um banco de dados geralmente passam por constantes regravações e mudanças. O backup para banco de dados PostgreSQL se resume a dois métodos chave: continuidade no arquivamento e recuperação point-in-time. Ambos se destinam a complementar um ao outro, por isso é importante saber como os dois funcionam.
Por uma questão de consistência, os backups precisam ter alguma maneira de saber com certeza que o processo de backup está copiando todo o banco de dados, ou não está mudando nada e deixando o banco de dados como está. É por isso que o PostgreSQL tem uma tecnologia de “registro prévio da escrita”: os segmentos de write-ahead log (WAL). São exatamente eles que estão sendo copiados durante o processo de arquivamento em andamento. A informação que é armazenada nesses arquivos permite tanto uma recuperação após falha mais fácil, quanto uma melhor consistência dos dados.
Não é raro que bancos de dados sofram algumas mudanças no processo de backup de um sistema de arquivos, mas algumas dessas mudanças podem danificar algumas partes de um backup ou torná-lo irreparável como um todo. Para evitar consequências tão terríveis, o PostgreSQL tem uma API de baixo nível para o processo de backup físico. Usando os comandos “pg_start_backups()” e “pg_stop_backup()” antes e depois do processo, respectivamente, você assegura que nenhuma mudança perigosa seja feita no banco de dados durante o processo de backup. Ao mesmo tempo, você ainda precisará gerar todos os segmentos WAL entre esses dois comandos.