Se você quiser fazer backups do MySQL corretamente, sem qualquer tempo de inatividade, você deve replicar o banco de dados para um servidor sobressalente. Ele não precisa ser extremamente poderoso, ele só precisa lidar com a carga de gravação do seu banco de dados mestre. Você não deve usar este servidor em produção. Se a replicação nunca acompanhar, você precisa de um servidor mais poderoso. Você pode verificar comparando o arquivo de log e a posição da saída de
> SHOW MASTER STATUS\G
no mestre e
> SHOW SLAVE STATUS\G
no escravo. Eu acho que o MySQL5 mostrará o atraso de SHOW SLAVE STATUS
.
Quando você está feliz que seu escravo está acompanhando, você pode fazer backups fazendo
- Pare a replicação com
SLAVE STOP;
no escravo - Faça um
mysqldump --opt
no servidor escravo. - Inicie a replicação novamente com
SLAVE START;
no escravo
Se você fizer isso, você terá um backup consistente dos seus bancos de dados. Esse método evita que diferentes bancos de dados ou até mesmo tabelas diferentes do mesmo banco de dados fiquem fora de sincronia e evita tempo de inatividade bloqueando tabelas para gravações enquanto você faz o backup.
Um bom benefício dessa configuração é que você tem uma cópia do banco de dados que pode usar para executar consultas longas e caras que não afetarão seu serviço ao vivo.
Algumas dicas aleatórias:
- Não fique tentado a fazer um backup baseado em arquivo dos arquivos de dados mysql. É mais incômodo do que vale a pena e os dumps do MySQL são mais flexíveis.
- Cuidado com as tabelas de bloqueio do mysqldump durante o despejo.
- Cuidado com as inconsistências nos despejos, a menos que você bloqueie todas as tabelas durante o despejo
- Use
mysqldump --opt
, pois normalmente é a maneira mais rápida de importar o SQL resultante - Descarte quantas vezes você puder. Nós despejamos diariamente porque temos 40 GB ou mais de dados.
- Teste seus lixões em um servidor reserva ocasionalmente para garantir que eles funcionem.