Сжатие mysqldump
Я пытаюсь понять, как работает mysqldump:
если я выполняю mysqldump на своем компьютере и подключаюсь к удаленному серверу:
mysqldump -u mark -h 34.32.23.23 -pxxx --quick | gzip > dump.sql.gz
будет ли скомпилировать его и отправить его мне как gzip или мой компьютер сначала получит все данные, а затем сжимает его?
Потому что у меня очень большой удаленный db для экспорта, и я хотел бы узнать самый быстрый способ сделать это по сети!
Ответы
Ответ 1
Вы должны использовать ssh + scp,
потому что дамп на localhost быстрее,
и вам нужно всего лишь выполнить scp над gzip (меньшие сетевые издержки)
Вероятно, вы можете это сделать
ssh [email protected] "mysqldump -u mark -h localhost -pxxx --quick | gzip > /tmp/dump.sql.gz"
scp [email protected]:/tmp/dump.sql.gz .
(дополнительный каталог /tmp, должен быть изменен на любой удобный вам каталог)
Ответ 2
Вы пробовали параметр --compress?
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_compress
Ответ 3
Вот как я это делаю:
Сделайте частичный экспорт с помощью SELECT INTO OUTFILE
и создайте файлы на одном сервере.
Если ваша таблица содержит 10 миллионов строк. Выполняйте частичный экспорт по 1 миллиону строк за раз, каждый раз в отдельном файле.
Как только 1-й файл будет готов, вы можете сжать и перенести его. Тем временем MySQL может продолжить экспорт данных в следующий файл.
На другом сервере вы можете начать загрузку файла в новую базу данных.
Кстати, многое из этого может быть написано сценарием.