Назад | Перейти на главную страницу

Нужно ли мне отключать свой веб-сайт только для того, чтобы использовать mysqldump?

У меня есть веб-сайт LAMP с серверной частью mysql с движком InnoDb для таблиц

Я хотел бы иметь возможность использовать mysqldump для периодического создания дампов базы данных - БЕЗ необходимости останавливать сервер mysql (т.е. закрывать веб-сайт) на время резервного копирования.

Я удивлен, что нигде не могу найти эту информацию - даже в документации mySQL. Много говорится о mysqlhotcopy, но это работает только для таблиц IMSAM - и поэтому меня не интересует / не используется.

Кто-нибудь знает, могу ли (как?) Я использовать mysqldump для копирования / дампа базы данных, которая все еще используется?

Ссылка на официальную документацию была бы очень полезной, так как я хочу убедиться, что все правильно поняла.

Я работаю на Ubuntu 10.0.4 LTS

Нет, вам не нужно отключать веб-сайт, чтобы сделать резервную копию MySQL. Вы не только можете использовать mysqldump в работающей базе данных MySQL, но на самом деле сервер должен работать, чтобы mysqldump мог подключиться к нему. Тот факт, что вы используете таблицы InnoDB, является плюсом, поскольку любые блокировки будут кратковременными, и очень маловероятно, что ваши пользователи когда-либо узнают о них.

Если вы вообще нервничаете или не решаетесь выполнять резервное копирование, нет ничего страшного в том, чтобы запустить другой экземпляр MySQL и настроить репликацию главный / подчиненный, выполняя резервное копирование на подчиненном устройстве. Таким образом, вы можете быть полностью уверены, что резервные копии не повлияют на веб-сайт.

Да, вы можете использовать mysqldump против работающего сервера - вы должны - mysqldump просто подключается к серверу и запускает команды SQL на сервере для создания файла дампа.

Если вас беспокоит согласованность файла дампа, вы можете использовать --single-transaction если вы работаете в основном с таблицами InnoDB. Он завершит дамп транзакцией.

mysqldump может повлиять на производительность вашего сервера (как и любая резервная копия), поэтому проверьте, прежде чем запускать его в производство.

Другой вариант, если вы используете LVM под MySQL, - использовать mylvmbackup - при этом создается моментальный снимок тома LVM, поэтому вы можете создавать резервные копии файлов данных, как хотите.

Это зависит от того, насколько высока у вас нагрузка, но предложение Янне - это то, что большинство администраторов выбирают из-за нагрузки при выполнении резервного копирования.

Что касается InnoDB, у вас не так много вариантов резервного копирования:

У меня нет опыта работы ни с одним из них, но я исследовал это несколько месяцев назад, когда мы рассматривали переход MyISAM на InnoDB (у нас не было, слишком много полнотекстовых поисков по индексу).

(А, я вижу, вы разместили это как суперпользователю, так и здесь. Вот копипаста.)

Обычный способ сделать это - установить подчиненный экземпляр MySQL и взять оттуда резервную копию. Вам не обязательно нужен отдельный физический сервер для подчиненного MySQL, вполне нормально запускать его на том же сервере (если у вас есть дисковое пространство и некоторая память для него; со стороны процессора, в основном простаивающий подчиненный MySQL будет не навреди).

Использование mysqldump для резервного копирования таблиц InnoDB рассматривается в официальной документации здесь.

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

У вас не будет никаких проблем. Я использую его каждый день для периодического резервного копирования множества баз данных с частотой до 15 минут.

Чтобы убедиться, что ваши данные находятся в согласованном состоянии, вы должны использовать параметр --single-transaction при вызове mysqldump. Вот и все.