Лучший способ перенести / клонировать большие базы данных MySQL на другой сервер - PullRequest
0 голосов
/ 06 июля 2018

Я запускаю веб-приложение в среде общего хостинга, которая использует базу данных MYSQL, размер которой составляет около 3 ГБ.

В целях тестирования я настроил среду XAMPP на моем локальном компьютере с macOS. Чтобы скопировать онлайн-базу данных на мой локальный компьютер, я использовал mysqldump на сервере, а затем непосредственно импортировал файл дампа в mysql:

// Server
$ mysqldump -alv -h127.0.0.3 --default-character-set=utf8 -u dbUser -p'dbPass' --extended-insert dbName > dbDump.sql

// Local machine
$ mysql -h 127.0.0.3 -u dbUser -p'dbPass' dbName < dbDump.sql

Единственная оптимизация здесь - это использование extended-insert. Однако импорт занимает около 10 часов !

После некоторых поисков я обнаружил, что отключение проверок внешних ограничений во время импорта должно ускорить процесс. Поэтому я добавил следующую строку в начале файла дампа:

// dbDump.sql
SET FOREIGN_KEY_CHECKS=0;
...

Однако это не имело существенного значения ... Импорт теперь занял около 8 часов. Быстрее, но все же довольно долго.

Почему импорт данных занимает так много времени? Есть ли лучший / более быстрый способ сделать это?

Сервер не самый быстрый (общий хостинг ...), но для экспорта / вывода данных требуется всего около 2 минут. То, что экспорт быстрее импорта (без проверки синтаксиса, без разбора, просто запись ...), не удивительно, но в 300 раз быстрее (10 часов против 2 минут)? Это огромная разница ...

Нет ли другого решения, которое было бы быстрее? Например, вместо этого скопируйте двоичный файл БД? Все было бы лучше, чем использовать текстовый файл в качестве средства передачи.

Это не просто передача данных на другую машину для тестирования. Я также создаю ежедневные резервные копии базы данных. Если потребуется восстановить БД, было бы очень плохо, если сайт не работает в течение 10 часов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...