Você pode fazer um backup físico / em nível de arquivo no PostgreSQL, embora não seja uma prática padrão (tentarei muito fazer o pg_dump funcionar; você perguntou na lista de discussão? )
Como outra opção, você já considerou uma configuração replicada, com pontos de entrada "ao vivo" tempo de backup / recuperação ?
De qualquer forma, para fazer um backup físico com o mínimo de tempo de inatividade, você precisa:
- pare o PostgreSQL
- tire um instantâneo do LVM dentro de sua máquina virtual
- reinicie o PostgreSQL
- monte o instantâneo do LVM em um diretório adequado dentro de sua máquina virtual
- faça uma cópia de todo o diretório do cluster de banco de dados (por exemplo:
/var/lib/pgsql
) - desmonte e exclua a captura instantânea do LVM
Como tirar um instantâneo é muito rápido, isso minimizará o tempo de inatividade.
Para restaurar o banco de dados em outro servidor PostgreSQL, faça o seguinte:
- pare o PostgreSQL
- excluir / renomear o diretório do cluster do banco de dados (por exemplo:
mv /var/lib/pgsql /var/lib/pgsql_original
) - restaure sua cópia do diretório do cluster do banco de dados (por exemplo:
mv mycopy /var/lib/pgsql
) - se o SELINUX estiver ativado, renomeie o novo diretório (por exemplo: 'restorecon -RF / var / lib / pgsql)
- reinicie o PostgreSQL
Por favor, note que este tipo de backups pode ser usado somente entre a mesma versão do PostgreSQL e o mesmo arco (ou seja: você não pode restaurar um backup de i386 / 32 bits em uma máquina x86_64 / 64 bits).