Бэкап больших MyISAM таблиц без длительной блокировки в MySQL |
[исправить] |
mysqldump лочит таблицы на запись и во время дампа база фактически простаивает.
Решения:
1. Репликация и бэкап со слейва;
2. mysqlhotcopy, делает "read lock" на и копируются файлы баз, т.е.:
FLUSH TABLES WITH READ LOCK;
// копировать файлы MyISAM таблиц
UNLOCK TABLES;
FLUSH TABLES WITH READ LOCK может занять много времени т.к. он будет ждать
окончания выполнений всех запущенных запросов.
3. Минимизация блокировки через использование снапшотов ФС:
FLUSH TABLES WITH READ LOCK;
Делаем снэпшот ФС, где лежат базы мускула
UNLOCK TABLES;
Копируем директории с базой или отдельные таблицы
Отцепляем снэпшот
Скрипт для Linux (использует LVM снапшот): http://lenz.homelinux.org/mylvmbackup/
Cкрипт для FreeBSD:
(echo "FLUSH TABLES WITH READ LOCK;"; echo "\! ${MOUNT} -u -o snapshot /${SNAPPART}/.snap/backup /${SNAPPART}"; echo "UNLOCK TABLES;" ) |
${MYSQL} --user=root --password=`${CAT} ${MYSQLROOTPW}`
|
|
|
|
Раздел: Корень / Программисту и web-разработчику / SQL и базы данных / MySQL специфика / Оптимизация и администрирование MySQL |