Qual é a maneira mais eficiente de obter instantâneos de backup de um banco de dados mysql pela Internet?

2

Ok A situação é esta:

Atualmente usamos mysqldump e depois bzip2 compactamos o resultado e o scp de volta para o nosso servidor de backup. Este é um processo manual demorado e não há instantâneos criados.

No momento, estou experimentando com o rsync transferindo as diferenças entre o antigo e o novo arquivo de despejo, mas a compactação é muito menos eficiente.

Qualquer outra sugestão seria bem-vinda.

    
por Sekenre 31.05.2009 / 03:31

5 respostas

2

Uma maneira de fazer isso seria configurar a replicação de banco de dados para um servidor de backup e criar os backups lá.

Se isso não for viável em seu ambiente, suas segundas melhores chances são o rsync no despejo SQL simples (não se esqueça de --compress ) ou em um gzip do mesmo, que foi compactado com --rsyncable . Eu não sei quão bem rsync corre sobre isso, já que os valores inseridos / excluídos no arquivo de despejo irão causar um "deslocamento" no arquivo que o rsync precisa detectar para prevenir a retransferência de dados que não foram alterados.

Quando você executa o rsync com --stats , ele deve informar quantos bytes ele realmente enviou pela rede, para fornecer alguns números.

    
por 31.05.2009 / 03:40
1

Você tentou as seguintes opções ...

rsync -a --compress --compress-level=9

Na verdade, isso deve funcionar melhor (proporções de compactação mais altas) do que usar um compactador remoto ou um transporte de compactação (consulte rsync (1) ).

    
por 31.05.2009 / 03:51
1

A solução que sempre usei:

  1. Replique para outro servidor, de preferência no mesmo local físico (para que, se necessário, você possa fazer um failover manual).
  2. Configure um script de shell para fazer backups nesse servidor, usando --master-data --single-transaction (supondo que você esteja usando InnoDB) para que você possa obter a posição do log principal, bem como garantir consistência transacional em seu dump de banco de dados. Eu escrevi este , que pode se adequar aos seus propósitos ou não.
  3. Envie seu backup para onde quer que você queira que seu backup seja enviado. Eu envio o meu para o Mosso Cloud Files (que é incrivelmente rápido se você estiver em um servidor Mosso) usando outro script que eu coloquei juntos.
  4. Execute este backup em um período que represente a importância dos seus dados para você. Nós corremos o nosso a cada duas horas.
  5. Tire férias.
por 05.06.2009 / 21:50
0

Não tenho certeza se você está usando o Windows, mas tive sorte com o MyWitch administrando bancos de dados MySQL em servidores remotos e eles têm um produto (que eu não usei) chamado DumpTimer que permite programar mysqldumps e baixá-los. Shareware, então você teria que pagar pela versão completa que permitiria a sua execução como um serviço do Windows.

Link para o DumpTimer: www.richtsoft.com/mysql_17_backup.html

(recorte / cole, já que novos usuários não podem adicionar hiperlinks)

    
por 31.05.2009 / 04:54
0

Você pode despejar os dados em cada tabela em um arquivo CSV, ordenado por uma chave primária (ou algo assim). Em seguida, use split para dividi-lo com base nas linhas. Em seguida, use o rsync para copiar esses arquivos. Portanto, se as primeiras 1.000 linhas (ou seja, linhas) não tiverem sido alteradas, o arquivo não será rsynced. Você pode deixá-los descriptografados no servidor e no cliente e obter o rsync para fazer a compactação na rede. Dessa forma, seria rápido para ele saber "Oh, eu adiciono 10 linhas aqui", etc.

    
por 26.06.2009 / 17:03

Tags