none
Restauração do Windows apaga dados de uma base MySQL RRS feed

  • Pergunta

  • Olá,

    Estamos com uma situação onde a restauração do Windows (Restauração do sistema) está apagando dados de uma base MySQL. Após a restauração ser concluída a base de dados volta o seu estado (ou seja com as informações) do dia e hora da ponto de restauração que foi escolhido.

    Já coloquei a pasta de dados fora da pasta de arquivos de programas, o MySQL não está nem instalado, foi apenas criado o serviço na mão. Mesmo assim, depois que a restauração é concluída, os dados são restaurados também.

    Alguém sabe dizer o que devo fazer para que isso não aconteça? Como fazer para que a restauração do Windows não atinja os dados do MySQL?

    Abraços.

    terça-feira, 11 de abril de 2017 17:24

Respostas

  • Após vários testes consegui determinar que o problema ocorre quando a base utiliza tabelas com engine InnoDB e o parâmetro innodb_file_per_table está marcado como 1 (que é o padrão nas versões mais recentes desses bancos). Nestas situações o MySQL e o MariaDB gravam um arquivo com a extensão .idb para cada tabela do banco. Esses arquivos .idb são diretamente afetados pela restauração não importa onde estejam dentro do "Disco local C". Ao alterar o padrão innodb_file_per_table para 0 o gerenciador da base salva todas as informações num arquivo único na pasta ./data com o nome ibdata1 (sem extensão). Esse arquivo não foi afetado pela restauração em vários testes feitos nas versões 7 e 10 do Windows.

    Em resumo, a solução reside na configuração do banco para usar innodb_file_per_table=0 e não 1.

    Vale ressaltar que essa opção não é mais a padrão tanto para o MariaDB como para o MySQL. As formas mais recentes de armazenamento de dados (Barracuda) estão armazenando os dados nos arquivos .ibd (um por tabela). Sendo assim, ainda acho importante esse assunto ser discutido, pois eventualmente mais alguém poderá ser afetado pelo mesmo problema.

    Atenciosamente,

    Filipe.

    • Marcado como Resposta Filipe Vercesi terça-feira, 18 de abril de 2017 20:28
    • Não Marcado como Resposta Filipe Vercesi terça-feira, 18 de abril de 2017 20:28
    • Marcado como Resposta Filipe Vercesi terça-feira, 18 de abril de 2017 20:28
    terça-feira, 18 de abril de 2017 20:28

