SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.06.2009 20:56:06

stasbz
Участник
Зарегистрирован: 28.06.2009
Сообщений: 3

Грамотное создание копии БД

Подскажите, необходимо периодически делать копию БД, для восстановления в случае проблем.
Использую комманду
mysqldump --databases --add-drop-table -ulogin -ppassword database > database_22-3-06-09.sql
Правильно ли я задаю команду или надо добавить ее какой-либо параметр? восстанавливать будут командой mysql из командой строки.

где-то прочел, что перед созданием копии БД таким способом необходимо, чтобы не осуществлялась запись в БД. как лучше поступить в данном случае: может быть можно остановить апаче (чтобы не функционировал сайт) и после уже создать БД?

Как вы относитесь к созданию копии БД с помощью phpmyadmin?

Неактивен

 

#2 29.06.2009 10:55:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Грамотное создание копии БД

Обычно от БД требуется целостность связей между таблицами, для этого их нужно блокировать на запись
mysqldump --lock -B dbname | gzip > db.sql.gz

В случае с табличками InnoDB, блокировать их смысла нет, т.к. с базы можно снять целостный снимок:
mysqldump --single-transaction -B dbname | gzip > db.sql.gz

В случае, если у Вас есть бинарный журнал, имеет смысл также включать --master-data=2 (вдруг понадобится
репликацию делать wink )

В случае с табличками MyISAM можно обойтись быстрым бинарным бэкапом (при этом получится не
текстовый файл, а бинарные копии табличек; это работает гораздо быстрее создания текстового файла):
mysqlhotcopy dbname /path/to/backup/dir

Неактивен

 

#3 29.06.2009 15:12:42

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Грамотное создание копии БД

Чтобы не дублировать темы, спрошу здесь же. У меня сейчас стоит задача раз в день переносить часть базы с одного хоста на другой. Я это делаю последовательно:
mysqldump -ulogin -p --opt database_name table_name > my_db.sql | gzip -9 my_db.sql
После этого ручками переношу файлик на новый хост, там разворачиваю:
gzip -d my_db.sql.gz | mysql -ulogin -p database_name < my_db.sql

Можно ли как-то миновать этап ручной переноски файлов и сразу сделать так, чтобы получаемый дамп разворачивался на втором сервере? Причем, обязательно при этом данные должны передаваться в сжатом виде (архив с дампом весит 10 метров).

Неактивен

 

#4 29.06.2009 16:33:22

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Грамотное создание копии БД

mysqldump | gzip | ssh remoteserver "gunzip | mysql"

Или без ssh (если прямая сетка), то можно поднять nc — будет пошустрее:
remote: nc -l -p 1234 | gunzip | mysql
local: mysqldump | gzip | nc remoteserver -p 1234

Неактивен

 

#5 30.06.2009 16:20:11

Magz
Гуру
Откуда: Москва
Зарегистрирован: 18.09.2007
Сообщений: 112

Re: Грамотное создание копии БД

ЧТо-то у меня не получается все в одну команду. А как передать файл с одого сервера на другой через ssh? Я, когда выполняю ssh... он мне просто открывет bash на удаленном сервере.

Неактивен

 

#6 03.07.2009 00:31:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Грамотное создание копии БД

ssh <server> <command>
Просто скопировать на другой сервер можно командой scp file server:/path

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson