Как увеличить максимальный размер импорта файла mysql
Если ваш дамп не намного превышает допустимый лимит, можно его разбить на несколько частей и импортировать в несколько заходов. Это оправдано если, к примеру, лимит составляет 2Мб, а ваша база имеет размер 5-10 Мб. Понятно, что «резать» базу весом 100Мб на 50 частей — процесс довольно трудоемкий и затратный в плане временнЫх ресурсов.
Существует несколько вариантов решения этой задачи.
Редактируем конфиг веб-сервера
На VDS/VPS особых проблем с этим не наблюдается, достаточно лишь подкорректировать конфиг. А именно, в php.ini увеличить допустимые максимальные значения для загружаемых на сервер файлов, максимальный размер для файлов передаваемых методом POST:
Кроме этого, если ваша БД очень большая, следует увеличить максимально допустимое время выполнения скрипта.
И на всякий случай можно увеличить размер допустимого объема оперативной памяти:
После внесения изменений, обязательно перезагрузите веб-сервер.
Понятно, что этот способ не подойдет для виртуального хостинга, т.к. он не подразумевает возможности редактирования конфигов.
Sypex Dumper
Можно воспользоваться сторонним софтом. И первое приложение на которое стоит обратить внимание — это Sypex Dumper.
После авторизации можно перейти непосредственно к иморту БД. В поле «База данных» будет выбрана БД к которой вы подключены, а в поле «Файл» вы увидите ранее загруженный вами дамп в директорию Backup.
Для большинства случаев никакие дополнительные настройки больше не нужны и можно смело запускать импорт, нажав на кнопку «Выполнить». Импорт, в зависимости от размера БД и вашей скорости соединения с Интернет может занять некоторое время. Во время импорта вы можете видеть какие именно таблицы импортируются в данный момент в базу. По завершению работы скрипта вы увидите лог выполнения. Он выглядит, примерно, так:
Вот, собственно, и все — база импортирована!
Консоль
Импорт через консоль рассматривать не будем. Я думаю, люди, пользующиеся консолью без меня знают как импортировать любую БД. А простым пользователям без специальной подготовки лучше туда не соваться. Так как выполнение некоторых команд может привести к серьезным последствиям, вплоть до полного падения сервера.
В заключение
Я не берусь утверждать, что Sydex Dumper — это единственное и правильное решение. Существуют и другие более элегантные способы, которые требуют от пользователя определенных знаний и соответствующие доступы к настройках сервера.
Но в условиях виртуального хостинга, Sydex Dumper, безусловно, будет вашим незаменимым помощником.
Делаю сайты на Вордпресс с 2008 года. Не просто сайты, а уникальные инструменты для решения сложных бизнес‑задач с оптимизацией и поддержкой.
Я пытался импортировать базу данных через phpMyAdmin. Мой файл базы данных a.sql и его размер составляет 1,2 ГБ Я пытаюсь импортировать это на локальном и phpMyAdmin говорит:
вы, вероятно, пытались загрузить слишком большой файл. Пожалуйста, обратитесь к документации для способов обхода этого ограничения.
пожалуйста, помогите мне действительно нужно, чтобы это работало.
его из-за PHP, который имеет ограничение размера файла для загрузки.
Если у вас есть доступ к терминалу/оболочке, то вышеуказанные ответы @Kyotoweb будут работать.
один из способов сделать это заключается в том, что вы создаете .файл htaccess / ini для изменения настроек PHP, чтобы получить файл sql, загруженный через PHPmyAdmin.
Примечание Вы должны удалить этот файл после загрузки.
- открыть php.ini-файл из C:\wamp\bin\apache\Apache2.4.4\bin обновление следующее направление чем после перезагрузки WAMP сервера или перезапуска всех служб теперь загрузить данные с помощью функции импорта в phymyadmin. Применить второй шаг, если пока не загрузить данные.
- открыть config.по умолчанию.php-файл в c:\wamp\apps\phpmyadmin4.0.4\libraries (Откройте этот файл по к в phpmyadmin версии)
Найти $cfg['ExecTimeLimit'] = 300; заменить на $cfg['ExecTimeLimit'] = 0;
Теперь вы можете загружать данные.
- нажмите на значок WampServer - > MySQL - > mysql Consol
- введите пароль базы данных, как root in popup
- выберите имя базы данных для вставки данных, написав команду USE DATABASENAME
- затем загрузите исходный файл sql как SOURCE C:\FOLDER\database.sql
- нажмите enter для вставки данных.
использовать командную строку :
где MYDATABASE.SQL-это sql файл.
еще один вариант, который никто здесь еще не упоминал, - это сделать ступенчатую загрузку базы данных с помощью такого инструмента, как BigDump чтобы обойти ограничение. Это простой PHP-скрипт, который загружает фрагмент базы данных за один раз, прежде чем перезапустить себя и перейти к следующему фрагменту.
Поскольку использую нормальные хостинги, то решение это проблемы занимает всего 10-15 минут, так что особо не парился, но тут столкнулся с тем что возникла необходимость подсказать человеку у которого суппорт курил бамбук, так что выделилось несколько вариантов решения данной проблемы. Оговорюсь сразу что наиболее удобен для импорта базы данных mysql последний вариант, но он подходит только тем у кого есть доступ к терминалу. Так что в статье описаны все возможные способы импорта большой базы данных в mysql, кроме общения с суппортом.
1. Варинт первый – выгружаем бэкап базы не целиком, а по несколько таблиц, чтобы файл не превышал наши лимиты. Основной минус данного решения- это то, что операцию выгрузки- загрузки необходимо будет проводить много раз, так что подойдет исключительно для тех у кого много свободного времени и нечем заняться на досуге.
2. Вариант второй – выгружать в пожатом состоянии- так как степень сжатия для текстового файла будет максимальной. Но тут опять же можно столкнуться с тем, что на хостинге не установлена поддержка архиваторов.
3. Используем сторонний скрипт, который позволяет производить экспорт и импорт базы данных, минуя общение с phpMyAdmin. Наиболее известный из имеющихся в наличии, и к тому же наиболее хорошо работающий- это BigDump. О том как его настроить – я отписался чуть позже, так что это касается и настройки по 5му пункту.
4. Как частный случай 3 вариант, возможно залить на сервер эмулятор терминала и сделать 5 пункт через него. Например можно попробовать PHPterm, но в этом варианте можно столкнуться с ограничениями хостинга в плане безопасности запуска команд и скриптов.
5. Также есть простенькая программка аналогичная BigDump, которая также позволяет импортировать большие базы данных, только в данном случае необходим Zend Optimizer либо Nu-Coder. Программка называется Sypex Dumper, и вторую версию скрипта можно даже интегрировать в наиболее популярные CMS. На сайте есть как платная утилита, так и облегченная бесплатная версия.
6. Если таки имеется доступ к консоли, то можно добавить в php.ini следующие строки (увеличиваем лимит загрузки файлов по времени и размеру), после загрузки, лучше вернуть все назад, чтобы не нагнули сервак с оказией:
max_execution_time = 20000
max_input_time = 20000
upload_max_filesize = 150M
post_max_size = 150M
7. Но на самом деле наиболее быстрым и оптимальным вариантом загрузки большой базы данных, имея доступ к консоли, будет загрузить дамп базы данных dump.sql через ftp, а затем залить её через консоль ssh:
mysql -h hostname -u user-name -p DB_name < /path-to-dir/dump.sql
если у вас в качестве хоста базы данных используется стандартный localhost , то ключик -h можно и опустить, так что получится вида:
mysql -u user-name -p DB_name < /path-to-dir/dump.sql
Да, чуть не забыл про самые поганые грабли всей пляски с импортом- при импорте базы данных могут возникнуть проблемы с кодировками, поэтому нам надо убедиться что дефолтная база и выгрузка sql находятся в одной кодировке, либо переконвертировать базу данных в стандартную для mysql кодировку (обычно это utf-8):
iconv -f CP1251 -t UTF-8 dump.sql > dump.sql.utf8
либо указать необходимую кодировку при процедуре импорта базы данных:
mysql -h hostname -u user-name -default_character_set utf8 -p DB_name < /path-to-dir/dump.sql
И ещё немного информации .
Импорт и экспорт данных MySQL
Экспорт и импорт данных в MySQL обычно требуется при переносе информации из одной базы данных MySQL в другую и для осуществления резервного копирования.
Резервное копирование данных носит чисто технологический характер. Это означает, что в случае какого-либо программного или аппаратного сбоя оборудования, мы сможем восстановить актуальные данные клиента. Мы гарантируем сохранность самих данных, а не их резервных копий.
Однако, при наличии резервной копии на необходимую дату, мы готовы пойти навстречу клиенту и восстановить утерянные по неосторожности данные. Для это необходимо подать заявку на свободную тему из панели управления.
Единственный способ быть уверенным в 100% восстановлении данных — самостоятельно выполнять регулярное резервное копирование информации. Для этого необходимо воспользоваться утилитой mysqldump, которая доступна через unix shell.
Пример команд для экспорта и импорта базы данных:
Данные будут сохранены в файле dump.sql. Далее (в случае необходимости) восстанавливаем данные из резервной копии (дампа) так:
Запускаемые указанным образом утилиты для работы с MySQL будут запрашивать пароль к базе данных. Нужно вводить пароль соответствующего пользователя БД. Если пароль был утерян, вы можете самостоятельно изменить его в панели управления, в разделе Древо услуг (выпадающее меню расположено в самой верхней строчке панели управления справа).
Например, для кодировки Windows-1251 нужно указать:
Дополнительные опции утилиты mysqldump:
--add-drop-table — опция, которая добавляет команду DROP TABLE перед созданием таблиц. Перед восстановлением таблиц из дампа, таблицы с таким же именем в рабочей базе данных будут удалены и пересозданы из резервной копии. Рекомендуется использовать для предотвращения возможных ошибок после восстановления;
--add-locks — опция, которая добавляет команды LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы. Применяется для ускорения доступа к MySQL;
--quote-names — опция, сообщающая утилите о необходимости ставить кавычки для названий таблиц и столбцов. Рекомендуется к использованию для MySQL версий, младше 4.1.1. В старших версиях она активирована по умолчанию.
Опции --quick и --opt рекомендуется использовать, если база данных MySQL слишком большая для того, чтобы целиком поместиться в памяти.
При этом утилита mysqldump выдает ошибку:
В итоге строчка для создания копии базы данных получается следующей:
Для совместимости дампа, сделанного на стороннем сервере мы рекомендуем создавать дамп базы данных с ключом:
Если во время импорта вы получите ошибку вида
значит в вашей базе данных присутствуют данные, которые невозможно разделить на отдельные части, каждая не больше двух мегабайт.
Как правило, такое случается, если базу данных MySQL используют для хранения содержимого различных файлов, например, картинок или музыки, не размещая их непосредственно в файловой системе. В таком случае, если размер какого-нибудь файла превышает определённое значение — база данных становится непригодной для использования на наших серверах и потребуется либо удалить такие данные из вашей базы, либо рассмотреть вариант использования сервера баз данных на VPS-сервере , где можно установить нужное ограничение max_allowed_packet в необходимое значение, либо не использовать его вообще.
Если на вашем сервере установлена версия MySQL 4.0.x, то для корректного переноса данных со сторонних серверов необходимо при экспорте базы данных использовать ключ:
Как работать с MySQL из скриптов на Perl
Для работы с MySQL из Perl-скриптов как правило используют модуль DBI. Это позволяет удобно открывать и закрывать соединения к СУБД, подготавливать и выполнять запросы к базе, обрабатывать ошибки и так далее. Если вы не имеете опыта работы с MySQL из Perl, рекомендуем вам книгу «Программирование на Perl DBI» (рус., англ.).
Итак, пример работы с MySQL из Perl DBI:
Как работать с MySQL из скриптов на PHP
Для работы с MySQL вы можете использовать встроенный в язык PHP средства, поддержка которых уже осуществляется на хостинге. PHP имеет развитый и понятный интерфейс к этой СУБД, что делает работу с MySQL именно из PHP наиболее простой и удобной особенно для начинающих веб-мастеров и веб-программистов.
Загрузка данных с помощью LOAD DATA
Начиная с версии MySQL 3.23.49, LOAD DATA LOCAL по умолчанию запрещено по соображениям безопасности, и его надо специально включать.
MySQL-сервер у нас работает с включенным LOAD DATA LOCAL, но необходимо включение данной функциональности со стороны клиента.
Для утилиты mysql есть несколько вариантов включения данной опции:
- Параметр --local-infile=1
- Создать в домашней директории файл .my.cnf и в нем разрешить эту опцию для группы [mysql], которой пользуется данная утилита:
Включение данного режима из perl'а: необходимо в dsn при подключении указать файл конфигурации mysql (т.к. библиотека libmysql по умолчанию никаких дополнительных файлов конфигурации не читает) и группу в нем, в файле создать эту группу, и для этой группы выставить local-infile=1:
Например, вписываем в
а в скрипте подключение оформляем так:
Включение данного режима из PHP: у вас обязательно должен быть установлен свой собственный, скомпилированный интерпретатор PHP.
В функции mysql_connect() необходимо использовать аргумент 128 (значение константы CLIENT_LOCAL_FILES) в качестве пятого параметра.
Дополнительные MySQL-база и MySQL-доступ (MySQL-пользователь)
Пользователям предоставляется определенное количество баз MySQL в рамках приобретенного тарифа. При этом автоматически подключается одна база, и реквизиты доступа к ней сообщаются в письме с уведомлением о заведении услуг. Клиенты могут самостоятельно создавать дополнительные базы данных и MySQL-доступы.
Для этого необходимо в контрольной панели в разделе Древо услуг выбрать площадку, для которой необходимо создать дополнительную услугу и в таблице «MySQL» выбрать команду «добавить» для услуги «MySQL-доступ (доп.)» или «MySQL-база (доп.)». Пароли доступа к базам данных можно изменить, вызвав команду «изменить» у требуемого MySQL-доступа.
Вот еще немного инфы (которая, кстати работает, сам проверял)
Импорт больших файлов sql в базу данных mysql
Для этого нужен доступ к папке \usr\local\mysql-5.1\ на сервере (или на локальном сервере denver).
По умолчанию у вас установлен Максимально допустимый размер загружаемого файла 2 MB .
По этому пути \usr\local\mysql-5.1\ открываем файл конфигурации my.cnf.
Затем перезагружаем сервер и весело работаем с импортом больших sql файлов.
Кто-нибудь знает, можно ли и как увеличить лимит размера импорта в phpMyAdmin ? В настоящее время мой сервер ограничен 50 МБ.
Обратите внимание, что это не то же самое, что upload_max_filesize в php.ini. Это значение установлено на 2 МБ.
Мне нужно импортировать таблицу в одну из моих БД, и ограничение phpMyAdmin в 50 МБ на импорт не позволяет мне сделать это.
С поправками - прилагаем 2 скриншота:
Снимок экрана №1 - phpinfo () показывает настройки php.ini. Снимок экрана №2 - показывает ограничение импорта phpMyAdmin
Не могли бы вы также увеличить post_max_size и посмотреть, поможет ли это?
При загрузке файла через HTML-форму загрузка обрабатывается как любое другое содержимое элемента формы, поэтому также необходимо увеличить post_max_size .
Обновление: окончательное решение включало командную строку:
Чтобы экспортировать только 1 таблицу, вы бы сделали
'перетащите таблицу your_tabe_name;' также можно добавить вверху скрипта импорта, если его еще нет, чтобы таблица была удалена до того, как скрипт создаст и заполнит ее.
cd /etc/php/<PHP_VERSION>/fpm пример => cd /etc/php/7.2/fpm
после сохранения файла php.ini перезапустите fpm, используя:
Пример => systemctl restart php7.2-fpm
Ответ Шарки был точным. Отображаемый размер загружаемого файла phpMyAdmin НЕ управляется настройками php.ini, которые вы можете увидеть при запуске phpinfo.php, содержащего:
Рекомендуется увеличить настройки php.ini для:
Post_max_size upload_max_filesize max_execution_time max_input_time memory_limit
Вы можете использовать пример настроек, которым поделился Sujiraj R. После того, как вы внесли все изменения как в свой php.ini, так и в область «Tweak Settings» WHM, когда вы запустите phpMyAdmin и перейдете на экран импорта, вы увидите размер, который вы выбрали для «cPanel PHP max upload size» " поле.
В более новой версии cpanel: поиск ini
size 'и отредактируйте его . затем сохраните [введите
Вы можете искать файл php.ini в C: \ xampp \ htdocs
Изменяется в файл php.ini
После редактирования перезапустите XAMPP
Я увеличил максимальный размер файла, перейдя в CPanel> Выберите версию PHP> Переключиться на расширения PHP, а затем прокрутите до поля upload_max_filesize (у него будет кликабельная ссылка для размера - мой был установлен на 2 МБ), и я увеличил его до 256 МБ. Затем нажмите «Сохранить».
Убедитесь, что вы редактируете php.ini, а не php-development.ini или php-production.ini, тип файла php.ini - это параметр конфигурации, и при его редактировании в редакторе отображается расширение .ini. Вы можете найти php.ini здесь: xampp / php / php
Измените файл phpmyadmin.conf на c: /wamp64/alias/phpmyadmin.conf
Php_admin_value upload_max_filesize 512 МБ
php_admin_value post_max_size 512 МБ
php_admin_value max_execution_time 360
php_admin_value max_input_time 360
Очень важно увеличить время до 5000 или выше. Таким образом, процесс не остановится, когда вы загружаете большой файл.
Это подходит для меня.
2: измените желаемое значение на upload_max_filesize и post_max_size, например: upload_max_filesize = 200M post_max_size = 300M, тогда оно станет 200M.
3: перезапустите Apache
Зайдите в свою cpanel и найдите «ini editor». Вы получите "Multiphp INI Editor" Здесь вы выбираете свой каталог wordpress и помещаете upload_max_filesize = 256M post_max_size = 256M memory_limit = 256M
Если вы используете xampp, найдите php.ini (в самой папке xampp), перейдите к строке 735 и измените post_max_size на желаемое значение. пример: если вы хотите перейти на 80 МБ,
Post_max_size = 80 млн
Обязательно перезапустите apache после изменения значения.
Если у вас есть прямой SSH-доступ root к машине, вы сможете изменить настройки в: /usr/local/cpanel/3rdparty/etc/phpmyadmin/php.ini
Просто измените строку: upload_max_filesize = 50M
Это связано с ограничением импорта размера файла в phpmyadmin, значение по умолчанию очень низкое, поэтому вам следует увеличить upload_max_filesize, вы можете изменить это в своем php.ini, заменив этим
Upload_max_filesize = 100 МБ
Вы можете увеличить лимит из файла php.ini. Если вы используете Windows, вы получите файл php.ini из каталога C: \ xampp \ php.
Теперь меняем следующие строки и устанавливаем лимит
У меня такая же проблема. Мой файл .sql был 830 МБ, а разрешенный размер импорта phpMyAdmin был 50 МБ (как показано на скриншоте). Когда я заархивировал файл в .zip, его размер стал примерно 80 МБ. Затем я заархивировал его в формат bzip2 и был поражен, увидев, что размер файла был сжат всего до 12 МБ (с 830 МБ до 12 МБ . ). Поскольку phpMyAdmin допускает три типа сжатия, то есть .zip, .gzip и .bzip2, поэтому я загрузил сжатый файл bzip2 и альт . он был импортирован в базу данных . Итак, используя правильное сжатие, я смог импортировать файл .sql размером 830 МБ в phpMyAdmin.
ПРИМЕЧАНИЕ. На странице импорта phpMyAdmin четко указано, что сжатое имя файла должно иметь вид filename.sql.bz2 . Это не должно быть похоже на filename.bz2.
ПРИМЕЧАНИЕ 2. Вы можете сжать файл .sql в файл, сжатый в формате bzip2, с помощью программы 7-Zip. cPanel также имеет возможность сжать файл в формат bzip2.
Сначала вам нужно изменить значения в файле php.ini в соответствии с вашими требованиями.
Примечание. Тщательно измените эти значения. Эти значения повлияют на все ваши проекты на этом сервере.
Теперь, если вышеуказанные решения не работают, проверьте файл phpmyadmin.conf . Если вы используете WAMP , вы можете найти файл в «C: \ wamp64 \ alias» .
Вы должны изменить указанные ниже значения.
Значения уже в файле -
Измените приведенный выше код на -
Теперь просто перезапустите сервер, чтобы работать с измененными значениями. :)
Измените эти значения в php.ini
Затем перезапустите Wamp, чтобы изменения вступили в силу. Это займет некоторое время. Если вы получите следующую ошибку:
Истекло время ожидания сценария, если вы хотите завершить импорт, повторно отправьте тот же zip-файл, и импорт будет возобновлен.
Затем обновите конфигурацию phpMyAdmin в phpMyAdmin \ libraries \ config.default.php
У меня была такая же проблема с моей правильной работой, выполнив следующие
Изменяется в файл php.ini
Теперь перезапустите, чтобы изменения вступили в силу
Если вы используете WHM / Cpanel, то для изменения этого ограничения «Макс: 50 МБ» в разделе импорта phpmyadmin вам нужно будет изменить два значения в WHM (Web Host Manager).
Шаг 1) Перейдите в настройки настройки, найдите «Максимальный размер загрузки cPanel PHP», измените его в соответствии с вашими потребностями. Сохранить изменения.
Шаг 2) Перейдите в настройки настройки, найдите «cPanel PHP Max POST size», измените его в соответствии с вашими потребностями. Сохранить изменения.
Читайте также: