Estou usando o Postgres para armazenar uma variedade de dados de aplicativos para um aplicativo da web. Parte do aplicativo envolve armazenar e recuperar arquivos enviados pelo usuário. Estou armazenando os arquivos no sistema de arquivos com alguns metadados associados no banco de dados.
Estou tentando criar uma estratégia de backup e arquivamento para que eu possa efetivamente fazer backup e arquivar/restaurar o banco de dados e os arquivos vinculados. Aqui estão as coisas que eu quero realizar.
Execute backups de rotina que possam ser usados para recuperação de falhas e que incluam todos os dados do banco de dados e os arquivos vinculados. O ideal é que esse backup seja feito durante a execução do aplicativo. O backup ao vivo é certamente possível com um banco de dados, mas não tenho certeza de como manter os arquivos vinculados consistentes com o banco de dados durante o processo de backup
Arquive blocos de dados à medida que se tornam "antigos". Essas partes devem incluir os dados do banco de dados mais quaisquer arquivos vinculados. Deve ser possível colocar os dados arquivados novamente em produção. Seria ideal se fosse fácil determinar quais intervalos de objetos foram armazenados em cada bloco.
Você tem algum conselho sobre como atingir esses objetivos? Se os arquivos estivessem no banco de dados como BLOBS, essas tarefas seriam muito mais fáceis, pois a funcionalidade normal de backup e restauração do banco de dados lidaria com isso. Não tenho certeza de como realizar a mesma coisa quando os dados do arquivo estão vinculados às linhas do banco de dados.
Nota: fiz esta pergunta no ServerFault, mas não obtive nenhuma resposta lá. O link para essa pergunta é: https://serverfault.com/q/284218/85719
Se você armazenar seus arquivos por hash e vincular com o hash à linha do banco de dados, poderá simplificar a manutenção da consistência.
Nesse caso, você pode:
continue fazendo backup incremental do sistema de arquivos (por exemplo, com rsync) e nunca exclua
ou
Os instantâneos LVM + podem ser sua melhor aposta, se você deseja uma restauração limpa e fácil. Ele não fornece recuperação pontual, pois as alterações que são revertidas ou substituídas entre instantâneos são invisíveis, mas pelo menos seus arquivos e banco de dados são copiados em um estado consistente.
http://tldp.org/HOWTO/LVM-HOWTO/snapshots_backup.html
http://www.howtoforge.com/linux_lvm_snapshots