Создание резервной копии БД MySQL

Таблицы типа MyISAM являются платформо-независимыми, и их можно перемещать с одного сервера на другой независимо от версии сервера и операционной системы, под управлением которой он работает.

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

  • frm — определяет структуры таблицы, имена полей, их типы, параметры таблицы и т.п.;
  • MYD — содержит данные таблицы (расширение образовано от сокращения MYData);
  • MYI — содержит индексную информацию (расширение образовано от сокращения MYIndex).

Однако копирование данных непосредственно из каталога данных работающего сервера может привести к повреждению копий таблиц, причем это может случиться даже в том случае, если MySQL-сервер не обращался к копируемым таблицам в текущий момент. Поэтому перед копированием бинарных данных необходимо либо остановить сервер, либо блокировать таблицы на запись. Блокировку таблиц удобно осуществлять при помощи оператора FLUSH TABLES:

FLUSH TABLES WITH READ LOCK;

Для того чтобы блокировка осталась в силе на время копирования, следует оставить клиент включенным и не выходить из него до тех пор, пока копирование данных не будет завершено.

Для того, чтобы снять блокировку на запись, следует выполнить запрос

UNLOCK TABLES;

В дистрибутив MySQL входит скрипт горячего копирования бинарных файлов баз данных mysqlhotcopy. Данный скрипт действует по той схеме, что описана ранее: блокирует таблицы базы данных base и копирует их бинарное представление по указанному пути /to/new/path:

mysqlhotcopy base /to/new/path

Ссылки по теме:

Оставьте свой отзыв