Como posso fazer backup de bancos de dados de vários gigabytes no MySQL? Pontos de bônus para restaurações mais rápidas

11

Eu tenho um banco de dados de 4 GB no MySQL. Como posso fazer backup? Além disso, existe uma maneira de acelerar o processo de restauração caso precise me recuperar?

Atualmente, uso um trabalho cron todas as noites que chama mysqldumppara despejar tudo e mantenho 3 dias de backups.

nicudotro
fonte

Respostas:

14

Temos cerca de 90 GB em um MySQL, então aqui estão algumas sugestões:

  • Você pode tentar a seguinte chamada: mysqldump -u USER -pPASS --single-transaction -Q --databases foo bar(Use os documentos para verificar se essas opções funcionam para você.)
  • Se você usar apenas tabelas MYISAM, copiar o banco de dados para outra unidade e tará-lo também poderá ser uma alternativa. Porém, isso não funcionará com o INNODB, pois ele mantém um arquivo adicional. Além disso, você deve testar isso com cuidado.
  • Habilite logs binários e faça backup deles. (Este é provavelmente o meu favorito!)
  • Configure a replicação e faça o backup em um de seus escravos e deixe-o acompanhar o resto. É muito bom quando é executado, mas o problema é fazê-lo funcionar. Replicar não é divertido com o MySQL. :(
  • O seu sistema de arquivos suporta instantâneos? Se isso acontecer, é uma ótima oportunidade para usá-los.
  • Use uma solução comercial, como Amanda .
Até
fonte
10

A melhor maneira seria sem interromper a operação normal. Para sistemas tolerantes a falhas e de alta confiabilidade, você tem 2 bancos de dados mantidos em sincronia e faz backup do secundário. (por exemplo, este artigo da howtoforge )

Caso contrário, leia o manual : use o myseldump como você faz atualmente, ou use o script mysqlhotcopy (use como o mysqldump) ou pare o banco de dados e simplesmente copie os arquivos frm, MID, MYI (usando o rsync).

Eu acho que o mecanismo de parar + copiar arquivos é o mais rápido que você obterá.

gbjbaanb
fonte
3

Se alguns de seus bancos de dados são somente leitura ou modificados, raramente o destacam como um cron menos frequente.

JJ
fonte
2

Para responder sua pergunta - a opção extended_insert funciona bem para mim. Se você tiver recursos suficientes para restaurar, o extended_insert inserirá grandes quantidades de dados em uma única consulta, tornando a restauração mais rápida.


fonte
1

Você realmente deve considerar o Xtrabackup da Percona

O script do wrapper "innobackupex" pode manipular o MyISAM, mas para um backup on-line / sem travamento, todas as suas tabelas devem ser InnoDB.

Felicidades

HTTP500
fonte