Простой вопрос об использовании mysqldump

2096
morpheous

У меня есть веб-сайт LAMP с бэкэндом MySQL с движком InnoDb для таблиц

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

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

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

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

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

0

4 ответа на вопрос

1
Janne Pikkarainen

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

РЕДАКТИРОВАТЬ :: Добавлены официальные ссылки на документы репликации MySQL.

Длинное объяснение о репликации MySQL: http://dev.mysql.com/doc/refman/5.1/en/replication.html

Инструкции по настройке репликации: http://dev.mysql.com/doc/refman/5.1/ru/replication-howto.html

Janne: У вас есть URL, который показывает, как это сделать? Так как это мой первый раз, я бы предпочел использовать набор инструкций, которые были «опробованы и проверены», вместо того, чтобы пытаться что-то собрать вместе. Поскольку успешное резервное копирование / восстановление очень важно. morpheous 14 лет назад 0
Morpheous: Конечно. Я надеюсь, что собственная документация MySQL достаточно "опробована и протестирована". Я отредактировал мой предыдущий ответ. Janne Pikkarainen 14 лет назад 0
1
Remy

Я согласен с Джанной, использование репликации - это обычный способ сделать что-то. Но вы можете просто использовать MySqlDumb. Вам не нужно выключать БД для этого. Это будет просто немного безразлично некоторое время. Зависит от того, какой тип приложения и сколько у вас данных.

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

0
ice cream

Я использую модифицированную версию скрипта, найденную здесь:

http://bash.cyberciti.biz/backup/backup-mysql-database-server-2/

(Я просто удалил некоторые строки, которые создают и устанавливают разрешения для каталогов резервного копирования)

Это работает довольно хорошо для меня на живом веб-сервере Ubuntu

0
Alex Angelico

Вам не нужно выключать базу данных для использования MySQL Dump. Это скрипт, который я использую в Windows

@echo Dumping data...  "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump.exe" --add-drop-table=true -h localhost -u root -ppassword mydatabase table1 table2 table3 1> %1 

Если вы хотите запустить это напрямую, просто используйте

mysqldump.exe" --add-drop-table=true -h localhost -u root -p mydatabase table1 table2 table3 > datadump.sql 

И собирается попросить пароль. В этом примере я просто создаю резервные копии некоторых тальбов (от 1 до 3), но вы можете сделать резервную копию всего. Есть много разных вариантов. Для восстановления командный файл:

@echo Loading Data... @"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe" -u root -ppasword -h localhost mydatabase 0< %1 

Или просто

mysql.exe" -u root -p -h localhost mydatabase < datadump.sql