Назад | Перейти на главную страницу

Более быстрое извлечение базы данных MySQL с удаленного компьютера на локальный

Я использую эту команду, чтобы вытащить удаленную базу данных на локальную базу данных:

$ 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 и выполнить синхронизацию файлов данных будет довольно быстро. В противном случае, если сеть является узкое место, вы, вероятно, приблизились к пределу того, чего собираетесь достичь.

Я не вижу проблем с этой командой. Ты:

  1. Экспорт mysql и сжатие дампа на удаленной машине.
  2. Получение сжатого дампа на локальный компьютер и его распаковка.
  3. Импорт дампа в локальный mysql.

Этого должно быть достаточно. Понятно, что время выполнения такой команды зависит от скорости соединения и размера БД.

Если вы столкнулись с большим временем выполнения, вы можете подумать об альтернативном способе синхронизации ваших БД. Например, вы можете попробовать экспортировать только изменения, а не всю БД.