Todas as Respostas

  • Filipe, Boa noite!

    Como a ferramenta MySql estar diretamente ligada ao sistema, acredito que nãos seja possível você fazer uma restauração do sistema sem que perca os dados salvos.

    Uma sugestão seria realizar um backup do seu banco de dados, antes de executar uma restauração.

    Aguardo retorno.

    Atenciosamente,

    terça-feira, 11 de abril de 2017 22:52
  • Bom dia Rennan,

    Realmente a ideia de fazer um back-up é o ideal.

    Porém, acontece que o Windows pode automaticamente fazer uma restauração de sistema caso ele detecte que algum problema crítico, como no caso de uma atualização mal sucedida ou a instalação de um driver que tenha causado problemas graves. Em casos como este o back-up não pode ser feito.

    Além disso, é interessante que essa situação não ocorre com bancos SQL Server (Eu fiz o teste).

    Abraços.

    quarta-feira, 12 de abril de 2017 12:31
  • Será que não vem ao caso utilizar algum ambiente de teste para verificar as atualizações e qualquer coisa você utilizar a ferramente "Show or hide updates" para barrar determinada atualizaão indesejada.

    No link abaixo tem a opção de realizar o download da ferramenta.

    https://support.microsoft.com/en-us/help/3073930/how-to-temporarily-prevent-a-driver-update-from-reinstalling-in-windows-10

    Abraço,


    quarta-feira, 12 de abril de 2017 12:48
  • Rennan,

    Na verdade essa situação acontece em clientes nossos que tem o banco instalado na máquina de uso diário onde eles não vão ter esse cuidado. Eles colocam o PC na mão de alguém que faz a restauração e nem pergunta antes só vem o problema depois.

    Fiz vários testes e consegui determinar que o Windows realmente volta arquivos de dados da base (extensão .ibd) a uma versão anterior ao ponto de restauração. Comparei os arquivos antes e depois de uma restauração. O tamanho e a data de modificação deles volta a ser o que era no momento em que criei o ponto de restauração.

    O que realmente precisaria fazer é dizer pro Windows não mexer nessa pasta quando uma restauração for feita.

    Sabes como eu poderia fazer isso?

    Abraços.

    quinta-feira, 13 de abril de 2017 18:45
  • Então, preciso verificar se existe alguma maneira ou GPO para que a restauração não afete uma determinada pasta.

    Você não pode desativar a opção de restauração, para que os usuários não consigam mais executar essa atividade?

    Segue o Link para desativar a restauração do Windows.

    http://br.ccm.net/faq/7850-desativar-reativar-a-restauracao-do-sistema-no-windows-7

    Seu problema deve ser resolvido.

    Aguardo retorno.


    quinta-feira, 13 de abril de 2017 19:36
  • Rennan,

    A tua ideia já passou pela minha cabeça. Mas... por outro lado a Restauração do sistema tem o seu lado positivo e eu não gostaria de sair desativando isso nas máquinas dos clientes.

    Deve haver uma forma de "ensinar" o Windows a não mexer com os dados do MySQL/MariaDB. Veja que com o SQL Server isso não ocorre. Você pode restaurar quantas vezes quiser, os dados vão continuar lá como estavam antes da restauração iniciar. 

    Parece até marcação né?

    Abraços.

    quinta-feira, 13 de abril de 2017 20:11
  • Pare mesmo rs.

    A restauração do sistema tem várias extensões de arquivos que já são pré-definidas, então a única opção seria desativar a restauração e criar alguma pasta na rede e caso o usuário faça a restauração, a mesma não cause nenhum impacto, (no caso verificar uma forma de salvar os Sql).

    Abraço.

    • Marcado como Resposta Guilherme Macedo S segunda-feira, 17 de abril de 2017 12:45
    • Não Marcado como Resposta Filipe Vercesi terça-feira, 18 de abril de 2017 20:19
    sexta-feira, 14 de abril de 2017 02:01
  • Bom dia,

    Por falta de retorno, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma nova thread.

    Atenciosamente


    Guilherme Macedo S

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 17 de abril de 2017 12:45
  • Após vários testes consegui determinar que o problema ocorre quando a base utiliza tabelas com engine InnoDB e o parâmetro innodb_file_per_table está marcado como 1 (que é o padrão nas versões mais recentes desses bancos). Nestas situações o MySQL e o MariaDB gravam um arquivo com a extensão .idb para cada tabela do banco. Esses arquivos .idb são diretamente afetados pela restauração não importa onde estejam dentro do "Disco local C". Ao alterar o padrão innodb_file_per_table para 0 o gerenciador da base salva todas as informações num arquivo único na pasta ./data com o nome ibdata1 (sem extensão). Esse arquivo não foi afetado pela restauração em vários testes feitos nas versões 7 e 10 do Windows.

    Em resumo, a solução reside na configuração do banco para usar innodb_file_per_table=0 e não 1.

    Vale ressaltar que essa opção não é mais a padrão tanto para o MariaDB como para o MySQL. As formas mais recentes de armazenamento de dados (Barracuda) estão armazenando os dados nos arquivos .ibd (um por tabela). Sendo assim, ainda acho importante esse assunto ser discutido, pois eventualmente mais alguém poderá ser afetado pelo mesmo problema.

    Atenciosamente,

    Filipe.

    • Marcado como Resposta Filipe Vercesi terça-feira, 18 de abril de 2017 20:28
    • Não Marcado como Resposta Filipe Vercesi terça-feira, 18 de abril de 2017 20:28
    • Marcado como Resposta Filipe Vercesi terça-feira, 18 de abril de 2017 20:28
    terça-feira, 18 de abril de 2017 20:28