Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 017 610 раз!

Форум

Добро пожаловать, Гость!

Импорт 30GB базы в MySql(5.6)

Вопросы по работе с Apache, Nginx, PHP, MySQL, Sendmail и т.д.
esigns
Сообщения: 4
C нами: 1 год 2 мес

Непрочитанное сообщение esigns » 01 окт 2015, 11:27

Всем доброго вермени суток.
Пытаюсь заимпортить большую базу данных размером 30 гигабайт. К сожалению, импорт идет очень медленно: за первые 2 часа 9гб а дальше по 100мб в час.
Пробовал использовать скрипт BigDump.php(ошибка с foreign keys).
Сейчас работает через командную строку:
mysql -u username -p database_name < file.sql


1: Можно ли как-то ускорить этот процесс, изменив настройки MySql 5.6 и как исправить эту проблему?

2: Где можно редактировать конфиг MySql ? Я нашел файл конфига, но, к сожалению, там есть строчка что этот файл сгенерирован автоматически и его редактирование безполезно.

Благодарю за помощь.

[upd=1443693480][/upd]
Нашел ответ к вопросу 2: конфиг находится в дополнительно -> конфигурация

Аватара пользователя
Максим
Сообщения: 4871
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 01 окт 2015, 19:32

САМОЕ ГЛАВНОЕ - проверьте что у вас в настройках Open Server не включено ведение лога SQL запросов для MySQL.

Если на вашем сервере ведутся бинарные логи - отключите их в конфиге MySQL. Если таблицы в MyISAM формате - увеличьте значение опции bulk_insert_buffer_size в конфиге mysql.

Что касается ускорения импорта:

Название базы данных замените на своё и кодировку, при необходимости.
C:/path/dump.sql - замените на путь до своего дампа, который нужно импортировать.

Создаёте такой sql файл и сохраняете где нить, например в C:/import.sql:
SET NAMES utf8;
DROP DATABASE `test`;
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8;
USE `test`;
SET autocommit=0;
SET foreign_key_checks=0;
SET unique_checks=0;
SOURCE C:/path/dump.sql;
COMMIT;
SET autocommit=1;
SET foreign_key_checks=1;
SET unique_checks=1;

Потом выполняете в консоли Open Server:
mysql -A -h 127.0.0.1 -P 3306 -u root < C:/import.sql

Вариант с паролем:
mysql -A -h 127.0.0.1 -P 3306 -u root -p pass < C:/import.sql

Если пересоздание базы перед импортом не нужно (например импортируете только часть базы), то удалите строки:
DROP DATABASE `test`;
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8;

P.S. Не забудьте потом отписаться насколько быстрее стало, просто интересно.

esigns
Сообщения: 4
C нами: 1 год 2 мес

Непрочитанное сообщение esigns » 05 окт 2015, 12:16

Привет еще раз и спасибо за помощь.
Время не засекал, но раза в 3-4 стало быстрее.


Вернуться в «Модули и инструменты»

Кто сейчас на конференции

Сейчас этот форум просматривают: Yahoo [Bot] и 1 гость