2009-03-29 3 views

ответ

12

Вы можете просто скопировать всю папку данных.

Посмотрите High Performance MySQL - transferring large files

+0

Приветствия, это намного лучше. –

+0

Эта ссылка кажется мертвой. Однако, вот что я сделал. Перейдите в терминал на источнике и введите «locate my.cnf». откройте файл в текстовом редакторе fav (vi /etc/mysql/my.cnf) и оставьте строчку «datadir =». Тогда все, что вам нужно сделать, это повторить это на целевом сервере. Теперь вы должны сжать содержимое этой папки в источнике и ftp до цели. Затем просто разархивируйте его в каталоге данных. – Jason

0

я не имею никакого опыта делать это с MySQL, но мне кажется, что узкое место передачи фактических данных?

4oo MB is not это много. Но если дамп -> SCP медленный, я не думаю, что подключение к серверу db из окна удаления будет быстрее?

Я предлагаю сбрасывать, сжимать, затем копировать по сети или записывать на диск и вручную переносить данные. Сжатие такого свала, скорее всего, даст вам неплохую степень сжатия, так как, скорее всего, существует множество повторных данных.

4

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

1

попробуй импортировать дамп на новом сервере с помощью MySQL консоли, а не Подсобное программного обеспечение

0

Если вы копируете только все базы данных сервера, скопируйте весь каталог /data.

Если вы просто скопировать один или несколько баз данных и добавление их к существующему серверу MySQL:

  1. создать пустую базу данных в новом сервере, настроить права доступа для пользователей и т.д.
  2. скопировать folder для базы данных в /data/databasename на новый сервер /data/databasename
2

400M действительно не большая база данных; передача его на другую машину займет всего несколько минут по сети 100 Мбит. Если у вас нет сетей 100M между вашими машинами, у вас большие проблемы!

Если они работают с одной и той же версией MySQL и имеют идентичный (или аналогичный ENOUGH) my.cnf, и вам просто нужна копия всего данных, можно скопировать весь каталог данных сервера (в то время как оба экземпляры останавливаются, очевидно). Сначала вам нужно будет удалить каталог данных на конечном компьютере, но, вероятно, вам все равно.

Резервное копирование/восстановление обычно замедляется восстановлением, чтобы восстановить структуру таблицы, а не копию файла. Скопировав файлы данных напрямую, вы избегаете этого (с учетом указанных выше ограничений).

+0

Они не в одном цвете, к сожалению. –

+0

400MB невелика, и SCP предлагает сжатие. На практике это примерно на 2 раза быстрее. –

6

Использование ssh позволяет напрямую передавать ваши данные через Интернет. Сначала настройте SSH-ключи для входа без пароля.Далее, попробуйте что-то вроде этого:

$ mysqldump -u db_user -p some_database | gzip | ssh [email protected] 'gzip -d | mysql -u db_user --password=db_pass some_database' 

Примечания:

  • Основная идея заключается в том, что вы просто демпинг стандартный вывод прямо в команду с другой стороны, что SSH идеально подходит для.
  • Если вам не нужно шифрование, вы можете использовать netcat, но это, вероятно, не стоит
  • Текстовые данные SQL переходят через сжатый провод!
  • Поэзия: db_user Пользователь и some_database в вашей базе данных. someuser является системным пользователем (Linux) , а не пользователем MySQL.
  • Вы также должны будете использовать --password долгий путь, потому что, имея подсказку mysql, у вас будет много головной боли.
+2

вам не нужно использовать ssh. Вы могли бы просто сделать: mysqldump -u db_user -p some_database | mysql -u db_user -p -h newserver some_database –

+0

Хорошая точка, спасибо! – JasonSmith

+1

Но, как правило, отключен удаленный доступ в mysql, по крайней мере, где я. В то время как SSH легко доступен. Теоретически можно получить правильные гранты, но ответ ssh для меня является наиболее реалистичным вариантом использования. –

2

При переносе сервера:

файлы дампа может быть очень большим, так что лучше сжимать его перед отправкой или использовать флаг -C УПП. Наша методология передачи файлов заключается в создании полного дампа, в котором инкрементные журналы сбрасываются (используйте -master-data = 2 -flush logs, пожалуйста, проверьте, чтобы вы не испортили хост-хосты, если у вас есть). Затем мы копируем дамп и воспроизводим его. Впоследствии мы снова очищаем журналы (mysqladmin flush-logs), берем недавний инкрементный журнал (который не должен быть очень большим) и воспроизводить только его. Продолжайте делать это до тех пор, пока последний инкрементный журнал не будет очень мал, чтобы вы могли остановить базу данных на оригинальной машине, скопировать последний инкрементный журнал и затем воспроизвести его - это займет всего несколько минут.

Если вы просто хотите скопировать данные с одного сервера на другой:

mysqldump -C --host=oldhost --user=xxx --database=yyy -p | mysql -C --host=newhost --user=aaa -p 

Вам нужно будет установить пользователь БД правильно и обеспечить доступ к внешним хостам.

0

Мне нравится использовать BigDump: Shagmed Mysql Dump Importer после экспорта моей базы данных со старого сервера.

http://www.ozerov.de/bigdump/

Одно замечание, хотя, если вы не установите параметры экспорта (а именно максимальную длину созданных запросов) соответствующую нагрузку новый сервер может работать, он просто не в состоянии, и вы придется повторить попытку с разными параметрами. Лично я установил около 25 000, но это только я. Протестируйте его немного, и вы получите его.

Смежные вопросы