Devo, e como, fazer backup do meu banco de dados para um aplicativo da Web hospedado em um servidor do Amazon EC2?

2

Configurei a instância Amazon EC2 usando a edição do servidor Ubuntu e instalei o LAMP empilhar. Eu fiz uma aplicação web PHP rodando no MySQL. Eu testei o aplicativo da web no Amazon EC2 e ele funciona.

Eu não lancei oficialmente, mas preciso saber isso antes do lançamento. Devo fazer backup dos dados do meu banco de dados? Em caso afirmativo, como devo proceder da maneira mais econômica possível?

Anteriormente para outro aplicativo da web, eu escrevi um script Perl ou Bash (não lembro) que será executado por cron em uma base diária.

O script fará backup do banco de dados em um único arquivo .sql e enviará como anexo de e-mail para minha conta do Gmail.

Esse aplicativo da Web estava em hospedagem compartilhada, portanto, eu tinha certeza de que precisava fazer backup do meu banco de dados. Meus arquivos estão no repositório Git, então não estou preocupado com isso.

Para este novo aplicativo da web em Amazon Web Services (AWS), estou indeciso porque:

  1. Eu não acho que seja um bom solução como dados enviados por email não é seguro. Não há SSL, tanto quanto eu posso lembre-se que era um barato solução. Livre. Facilmente recuperável por data.

  2. A Amazon pode ter tornado redundante para eu fazer backup porque eles fazem isso já. Tudo que eu preciso saber é como recuperá-lo em caso de desastre ( touch wood )

    • (eu suspeito) existe uma maneira superior e econômica de fazer backup usando o Amazon S3 .
  3. Eu permito que os usuários façam upload de arquivos, então eu preciso de alguma forma fazer backup desses arquivos também. Que eu não sei como e nunca fiz isso antes de qualquer forma.

O que eu quero: um backup diário do meu banco de dados e arquivos de imagem com a melhor relação custo-benefício possível e um guia de reprodução passo a passo claro para implementar isso e recuperá-los em caso de desastre.

Antecedentes:

  • Eu não estou totalmente familiarizado com a AWS. Apenas saiba tanto quanto configurar um conta. Isso é tudo.

  • < < Um ano de experiência como novato no Ubuntu. Maior parte da minha vida no Windows.

  • Principalmente intimista com programação PHP. Comando de outra programação línguas não é tão bom devido à falta de uso.

por Kim Stacks 26.12.2010 / 12:48

2 respostas

2

A Amazon mantém seus arquivos de banco de dados em armazenamento redundante, mas fornece apenas informações limitadas sobre como ele está configurado, portanto você terá que formar sua própria opinião sobre se isso é adequado ou não às suas necessidades. No entanto, eles não mantêm versões antigas, então isso só irá protegê-lo contra falhas de hardware e não contra algum tipo de erro do usuário (o que é mais provável que uma falha de hardware).

Além disso, esteja avisado de que, se o seu servidor EC2 estiver em um repositório de instâncias, os dados serão apagados se o servidor for interrompido. Para armazenamento persistente, seus dados devem estar em um volume EBS (Elastic Block Storage). Quando estiver em um volume do EBS, você poderá tirar instantâneos periódicos (manualmente ou automatizados usando a API do Amazon), que permitirão que você faça a reversão para versões mais antigas. O AWS SDK para PHP é muito bom, e você pode encontrá-lo aqui: link .

    
por 26.12.2010 / 14:36
1

A Amazon tem muitos serviços, às vezes pode ficar confuso com todas as diferentes tecnologias. Tenha em mente que a Amazon está criando todos esses serviços para resolver problemas específicos.

Fazer o backup do MySQL no S3 é muito comum e está bem documentado em muitos blogs. Recomendo seguir o guia aqui link

Nunca assuma nada, o S3 foi projetado para um dispositivo de armazenamento tolerante a falhas, mas isso não me impediria de fazer o backup de tudo localmente em meu computador ou com outro provedor. Os volumes do EBS não são confiáveis o suficiente para serem o único dispositivo de armazenamento para o backup, muito menos se o banco de dados também estiver armazenado no mesmo disco.

Qualquer que seja o método escolhido, eu seguiria as etapas a seguir ao fazer backup ...

  1. Criar backup diariamente
  2. Envie backup para o S3 (certifique-se de usar a soma de verificação MD5 para saber que o backup é bom)
  3. Fazer o backup do backup do S3 localmente ou em outro provedor que não seja o S3
  4. Limpar backups antigos usando um histórico de tipo de backup contínuo
    • Armazene um backup dos últimos 7 dias
    • Armazene um backup da sexta-feira a cada semana durante 1 mês
    • Armazene um backup do último mês por 1 ano
por 29.02.2012 / 00:55