Skip to content

Импорт дампа базы данных mysql очень большого размера

Импорт дампа базы данных mysql очень большого размера

Ахтунг!

Так как ограничения у не привилегированных пользователей с большой долей вероятности не дадут импортировать большой дамп, лучше делать это от учётки root базы данных MySQL.

Подключаемся к базе

mysql -u root -p

Смотрим значения net_buffer_length

show variables like "net_buffer_length";
mysql> show variables like "net_buffer_length";
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| net_buffer_length | 16384 |
+-------------------+-------+
1 row in set (0.00 sec)

и max_allowed_packet

show variables like "max_allowed_packet";
mysql> show variables like "max_allowed_packet";
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
1 row in set (0.00 sec)

И сохраняем их куда-то в текстовый файл, так так они нам ещё понадобятся.

Увеличиваем значение параметра net_buffer_length

set global net_buffer_length=1000000;

Устанавливаем максимально разрешённый max_allowed_packet

set global max_allowed_packet=1000000000;

Отключаем проверку foreign key checking для предотвращения задержек, ошибок и не ожидаемого поведения в процессе импорта.

SET foreign_key_checks = 0;

А теперь тут же, в консоли mysql, в сессии с изменёнными настройками, импортируем дамп с помощью запроса source

source file.sql

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

SET foreign_key_checks = 1;
set global max_allowed_packet=4194304;
set global net_buffer_length=16384;


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