Подскажите пожалуйста, как забэкапить базу из больших MyISAM таблиц, в которые постоянно добавляются новые записи?
mysqldump лочит таблицы на запись и во время дампа база фактически простаивает. Конечно можно разбить большие таблицы на много маленьких, но это долго реализовывать - много запросов придётся переписать. Репликацию тоже не очень хочется прикручивать.
Иметь моментальный слепок базы мне не нужно. Если во время дампа записи в таблицах будут меняться/добавляться, то это приемлемо.
March 3 2007, 13:40:55 UTC 5 years ago
Кроме mysqldump, можно делать:
FLUSH TABLES WITH READ LOCK;
// копировать файлы MyISAM таблиц
UNLOCK TABLES;
но опять таки таблицы будут залочены на это время. Кроме того FLUSH TABLES WITH READ LOCK может занять много времени т.к. он будет ждать окончания выполнений всех запущенных запросов.
March 3 2007, 17:07:50 UTC 5 years ago
Простыми словами: делается read lock на дата и переписывается всё куда укажете
mysqlhotcopy db_name destination
Например: mysqlhotcopy mysql /tmp/
В myisam по другому нельзя. Если очень большая database, то делать бэкапы со слейва.
mysqldump очень долий и могут быть проблемы.
March 3 2007, 17:10:55 UTC 5 years ago
March 3 2007, 17:38:36 UTC 5 years ago
http://www.mysqlperformanceblog.com/200
March 3 2007, 21:10:53 UTC 5 years ago
March 3 2007, 21:48:13 UTC 5 years ago
1. FLUSH TABLES WITH READ LOCK;
2. http://www.freebsd.org/doc/en_US.ISO885
3. UNLOCK TABLES;
4. копируем директории с базой или отдельные таблицы
5. отцепляем снэпшот
6. на всякий случай чекаем таблицы
7. сжимаем таблицы и отправляем их куда надо.
Жду комментариев/рекомедаций/предложений/опи
Под Линукс есть даже скриптик специальный: http://lenz.homelinux.org/mylvmbackup/
March 9 2007, 22:54:02 UTC 5 years ago
(echo "FLUSH TABLES WITH READ LOCK;"; echo "\! ${MOUNT} -u -o snapshot /${SNAPPART}/.snap/backup /${SNAPPART}"; echo "UNLOCK TABLES;" ) | ${MYSQL} --user=root --password=`${CAT} ${MYSQLROOTPW}`March 4 2007, 12:43:59 UTC 5 years ago
March 4 2007, 13:18:36 UTC 5 years ago
Сейчас MySQL Inc делают партишнинг. Вот с ним можно будет что-то пробовать. Хотя разбивать большие таблицы на несколько маленьких всёравно лучше на уровне приложения. Гибче получается и можно разнести на несколько машин.
March 4 2007, 13:27:50 UTC 5 years ago
March 10 2007, 06:29:32 UTC 5 years ago
March 11 2007, 17:58:13 UTC 5 years ago
March 17 2007, 19:02:50 UTC 5 years ago
почитайте здесь
почитайте здесь: http://dev.mysql.com/doc/refman/5.0/eAnonymous
April 26 2007, 02:03:58 UTC 5 years ago
mysqldump --single-transaction?