Solução de backup automático do servidor dedicado

6

Eu tenho um servidor web Ubuntu dedicado em um ambiente de nuvem, e estou procurando uma maneira legal de fazer backups automatizados.

Eu gostaria de fazer backup de alguns diretórios com aplicativos da web e todos os meus bancos de dados MySql. Quanto ao destino: faça instantâneos a cada duas horas no local e a cada seis horas em um servidor FTP remoto. Exclua também arquivos de backup com mais de sete dias (localy + ftp) e notifique qualquer problema por email.

Agora, para obter algumas dessas funcionalidades, eu uso o script cron + shell e o link , mas isso realmente não atende às minhas necessidades . O Mysqldumper não sabe automaticamente sobre novos bancos de dados, e o shell script não notifica sobre problemas. É algo que eu tenho que verificar de vez em quando, e eu não tenho confiança.

Eu pesquisei um pouco e parece que a maioria das pessoas resolve isso com scripts de shell. Este é um método que você pode confiar? Existe alguma ferramenta web-gui, estou faltando? Talvez exista uma estratégia mais inteligente para fazer isso? Estou um pouco confuso.

    
por Luigi 08.04.2012 / 01:19

6 respostas

4

Na verdade, estou usando o rsnapshot para backup. Ele não pode fazer backup do próprio db mysql, mas permite executar scripts antes e depois do backup. Então, antes de executar o rsnapshot:

 /usr/bin/ssh remote_host 'mysql -N -e "SHOW DATABASES;" | while read db; do mysqldump --skip-comments $db |gzip > ~/db/${db}.sql.gz; done'

todas as configurações do mysql são armazenadas em ~ / .my.cnf e após o backup ser feito, o rsnapshot executa o script para remover o dump no host remoto.

Além disso, o rsnapshot usa hardlinks, quando faz backup, para que você economize espaço e tenha backup completo a qualquer momento.

O Rsnapshot usa o rsync para transferir dados, portanto, é mais seguro do que o ftp.

    
por 08.04.2012 / 01:45
4

Temos uma situação semelhante e usamos automysqlbackup (em vez do mysqldumper como no seu caso) e o rsnapshot também. O automysqlbackup também pode informá-lo por e-mail.

    
por 08.04.2012 / 01:48
2

Você parece ter requisitos específicos para seus backups: você sabe o que fazer backup, quais são os intervalos que você gosta de usar, como você gosta de excluir backups antigos etc. Eu acho que é muito improvável que você encontre uma orientação livre. aplicação baseada em fazer tudo isso de uma maneira que você goste e tornar tudo um processo automatizado.

A solução que sugiro é usar ferramentas de linha de comando para executar as etapas e, em seguida, colá-las todas juntas com uma linguagem de script como Perl ou Python para torná-lo um único processo iniciado pelo cron. Você pode capturar valores de retorno de subprocesso em seu script e tomar as ações apropriadas. Você pode fazer qualquer registro que desejar e até adicionar etapas de verificação e um teste de recuperação ao seu script. Eu confiaria nesse tipo de solução mais do que em um aplicativo baseado em gui.

    
por 08.04.2012 / 01:56
1

Eu costumava usar scripts de shell para backups, mas desisti porque eles eram inatingíveis. Eu uso o Bacula, uma solução de backup e restauração de rede Open Source . Uma vez que eu comecei a correr, nunca olhei para trás. Ele deve fazer tudo o que você precisa e muito mais (não listarei todos os recursos aqui, pois tenho certeza de que há guias melhores para serem encontrados com o Google).

O Bacula enviará por e-mail relatórios de backup sobre sucesso ou falha. Você pode definir um agendamento complicado para backups completos e incrementais. Você pode abranger seus backups em vários volumes em várias mídias de armazenamento. O servidor e os sistemas de armazenamento podem ser todos executados em diferentes máquinas separadas dos clientes.

Especificamente, você mencionou o backup de bancos de dados. O Bacula suporta a execução de scripts do cliente e do lado do servidor em vários estágios do backup, para que você possa, por exemplo, despejar todos os seus bancos de dados em um arquivo antes do início do backup.

    
por 08.04.2012 / 06:34
1

Eu uso uma combinação de backupninja e duplicidade para backups do meu servidor. Backupninja tem a capacidade de fazer backup de bancos de dados MySQL. Duplicidade cria backups incrementais (opcionalmente criptografados) usando um algoritmo semelhante ao rsync e pode transferir backups usando vários protocolos (como SCP / SFTP, FTP, WebDAV ou armazenando no Amazon S3).

    
por 15.04.2012 / 12:00
0

Se você estiver em uma configuração na nuvem, considere o EC2. Não há melhor backup do que um que você pode abrir em minutos com uma nova instância. Tudo que você precisa é de alguns instantâneos regulares e você será definido em caso de falha.

    
por 08.04.2012 / 03:34