Резервное копирование баз данных MySQL MyISAM путем копирования физических папок

У меня есть машина с Windows Server 2008 R2, и на ней 2 базы данных MySQL MyISAM. Эти базы данных довольно большие, так как их общий размер превышает 20 ГБ.

Я обновляю эти базы данных раз в неделю. (Я отключаю свой веб-сайт в процессе, но это нормально для меня.) Затем я выключаю экземпляр сервера MySQL и копирую физические папки в другую резервную папку (с отметкой даты, например: CB1_17_03_2016) на том же сервере.

Однако в последнее время я заметил, что в папках резервных копий отдельные файлы (или большинство из них) - .MYD, .MYI и т. Д. Имеют другую (более старую) дату / время изменения, чем файлы в Фактическая папка данных MySQL. Это похоже на то, что файлы были скопированы БЕЗ только что внесенных изменений. Я использую следующий код в файле .bat для копирования файлов данных:

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

Это копирование происходит сразу после обновления таблиц. Нужно ли мне создавать FLUSH TABLES или что-то в этом роде, прежде чем отключать экземпляр MySQL и копировать файлы?

Заранее благодарим, Тим

1
задан 1 April 2016 в 17:48
3 ответа
1
ответ дан 3 December 2019 в 20:40

То, что вы хотите сделать, называется физическим резервным копированием , в том смысле, что вы копируете необработанные файлы базы данных.

Более безопасный вариант - остановить mysql и скопировать весь каталог - другими словами, то, что вы уже делаете.

Вы видите более старое время модификации в вашей резервной копии, вероятно, потому что, когда вы перезапускаете службу mysql, затрагиваются файлы таблиц и обновляется время их последней модификации.

Чтобы убедиться, что файлы совпадают, вы можете запустить компаратор MD5 для обоих файлов перед перезапуском службы mysql. После сравнения перезапустите службу и проверьте, обновлено ли время последней модификации файла.

0
ответ дан 3 December 2019 в 20:40

Вы не можете просто скопировать файл MySQL, чтобы сделать резервную копию. Он будет непоследовательным и, скорее всего, поврежден.

В Windows с таблицей MyISAM (я предполагаю, что таблиц InnoDB нет) у вас есть следующие параметры резервного копирования:

  • mysqlhotcopy (копирует файлы, но оборачивает их с помощью FLUSH TABLES WITH READ LOCK )
  • mysqldump / mysqlpump
  • подчиненное устройство для холодного резервного копирования
  • Oracle MySQL Enterprise Backup ($$$)
1
ответ дан 3 December 2019 в 20:40

Теги

Похожие вопросы