Backup de bancos de dados MySQL MyISAM, copiando as pastas físicas

1

Eu tenho uma máquina Windows Server 2008 R2 e nela eu tenho 2 bancos de dados MySQL MyISAM. Esses bancos de dados são bastante grandes, pois têm mais de 20 GB em tamanho combinado.

Eu atualizo esses bancos de dados uma vez por semana. (Eu desabilito meu site no processo - mas isso é bom para mim). Em seguida, desligo a instância do servidor MySQL e copio as pastas físicas para outra pasta de backup (datamped - eg: CB1_17_03_2016) no mesmo servidor.

O que eu notei ultimamente é que, nas pastas de backup, os arquivos individuais (ou a maioria deles) - .MYD, .MYI, etc. têm uma data / hora de modificação diferente (mais antiga) do que os arquivos no arquivo. pasta de dados real do MySQL. É como se os arquivos fossem copiados sem as alterações feitas. Eu estou usando o seguinte código em um arquivo .bat para copiar os arquivos de dados:

REM Switch off MySQL service, backup the newly updated folders, and switch on MySQL service again.

SET BackupFolder=C:\Backups\Data

FOR /f "tokens=1-5 delims=/ " %%d in ("%date%") DO SET Folder1=%BackupFolder%\CB1_%%d_%%e_%%f
FOR /f "tokens=1-5 delims=/ " %%d in ("%date%") DO SET Folder2=%BackupFolder%\CB2_%%d_%%e_%%f

SET MySqlFolder=...the folder where the MySQL data files are...
robocopy "%MySqlFolder%\cb1" "%Folder1%"
robocopy "%MySqlFolder%\cb2" "%Folder2%"

cd "%MySQLPath%" (set to MySql.exe location)
NET START MySQL

Esta cópia ocorre imediatamente após a atualização das tabelas. Preciso emitir um FLUSH TABLES ou algo assim antes de desligar a instância do MySQL e copiar os arquivos?

Obrigado antecipadamente, Tim

    
por user3480610 01.04.2016 / 16:48

3 respostas

1

talvez, use o seguinte método:

MySQL :: MySQL 5.7 Manual de Referência :: 4.5.4 mysqldump - Um programa de backup de banco de dados

    
por 01.04.2016 / 16:56
1

Você não pode simplesmente copiar o arquivo MySQL para fazer um backup. Será inconsistente e, provavelmente, corrupto.

No Windows com a tabela MyISAM (suponho que não existam tabelas InnoDB) você tem as seguintes opções de backup:

  • mysqlhotcopy (copia arquivos mas envolve com FLUSH TABLES WITH READ LOCK )
  • mysqldump / mysqlpump
  • um escravo para backups frios
  • Backup do MySQL da Oracle ($$$)
por 01.04.2016 / 17:25
0

O que você deseja fazer é chamado de backup físico , no sentido em que você está copiando os arquivos de banco de dados brutos.

A aposta mais segura é parar o mysql e copiar o diretório inteiro - em outras palavras, o que você já está fazendo.

Você vê um tempo de modificação mais antigo em seu backup, provavelmente porque, quando você reinicia o serviço mysql, os arquivos da tabela são tocados e sua hora da última modificação é atualizada.

Para ter certeza de que os arquivos são os mesmos, você pode executar um comparador MD5 em ambos os arquivos, antes de reiniciar o serviço mysql. Após a comparação, reinicie o serviço e verifique se a hora da última modificação do arquivo está atualizada.

    
por 01.04.2016 / 19:41