Práticas recomendadas para fazer backup do servidor MySQL:
Replicação MySQL
Replicação de instalação no MySQL. Você precisará configurar o servidor Master e Slave. Todas as leituras e gravações no banco de dados podem ir para o seu servidor escravo. A vantagem de ter a replicação é que você pode fazer um backup do servidor escravo sem interromper o servidor mestre. Seu aplicativo continuará funcionando no mestre sem nenhum tempo de inatividade.
Usando o MySQL Dump
Se o seu conjunto de dados é pequeno (eu percebo que "pequeno" é um termo relativo .. para qualificá-lo, digamos <10GB), o mysqldump provavelmente funcionará muito bem. É fácil, está online e é muito flexível. Apenas algumas coisas que o mysqldump pode fazer: faça backup de tudo ou apenas de certos bancos de dados ou tabelas, faça backup apenas do DDL, otimize o dump para uma restauração mais rápida, faça com que o arquivo sql resultante seja mais compatível com outros RDBMSes e muito mais.
No entanto, as opções mais importantes estão relacionadas à consistência do seu backup. Minhas opções favoritas são: - única transação: essa opção fornece um backup consistente, se (e somente se) as tabelas estiverem usando o mecanismo de armazenamento InnoDB. Se você possui alguma tabela MyISAM não somente leitura, não use essa opção ao fazer backup delas. --master-data = 2: essa opção garantirá que seu dump seja consistente (executando um bloqueio de todas as tabelas, a menos que você tenha adicionado a opção - única transação). A opção --master-data também registra a posição do log binário no arquivo de despejo resultante (= 2 faz com que esta linha seja um comentário no arquivo de despejo)
Nota final sobre o mysqldump: lembre-se de que o tempo de restauração pode ser significativamente maior que o tempo de backup. Isso dependerá de vários fatores, por exemplo, quantos índices você possui.
Instantâneo LVM
Para aqueles que possuem conjuntos de dados maiores, um backup físico é o caminho a percorrer. Embora você possa fazer um backup a frio (ou seja, desligar o serviço MySQL, copiar o diretório de dados, reiniciar o serviço), muitas pessoas não desejam tempo de inatividade. Minha solução favorita é instantâneos. Isso pode estar quente (para InnoDB) ou exigir um breve bloqueio (para MyISAM). Não se esqueça de incluir todos os seus dados (inclua os arquivos ib_log). O Lenz fornece um bom utilitário para ajudar com isso: http://www.lenzg.net/mylvmbackup/
Usando o MySQL Enterprise Backup
Vantagens de usar o MySQL Enterprise Backup:
- Os backups "quentes" de tabelas do InnoDB são totalmente online, sem bloquear o backup apenas de tabelas ou espaços de tabela específicos
- Faça backup apenas dos dados que foram alterados desde um backup anterior
- Backup compactado - economiza até 90% de armazenamento e muito mais.
Referência:
http://www.mysql.com/products/enterprise/backup/features.html
http://www.mysql.com/products/enterprise/backup.html
--single-transaction
mas não se esqueça de adicionar--events --routines
e eu sempre uso--triggers
também, mesmo que esteja ativado por padrão, pois pode ser desativado no my.cnf. Eu diria que é sempre bom usá-las como prática padrão, se você possui atualmente esses tipos de objetos no banco de dados ou não.