Назад | Перейти на главную страницу

Резервное копирование баз данных 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 и копировать файлы?

Заранее спасибо, Тим

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

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

  • mysqlhotcopy (копирует файлы, но обертывает их FLUSH TABLES WITH READ LOCK)
  • mysqldump / mysqlpump
  • раб для холодного резервного копирования
  • Корпоративное резервное копирование Oracle MySQL ($$$)

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

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

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

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