Я использую эту команду, чтобы вытащить удаленную базу данных на локальную базу данных:
$ ssh remote.com "mysqldump remotedb | gzip" | gzip -d | mysql localdb
Я вижу, что это запускает кучу отдельных команд в базе данных. Есть более быстрый способ?
Я запускаю команду с локального компьютера, и ее запускает cron.
Обновить
Эти методы приводят к: Потерянному соединению с сервером MySQL во время запроса при выгрузке таблицы.
Если вы определите, что mysqldump
команда - ваше узкое место, вы можете попробовать использовать MyDumper вместо.
Не похоже, что вы можете транслировать вывод напрямую на целевой сервер, но вы можете использовать rsync
сколько угодно раз, пока происходит дамп, и еще раз, когда он закончится, чтобы окончательный rsync был относительно быстрым.
Вы можете заставить MyDumper выполнять сжатие с помощью -c
, сжать отдельно с gzip
или используйте -e "ssh -C"
в твоем rsync
команда, чтобы SSH обрабатывал сжатие.
Может быть. Это зависит от узкого места в вашей системе. Если у вас быстрая сеть, а узким местом является процесс дампа, то сделать снимок LVM и выполнить синхронизацию файлов данных будет довольно быстро. В противном случае, если сеть является узкое место, вы, вероятно, приблизились к пределу того, чего собираетесь достичь.
Я не вижу проблем с этой командой. Ты:
Этого должно быть достаточно. Понятно, что время выполнения такой команды зависит от скорости соединения и размера БД.
Если вы столкнулись с большим временем выполнения, вы можете подумать об альтернативном способе синхронизации ваших БД. Например, вы можете попробовать экспортировать только изменения, а не всю БД.