Для любого администратора, который отвечает за работоспособность БД MySQL важным фактором является корректный backup данной БД.
Утилита mysqldump, которая входит в дистрибутив MySQL и служит для организации базового backup`ирования небольших БД, меня не устраивает.
Причины достаточно просты:
- можно указать 1 кодировку для БД, что ведет к таким косякам, например данные в БД в cp1251, кодировка при реализации backup - latin1 в итоге получаем полный дамп "????" вместо данных.
- в результате работы утилиты mysqldump получается текстовый файл с sql коммандами, а если БД у вас несколько десятков GB, то восстановление может занять несколько часов или даже дней.
Поэтому я выбрал для себя и для реализации стратегии резервирования данных технологию мгновенных снимков ФС (snapshots). Технология мгновенных снимков ФС позволяет реализовать полноценное резервирование БД, быстрое восстановление данных БД в случае отказа дисковой подсистемы, ошибки ПО, оборудования и т.д.
Snapshots доступны как для Linux в виде lvm snapshots, так и для FreeBSD. Базовая ФС для FreeBSD - UFS2 достаточно давно поддерживает технологию мгновенных снимков ФС. Далее я опишу основную логику создания резервных копий БД и приведу примеры простых скриптов для реализации функции резервирования БД при помощи снапшотов.