Dicas para fazer backup do servidor ubuntu

2

Eu tenho um servidor Ubuntu hospedando um webapp PHP5 / MySQL. Eu também tenho outro servidor (offsite) com um diretório apenas para backups do meu servidor webapp. Atualmente, tenho uma tarefa cron simples que executa o seguinte:

  1. Copia / var / www para o diretório de backup local. Comando: cp -ua /var/www /backup/www
  2. Executa o mysqldump do information_schema e o banco de dados do meu aplicativo e copia esses arquivos para o diretório de backup local.
  3. Monta o servidor de backup como um volume sshfs.
  4. Copia todos os arquivos do diretório de backup local para o volume sshfs.

Perguntas:

  1. Esta é uma solução eficiente ou um programa de backup dedicado funcionaria melhor / mais rápido?
  2. Estou cobrindo tudo que preciso? Por exemplo: existem arquivos de configuração que eu deveria fazer backup também (PHP, Apache2, MySQL)?
  3. Se houver um programa de backup dedicado que atenda melhor às minhas necessidades, o que você recomendaria?

Obrigado por qualquer conselho

    
por Andrew Ensley 24.07.2009 / 03:35

3 respostas

4

Eu recomendaria algo que possa fazer backups incrementais, porque dessa forma você pode voltar para os arquivos que foram alterados há vários dias. Nós usamos dirvish para isso (está disponível no repositório do Ubuntu) - basicamente é um wrapper para o rsync escrito em perl que facilita a configuração de um sistema para executar backups incrementais regulares e expirá-los com base nas regras fornecidas.

Em nosso sistema, nós mantemos backups por 7 dias, mas mantemos o primeiro backup da semana por 1 mês e o primeiro backup do mês por um ano, então normalmente você pode encontrar arquivos que foram modificados e excluídos há algum tempo . Para coisas que são pequenas, mas importantes, temos tempos de expiração muito mais longos.

Quanto ao que você deve fazer backup, imo se você tiver o espaço para backup de tudo, a menos que tenha certeza de que não precisa fazer backup. Com backups incrementais de rsync você está copiando apenas os arquivos que foram alterados desde o último backup - eu prefiro ter um extra de 3GB de dados estáticos pertencentes ao sistema operacional na minha unidade de backup do que achar que estava faltando um arquivo importante quando eu necessário para recuperá-lo.

No mínimo, eu faria o backup de todo o conteúdo de / etc /, e a maioria de / var dependendo de qual coisa estava sendo executada no servidor.

Se o seu banco de dados mysql é relativamente pequeno, sua abordagem atual é provavelmente aceitável, mas como você precisa bloquear o banco de dados para gerar o despejo, isso não é prático em grandes bancos de dados. Devido a isso, muitas pessoas executam um servidor slave mysql, que é apenas uma cópia somente de leitura do servidor principal do servidor de backup, e usa isso para gerar backups.

A documentação do mysql sobre como fazer isso é muito boa, trabalhei com é a primeira vez em uma noite, sem muita experiência anterior com o mysql.

Nós temos nosso servidor slave mysql amarrado em dirvish, então cada dia ele gera um dump de cada banco de dados individual, assim como uma cópia inteira do / var / lib / mysql (ele para o servidor mysql antes de fazer isso)

    
por 24.07.2009 / 04:29
2

Veja convenient & maneira fácil de fazer backup do mySQL & SVN na máquina Ubuntu , que praticamente resume o que você precisa.

Em resumo,

  • Existem alguns pacotes padrão; Eu tive boas experiências com backupninja e rdiff-backup . Veja o que está disponível, o que atende às suas necessidades e escolha isso.
  • Você deve manter um backup de /etc/ (configuração do servidor), todas as suas coisas da web, dados RCS, banco de dados. Eu normalmente copio os diretórios home também, porque eu normalmente tenho um monte de pequenos scripts que realmente não se encaixam em nenhum outro lugar e se eu tiver que restaurar um servidor é muito bom ter uma configuração 'conhecida' do shell, editor preferido, etc.
  • Enquanto você faz acima, planeje - pelo menos na sua cabeça - "o que eu faço quando as coisas vão mal?" (ou seja, sabe o que é onde no seu backup e como restaurá-lo.)
por 30.07.2009 / 11:57
1

Eu tenho meus servidores backup tudo o que eu precisava backup para um tar, então ele é copiado para um backup externo. o script também excluirá os backups de 7 dias atrás. Eu esqueci onde eu encontrei, mas eu não escrevi.

!/bin/bash
# fecha has a formated date
fecha='date +"%d-%m-%Y"'
# Backup and gzip the directory
sudo tar cvzpf /backups/backup-$fecha.tgz --same-owner  --exclude="/export/*" --exclude="/backups/*" --exclude="/home/error.log" --exclude="/proc/*" --exclude="/media/*" --exclude="/dev/*" --exclude="/mnt/*" --exclude="/sys/*" --exclude="/tmp/*" / 2>/home/error.log
# Rotate the logs, delete older than 7 days
find /backups/ -mtime +7 -exec rm {} \;
    
por 24.07.2009 / 05:22