Openserver увеличить размер загружаемого файла sql
Бывает возникает ситуация, в которой необходимо загрузить на сервер хостинга базу данных больше разрешенного хостингом в утилите управления базами данных phpMyAdmin- обычно этот предел установлен в ~2Mb. Если это случается на виртуале, то обычно просто заливаю базу через ftp и прошу суппорт хостинга помочь в данном вопросе.
Поскольку использую нормальные хостинги, то решение это проблемы занимает всего 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
И ещё немного информации .
для общего хостинга GoDaddy
на учетных записях общего хостинга GoDaddy сложно настроить PHP.Ини файлов. Однако есть и другой способ, и он просто отлично работал для меня. (Я только что успешно загрузил 3.8 Мб .текстовый файл sql, содержащий 3100 строк и 145 cols. Используя команду импорта в phpMyAdmin, я получал страшное сервер MySQL ушел ошибки, и никакой дополнительной информации.)
я обнаружил, что Мэтт Мясник имел право ответ. Как и Мэтт, я пробовал все виды трюков, от экспорта баз данных MySQL в кусочках размером с укус, до написания сценариев, которые разбивают большой импорт на более мелкие. Но вот что получилось:
(1) CPANEL ---> файлы (группа) ---> резервное копирование
(2a) под заголовком" частичные резервные копии".
(2b) в разделе "загрузить резервную копию базы данных MySQL"
(2c) Выберите свою базу данных и загрузите резервную копию (этот шаг необязателен, но мудр)
(3a) непосредственно справа от 2b, в разделе "восстановление резервной копии базы данных MySQL"
(3b) выберите .SQL импорт файла с вашего локального диска
(3c) истинное счастье будет вашим (скоро. ) Мой занял около 5 секунд
я смог использовать этот метод для импорта одной таблицы. Ничто другое в моей базе данных не было затронуто - но это то, что Шаг (2) выше предназначен для защиты.
Примечания:
а. Если вы не знаете как создать .Файл импорта SQL, используйте phpMyAdmin для экспорта таблицы и изменения структуры этого файла.
Дополнительные 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 файлов.
Всем доброго времени суток. Вы когда-нибудь пытались импортировать большую базу данных, размером от 1 гигабайта?
Скорее всего это вызвало у вас затруднения. Как импортировать файл я расскажу ниже. А так же можно ускорить этот процесс, изменив настройки MySql.
Для начала, перед запуском OpenServer, посмотрите в настройках свою версию MySQL.
И на всякий случай, для увеличения скорости, отключите Log MySQL.
Если у вас база данных до 500МБ
Для загрузки больших файлов (от 500 MB), я рекомендую использовать консоль, если же файл меньше, вы можете изменить максимальный размер импортируемого файла до 500 MB, в файле конфигурации и использовать стандартный импорт PhpMyAdmin.
Файлы конфигурации правятся здесь.
Редактируйте php.ini. Следует увеличить допустимые максимальные значения для загружаемых на сервер файлов, максимальный размер для файлов передаваемых методом POST:
post_max_size = 512M
upload_max_filesize = 512M
Кроме этого, если ваша БД очень большая, следует увеличить максимально допустимое время выполнения скрипта.
max_execution_time = 32000
max_input_time = 32000
И на всякий случай можно увеличить размер допустимого объема оперативной памяти:
memory_limit = 512M
Затем сохраните и перезагрузите Open Server.
Если у вас база данных более 500МБ
Если же загружаемая база данных больше 500 мегабайт, лучше воспользоваться консолью.
Запустите Open Server и перейдите в консоль.
В консоли нужно ввести 2 простые строки.
Переход в папку с выбранной в настройках версией MySQL: cd modules\database\MySQL-5.6\bin
Пример:
Импорт базы данных, выглядит так: mysql -u username -p database_name < file.sql
Пример:
Все готово. В моем случае на импорт базы данных размером 3Гб, ушло 10 мин.
Импорт большого дампа БД в OpenServer через консоль
Практически каждый разработчик пользуется локальным веб-сервером при разработке или тестировании своих проектов, в котором уже имеются apache, php, mysql.
Если при разработке маленьких проектов почти не возникает проблем, то с большими все наоборот. Допустим у нас есть 20 гигобайтная база данных, которую мы хотим протестировать на своем локальном веб-сервере, здесь сразу возникает вопрос: Как ее загрузить, если в phpMyAdmin стоит ограничение по размеру и времени загрузки? Сделаем это через консоль.
В данной статье мы будем использовать веб-сервер под названием "OpenServer", хотя есть еще десяток не плохих, такие как Denwer, WAMP и другие.
Для начала откроем инструмент, через который собираемся импортировать наш ахрененно большой дамп - консоль. Для этого запускаем OpenServer, в трее ищем значок (флажок), щелкаем правой кнопкой мыши по нему, переходим во вкладку "Дополнительно" - "Консоль":
Ждем загрузки Консоли, попутно проверим, какую используем версию БД в веб-сервере. Для этого снова щелкаем в трее по иконке, далее "Дополнительно" - "Конфигурация" и смотрим версию MySQL, которую и будем указывать в путях консоли:
Теперь в Консоле поочередно набираем команды команды. Первое - переходим в каталог MySQL:
Жмем Enter и набираем команду для импорта:
где lockhost - название БД в phpMyAdmin, lockhost.sql - дамп базы.
Если вы используете пользователя с паролем, необходимо указать пароль:
где password - пароль пользователя.
Теперь остается подождать загрузки дампа.
Если у вас что-то не получилось, можно воспользоваться еще одним вариантом.
Я пытался импортировать базу данных через 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-скрипт, который загружает фрагмент базы данных за один раз, прежде чем перезапустить себя и перейти к следующему фрагменту.
Edit: обратите внимание, что файлы опций MySQL не имеют своих команд, уже доступных в качестве комментариев (например, в php.ini например). Поэтому вы должны ввести любые изменения / настройки в my.cnf или my.ini и поместите их в mysql/data каталог или в любом из других путей, в соответствующей группе параметров, таких как [client] , [myslqd] . и т. д., Например :
[mysqld]
wait_timeout = 600
max_allowed_packet = 64M
Затем перезапустите сервер. Чтобы получить их значения, введите в консоли:
select @@wait_timeout;
select @@max_allowed_packet;
для меня это решение не сработало, поэтому я выполнил
в моем клиенте SQL.
Если вы не можете изменить это с запущенной службой MYSql, вы должны остановить службу и изменить переменную в "my.ini-файл.
например:
Если вы работаете со значениями по умолчанию, то у вас есть много места для оптимизации конфигурации mysql.
первый шаг, который я рекомендую, это увеличить max_allowed_packet до 128M.
скачать MySQL Tuning Primer script и запустить его. Он предоставит рекомендации для нескольких аспектов вашей конфигурации для повышения производительности.
также изучите настройку значений таймаута как в MySQL, так и в PHP.
Как большой (размер файла) - это файл, который вы импортируете, и вы можете импортировать файл с помощью клиента командной строки mysql вместо PHPMyAdmin?
Вы можете найти его в: File > Edit template > MySQL my.cnf
тогда просто найдите max_allowed_packet измените значение и спасать.
Я решил свою проблему с этим коротким /etc/mysql / my.cnf file:
другая причина, по которой это может произойти, - это нехватка памяти. Проверьте /var/log / messages и убедитесь, что ваш my.cnf не настроен, чтобы заставить mysqld выделять больше памяти, чем ваша машина.
ваш процесс mysqld может быть фактически убит ядром, а затем повторно запущен процессом "safe_mysqld" без вашего ведома.
используйте top и наблюдайте за распределением памяти во время его работы, чтобы увидеть, что такое ваш запас.
сделать резервную копию.cnf прежде чем менять его.
я обновил "max_allowed_packet" до 1024M, но он все еще не работал. Оказывается, мой сценарий развертывания был запущен:
обязательно явно указывать большее количество из командной строки, Если вы не donig это так.
Если это займет много времени, чтобы потерпеть неудачу, а затем увеличить wait_timeout переменной.
Если это не удается сразу, увеличить max_allowed_packet переменная; если она все еще не работает, убедитесь, что команда допустима SQL. У меня были неоткрытые цитаты, которые все испортили.
также, если это возможно, рассмотрите возможность ограничения числа вставок одной команды SQL, скажем, до 1000. Вы можете создать сценарий, который создает несколько операторов из одного, повторно введя INSERT. часть каждые N вставки.
Я получил аналогичную ошибку.. чтобы решить эту проблему просто откройте Мой.ini-файл..здесь в строке № 36 измените значение максимально допустимого размера пакета ie. max_allowed_packet = 20M
у меня была подобная ошибка сегодня при дублировании базы данных (сервер MySQL ушел. ), но когда я попытался перезапустить mysql.перезагрузка сервера я получил ошибку
вот как я решил это: Я открыл приложения / утилиты / и запустил Монитор активности
затем удалось решить проблему ошибки с
Я делаю некоторые большие вычисления, которые включают в себя соединение mysql, чтобы оставаться долгое время и с тяжелыми данными. я столкнулся с этой "проблемой Mysql go away". Поэтому я попытался оптимизировать запросы, но это не помогло мне, тогда я увеличил предел переменных mysql, который по умолчанию установлен на более низкое значение.
wait_timeout max_allowed_packet
до предела, что когда-либо подходит вам, это должно быть любое число * 1024(байт). вы можете войти в терминал используя 'mysql-u username-p' команда и может проверить и изменить для этих переменных пределов.
убедитесь, что процесс mysqld не перезапускается из-за менеджеров служб, таких как systemd.
У меня была эта проблема в vagrant с centos 7. Настройки конфигурации не помогли. Оказалось, что это был systemd, который убивал службу mysqld каждый раз, когда это занимало слишком много памяти.
если увеличение max_allowed_packet не помогает.
Импорт и экспорт данных 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:
Загрузка данных с помощью 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:
Например, вписываем в ~/.my.cnf
а в скрипте подключение оформляем так:
Включение данного режима из PHP: у вас обязательно должен быть установлен свой собственный, скомпилированный интерпретатор PHP.
В функции mysql_connect() необходимо использовать аргумент 128 (значение константы CLIENT_LOCAL_FILES) в качестве пятого параметра.
Как работать с MySQL из скриптов на PHP
Для работы с MySQL вы можете использовать встроенный в язык PHP средства, поддержка которых уже осуществляется на хостинге. PHP имеет развитый и понятный интерфейс к этой СУБД, что делает работу с MySQL именно из PHP наиболее простой и удобной особенно для начинающих веб-мастеров и веб-программистов.
Импорт и экспорт данных 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:
Читайте также: