Все ленты — последние статьи

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

Создание резервной копии БД 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