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}`
URL: http://community.livejournal.com/ru_highload/8082.html
Обсуждается: http://www.opennet.dev/tips/info/1407.shtml