Como impedir que o conteúdo do diretório seja alterado ao fazer um backup?

0

Eu tenho uma aplicação web que armazena dados em um banco de dados MySQL e no sistema de arquivos. Alguns dos registros do banco de dados fazem referência a alguns dos arquivos no sistema de arquivos.

Agora quero criar um instantâneo de todo o lote. Obviamente, quero ter certeza de que, depois, todos os arquivos referenciados na captura instantânea do banco de dados estão presentes na captura instantânea do sistema de arquivos. E todos os arquivos no instantâneo do sistema de arquivos são referenciados corretamente no instantâneo do banco de dados.

Se eu executar mysqldump primeiro e, em seguida, tar os arquivos (ou o contrário), há uma determinada condição de corrida. Além disso, duvido que qualquer coisa esteja impedindo outros processos de alterar arquivos enquanto executo meu backup.

Meu primeiro pensamento foi simplesmente chmod 444 do diretório antes de iniciar o processo de backup. Mas não tenho certeza sobre todas as implicações negativas que trariam a um sistema ao vivo (posso imaginar algumas).

Obviamente, neste caso, eu poderia simplesmente desligar o Apache e, assim, evitar qualquer alteração enquanto eu faço meu backup. Mas desligar o servidor da web também não é a solução mais elegante.

    
por Der Hochstapler 22.02.2012 / 13:03

1 resposta

1

Se você armazenar os arquivos dentro de um volume LVM, você pode travar o banco de dados e, em seguida, fazer um mysqldump, fazer um instantâneo LVM e, finalmente, desbloquear o banco de dados. Então faça backup do instantâneo do LVM. Dessa forma, você teria sincronizado o conteúdo do DB e do FS com o mínimo de tempo de bloqueio.

    
por 22.02.2012 / 13:20