Как запретить тайм-ауты соединений для большого импорта MySQL - программирование
Подтвердить что ты не робот

Как запретить тайм-ауты соединений для большого импорта MySQL

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

В последнее время в самом конце импорта мы получаем ошибки относительно переменных @old, которые сохранили исходные настройки, такие как ограничения внешнего ключа, до того, как они были изменены (поэтому отключить ограничения внешнего ключа, чтобы импорт не выдавал ошибок, когда он воссоздает таблицы и пытается создать внешние ключи, когда одна из таблиц еще не создана). Я выяснил, что причина в том, что таблица продуктов получает все больше и больше данных и в тот момент, когда сеанс был отключен во время импорта.

Мне интересно, какой параметр можно задать (либо как часть SQL-запроса в файле my.ini), который остановит все таймауты, тем самым сделав сессию последней навсегда, пока мы вошли.

4b9b3361

Ответ 1

Стратегии импорта больших баз данных MySQL

Импорт PHPMyAdmin

Скорее всего, если вы читаете это, PHPMyAdmin не был вариантом для вашего большого импорта базы данных MySQL. Тем не менее, это всегда стоит попробовать, не так ли? Наиболее распространенной причиной сбоя импорта PHPMyAdmin является предел импорта. Если вы работаете локально или имеете свой собственный сервер, вы можете попробовать изменить настройки MySQL ini, которые обычно находятся в файле my.ini, расположенном в папке установки MySQL. Если вы работаете с WAMP в Windows, вы можете получить доступ к этому файлу с помощью панели управления WAMP в разделе MySQL > my.ini. Не забудьте перезапустить WAMP, чтобы ваши новые настройки были использованы. Настройки, которые вы можете увеличить, включают:

max_allowed_packet
read_buffer_size

Даже с расширенными настройками импорта MySQL вы все равно можете обнаружить, что импорт времени истекает из-за настроек PHP. Если у вас есть доступ к PHP.ini, вы можете внести изменения в максимальное время выполнения и соответствующие настройки. В WAMP откройте файл PHP.ini под панелью управления WAMP на PHP > php.ini. Попытайтесь увеличить лимиты при следующих настройках при попытке большого импорта MySQL:

max_execution_time
max_input_time
memory_limit

Использование Big Dump шахматного импортера дампа MySQL

Если основной импорт PHPMyAdmin не работает, вы можете попробовать Big Dump script из Ozerov.de для пошагового импорта MySQL. Для этого полезного script выполняется ваш импорт в меньших блоках, что точно так же необходимо для успешного импорта большого дампа MySQL. Это бесплатная загрузка, доступная по адресу http://www.ozerov.de/bigdump/.

Процесс использования Big Dump довольно прост: вы в основном размещаете файл импорта SQL и большой дамп script вместе на сервере, задаете несколько конфигураций в Big Dump script, а затем запустите script, Большой дамп справляется с остальными!

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

Перейти в командную строку с консолью MySQL

Если вы используете WAMP (и даже если вы этого не делаете), всегда есть возможность отключить преследование и импортировать большую базу данных MySQL с помощью консоли MySQL. Im импортирует базу данных 4 ГБ таким образом, как я пишу этот пост. На самом деле, почему у меня есть время, чтобы потратить письмо, потому что даже этот метод требует времени, когда у вас есть 4 ГБ SQL файл для импорта!

Некоторые разработчики (обычно меня) запуганы, открывая черный экран и вводя в него загадочные команды. Но это может быть освобождение, и когда дело доходит до баз данных MySQL, это часто лучший путь. В WAMP мы получаем доступ к консоли MySQL из панели управления WAMP в MySQL > MySQL Console. Теперь давайте изучим две простые команды консоли MySQL, необходимые для импорта базы данных MySQL, стиль командной строки:

use `db_name`

Команда use, за которой следует имя базы данных, сообщит консоли MySQL, какую базу данных вы хотите использовать. Если вы уже настроили базу данных, в которую вы импортируете, вы начинаете с выдачи команды use. Предположим, что ваша база данных называется my_great_database. В этом случае выполните следующую команду в консоли MySQL. Обратите внимание, что команды должны заканчиваться точкой с запятой.

mysql-> use my_great_database;

mysql-> source sql_import_file.sql

Команда source, за которой следует местоположение файла SQL, импортирует файл SQL в базу данных, указанную ранее командой use. Вы должны указать путь, так что, если вы используете WAMP на своем локальном сервере, начните с того, что где-то проще найти файл SQL, например C:\sql\my_import.sql. Полная команда с этим примером будет:

mysql-> source C:\sql\my_import.sql;

После запуска этой команды файл SQL должен начать импортироваться. Пусть запросы выполняются и позволяют завершить импорт до закрытия консоли MySQL.

Дополнительную документацию для командной строки MySQL можно найти здесь: http://dev.mysql.com/doc/refman/5.5/en/mysql.html.

Другим решением является использование MySQL Workbench.

Ответ 2

Это решение работало для меня:

max_allowed_packet  <-- --> upped size to 8M
read_buffer_size  <-- -->  upped from 256 to 512

Использование панели управления Xampp на локальном хосте. После внесения изменений в файл my.ini в конфигурации MySQL не забудьте закрыть Xampp (или Wamp) и перезапустить его, чтобы изменения вступили в силу.

(Четыре дня головокружения, и я, наконец, исправился!)

Симптомы были в Импорт: # 2006 сервер MySql ушел. Однако из 87 строк таблицы было импортировано только 10 строк таблицы.

Ответ 3

Рассмотрите возможность использования MySQL Workbench, он бесплатно и очень хорошо обрабатывает очень большой script (из меню выберите: Файл Открыть SQL Script - если он большой, он спросит вас, хотите ли вы запустить его). Работал мне хорошо на протяжении многих лет при работе с большими SQL-дампами.

Ответ 4

вместо

mysql- > источник C:\sql\my_import.sql;

используйте (косые черты)

mysql- > источник C:/sql/my_import.sql;