Como fazer backup de um banco de dados MySQL ativo sem bloquear tabelas usando o mysqldump

Conteúdo

Logotipo do MySQL

Fazer um backup do MySQL não é muito difícil: apenas execute mysqldump e a saída para um arquivo, mas também não foi projetado para ambientes de produção.

No princípio, executar o mysqldump levou apenas alguns segundos, então não foi grande coisa que tudo quebrou, mas com o tempo nossos backups ficaram tão grandes que todo o site pararia de funcionar por meia hora se executássemos um backup. Mesmo com muito cache, isso sempre significa que alguém recebe uma página de erro todos os dias. O problema é que o mysqldump bloqueia as tabelas do banco de dados antes de exportar para que coisas novas não sejam inseridas enquanto você está exportando.

A resposta é usar o --single-transaction argumento, o que lhe dará um backup consistente sem bloquear tudo. O que realmente acontece é que o mysqldump iniciará uma nova transação SQL, liberar todas as gravações pendentes e, em seguida, concluir o backup como parte de uma transação que não impede que outras atualizações aconteçam.

Observação: a única ressalva é que as tabelas em seu banco de dados devem usar innodb em vez de myisam. Uma vez que tem sido o valor padrão por um tempo, provavelmente deve ser bem.

Então, agora que resolvemos, basta adicionar o argumento à sua rotina normal de backup, Então:

mysqldump -uUser -pPass -hHost --banco de dados de transações únicas > backup.bak

E agora seus backups serão muito mais confiáveis.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.