Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 05.10.2017 09:18:41

Импорт большого дампа

Здравствуйте.
Есть дамп бд размером ~500мб. Пытался его импортировать через phpmyadmin. Ждал 5 часов, не дождался и вырубил. За это время импортировалось ¼ дампа.
Вопрос в том, как можно быстее импортировать этот дамп? Через cli мускуля? Или как то еще?
Спасибо

Не в сети

#2 05.10.2017 11:09:26

Re: Импорт большого дампа

Вариант с SSH не рассматриваете?
mysql -u пользователь_БД -p имя_БД < файл_дампа_БД

Не в сети

#3 05.10.2017 11:22:03

Re: Импорт большого дампа

Спасибо за ответ.
Да, SSH подходит, и пробую через него залить дамп. Но будит ли он быстрее?

Не в сети

#4 05.10.2017 11:44:47

Re: Импорт большого дампа

Но будит ли он быстрее?

Быстрее, скорее всего, будет незначительно, но зато не будет зависеть от различных таймаутов (PHP, соединения с браузером и др.). Другое дело, что 5 часов импорта (если phpmyadmin действительно все 5 часов импортировал дамп) - это ненормально, значит, такой сервер слишком слаб для такого количества данных.

Вариант более быстрого импорта - не через SQL-дамп, а напрямую копированием /var/lib/mysql с одной системы на другую (только если на второй системе стоит MySQL той же minor-версии, т.е. первые две цифры совпадают - 5.5, 5.6, 5.7; для MyISAM, если его кто-то еще использует, таким образом можно копировать отдельные таблицы, а для InnoDB - только все БД и таблицы сразу). Файлы MySQL обычно хорошо сжимаются, но если индексов много, то передаваемых данных может быть заметно больше "полезного объема", и тогда лучше использовать mysqldump.

Не в сети

#5 05.10.2017 16:10:32

Re: Импорт большого дампа

  1. будет незначительно

Странно, но через консоль примерно минут за 20 весь дамп залился.

  1. зависеть от различных таймаутов (PHP, соединения с браузером и др.)

Возможно что то из этого мешало тк все на локальном сервере делал.

  1. Другое дело, что 5 часов импорта (если phpmyadmin действительно все 5 часов импортировал дамп)

Может не 5 часов, но больше 3 это точно.

  1. Вариант более быстрого импорта — не через SQL-дамп, а напрямую копированием /var/lib/mysql с одной системы на другую (только если на второй системе стоит MySQL той же minor-версии, т.е. первые две цифры совпадают — 5.5, 5.6, 5.7; для MyISAM, если его кто-то еще использует, таким образом можно копировать отдельные таблицы, а для InnoDB — только все БД и таблицы сразу). Файлы MySQL обычно хорошо сжимаются, но если индексов много, то передаваемых данных может быть заметно больше «полезного объема», и тогда лучше использовать mysqldump.

Этот способ не подходит
-- Server version 10.0.32-MariaDB — на сервере откуда был сделан дамп
-- Версия сервера: 5.7.16 на локальном сервере
Запомню на будущее этот способ.
Спасибо!

Не в сети

#6 06.10.2017 15:58:09

Re: Импорт большого дампа

Странно, но через консоль примерно минут за 20 весь дамп залился.

Это может быть, если в дампе очень много одиночных инструкций (обычно mysqldump делает огромные INSERT с тысячами записей в одной команде, а не 1 INSERT на 1 запись, т.к. это медленнее). Но все равно разница слишком большая - скорее всего, импорт в phpmyadmin прервался по какому-то из условий (max_execution_time, memory_limit, лимит на размер POST веб-сервера и т.д.), но в браузере этого не было заметно.

В любом случае, если дамп большой - нужно использовать консольный импорт, там меньше граблей и сразу видно, когда процесс идет, а когда закончился. Также можно запустить импорт в фоне и не бояться, что если ssh-сессия (или соединение в браузере, как в случае с PMA) разорвется, то импорт отменится - для этого есть nohup и screen (screen для особо продвинутых):

nohup bash -c 'mysql -uroot ... <import.sql' &
screen mysql -uroot ... <import.sql

На форуме уже поднималась подобная тема (как импортировать/переносить БД), с ней тоже полезно ознакомиться.

-- Server version    10.0.32-MariaDB — на сервере откуда был сделан дамп
-- Версия сервера: 5.7.16 на локальном сервере

Да, MariaDB с MySQL по файлам данных совершенно точно не совместима. Впрочем, MySQL сама откажется запускаться, если формат не тот.

Не в сети

#7 12.10.2017 17:45:22

Re: Импорт большого дампа

Proger_XP, спасибо. Обязательно ознакомплюсь с данной темой.

Не в сети

Подвал раздела