Restaura o mysql para qualquer hora específica do passado?

1

Na semana passada, um de nossos desenvolvedores executou uma consulta de atualização no mestre de produção do mysql update xxx set yyy=zzz , sem onde . Nós backup do mysql todos os dias 00:01, e ele fez isso em 17: xx, existe alguma maneira de restaurar o banco de dados para qualquer momento específico do passado? Aparentemente, não podemos tirar fotos a cada segundo.

Recupere o procedimento:

  1. Restaurar o mysql para backup, diga 2017-06-11 00:01:00
  2. mysqlbinlog binglog * para o arquivo de texto queries.sql
  3. remova as consultas antes de 2017-06-11 00:01:00
  4. remova as consultas após update xxx set yyy=zzz
  5. mysql < queries.sql
por Sato 12.06.2017 / 05:40

1 resposta

3

Você precisará restaurar a partir do backup anterior. Você pode usar apenas ROLLBACK durante uma transação, ou seja, se começar com BEGIN; , poderá fazer alterações e, em seguida, confirmá-las com COMMIT; ao desfazer com ROLLBACK; . Não há outro histórico de desfazer do que isso.

Não deve haver necessidade de backups a cada segundo, mas se houver um risco de que isso aconteça novamente, considere o uso de sqldumps mais frequentes - ou não permitir que os desenvolvedores brinquem com o banco de dados de produção.

Se você tivesse o log binário ativado, você poderia refazer , em vez de desfazer, todas as modificações feitas após o backup. Como o log binário armazena apenas consultas, não os dados, isso deve ser feito a partir do backup, e não do estado atual. Se o erro aconteceu na semana passada, isso pode não ser uma opção agora, mas é bom, pelo menos, para o futuro.

O erro sendo update xxx set yyy=zzz; você recebeu apenas uma coluna com dados falsos. Dependendo da coluna e da quantidade de outras tabelas que dependem desses dados, você pode impedir a restauração de todo o banco de dados para um estado anterior a partir do último backup. Se você tiver sorte, poderá extrair apenas essa tabela específica do dump e modificar as INSERT consultas para UPDATE consultas para a única coluna.

    
por 12.06.2017 / 05:55

Tags