Сжатие mysqldump - программирование
Подтвердить что ты не робот

Сжатие mysqldump

Я пытаюсь понять, как работает mysqldump:

если я выполняю mysqldump на своем компьютере и подключаюсь к удаленному серверу:

mysqldump -u mark -h 34.32.23.23 -pxxx  --quick | gzip > dump.sql.gz

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

Потому что у меня очень большой удаленный db для экспорта, и я хотел бы узнать самый быстрый способ сделать это по сети!

4b9b3361

Ответ 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, должен быть изменен на любой удобный вам каталог)

Ответ 3

Вот как я это делаю:

Сделайте частичный экспорт с помощью SELECT INTO OUTFILE и создайте файлы на одном сервере.

Если ваша таблица содержит 10 миллионов строк. Выполняйте частичный экспорт по 1 миллиону строк за раз, каждый раз в отдельном файле.

Как только 1-й файл будет готов, вы можете сжать и перенести его. Тем временем MySQL может продолжить экспорт данных в следующий файл.

На другом сервере вы можете начать загрузку файла в новую базу данных.

Кстати, многое из этого может быть написано сценарием.