Импорт БД

Discussion in 'PHP' started by Империал, 10 Oct 2013.

  1. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    Мне нужно импортировать БД, весом более 2х гигабайт.
    При загрузке через phpmyadmin появляется ошибка

    До этого были другие ошибки, я в конфигах подправил и увеличил время выполнения скрипта и размеры загружаемых файлов, но загрузить дамп все равно не получается
     
  2. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    > mysql -u root -pPassword -D db < dump.sql

    Ну или поделить базу на части или сторонними скриптами ( вроде bigdump ).

    Или вот:
    http://docs.phpmyadmin.net/en/latest/config.html#web-server-upload-save-import-directories

    http://prostoorgru.blogspot.ru/2010/04/mysql-phpmyadmin.html
     
    #2 LStr1ke, 10 Oct 2013
    Last edited: 10 Oct 2013
  3. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    А с помощью phpmyadmin никак?
     
  4. Дмитрий :)

    Joined:
    3 Oct 2013
    Messages:
    55
    Likes Received:
    7
    Reputations:
    10
    Никак не сделаешь.
     
  5. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    Почему?
    И тогда подскажите решение. Я пробовал другие скрипты, у меня ничего не получилось
     
  6. Дмитрий :)

    Joined:
    3 Oct 2013
    Messages:
    55
    Likes Received:
    7
    Reputations:
    10
    mysql -h localhost -u username -p databasename < damp.sql
    Где
    localhost — это хост сервера базы данных
    username — логин пользователя базы данных
    databasename — название базы данных
    damp.sql - файл бэкапа.

    Вбиваете эту команду, вводите пароль. Всё должно импортироваться. Если нет, то вы скорее всего увидите внятную причину почему.
     
  7. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    А скриптом можно?
     
  8. Дмитрий :)

    Joined:
    3 Oct 2013
    Messages:
    55
    Likes Received:
    7
    Reputations:
    10
    Насчет скрипта незнаю, bigdump пробовал?
    В bigdump как раз
    Открываешь файл скрипта bigdump.php, в котором отыскиваем и меняем следующие строки на необходимые значения
    $db_server = ‘localhost’;
    $db_name = ‘DB_NAME’;
    $db_username = ‘DB_USER’;
    $db_password = ‘DB_PASSWORD’;
    $filename = ‘OUR_DUMP.SQL’; /* Дамп базы данных который мы выгрузили вместе со скриптом*/
    $db_connection_charset = ‘Charset’; /*Поскольку мы работаем с русскими базами, то вероятнее всего это utf8 или cp1251*/

    После этого открывай в бродилке скрипт хттп://наш-сайт/папка/bigdump.php и видим свой файлец, после чего наживаем на линк Start import
     
    #8 Дмитрий :), 10 Oct 2013
    Last edited: 10 Oct 2013
  9. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    Попытался сделать, выдало ошибку

     
  10. Дмитрий :)

    Joined:
    3 Oct 2013
    Messages:
    55
    Likes Received:
    7
    Reputations:
    10
    Ошибка обозначает слишком длинный запрос обработки. Решение:
    Меняем конфигурацию max_allowed_packet.
    Открывай файл my.cnf(Найти его можно так:
    Debian (и ее клон ubuntu): /etc/mysql/my.cnf
    CentOS (или RedHat): /etc/my.cnf)

    Теперь в разделе [mysqld] дописываем (или изменяем, если уже существует) строчку:
    Code:
    max_allowed_packet = 32M
    где вместо 32M - подставьте нужное Вам значение.

    По-умолчанию обычно стоит 16M (16*1024*1024).

    После изменения - перезапустите сервис MySQL.

    для Debian/ubuntu:
    Code:
    $ sudo /etc/init.d/mysql restart
    для CentOS/RedHat:
    Code:
    $ sudo /etc/init.d/mysqld restart
    для FreeBSD:
    Code:
    $ sudo /usr/local/etc/rc.d/mysql-server restart
     
  11. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    У меня эти значения следующие

    port = 3306
    socket = /tmp/mysql.sock
    skip-locking
    key_buffer = 384M
    max_allowed_packet = 9999M
    table_cache = 512
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 8M
    myisam_sort_buffer_size = 64M
    thread_cache_size = 8
    query_cache_size = 32M
    # Try number of CPU's*2 for thread_concurrency
    thread_concurrency = 8


    И все равно ничего не получается
     
  12. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Через что импортишь? Если через phpmyadmin, то скорее max_upload_size править надо, а потом не забыть демоны ребутнуть.

    P.s. С доступом к командной строке, попробуй напрямую, MySQL или зальет или четко ошибку озвучит:
    mysql --host=localhost --user=user --password=123 database < /path/to/database.sql
     
    #12 Sum.cogitans, 10 Oct 2013
    Last edited: 10 Oct 2013
  13. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    А где он?
    Я вообще комп перезагружал
     
  14. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Он в php.ini, комп не обязательно перезагружать только httpd.

    P.s. Извиняюсь что не прочитал предыдущие посты, зашел в тему, думал первая страница.
     
  15. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    В php.ini нет max_upload_size
     
  16. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    Вот точные названия переменных:

    php.ini
    upload_max_filesize=600M
    post_max_size=605M
    max_execution_time=800
    max_input_time=800

    .htaccess
    php_value upload_max_filesize 600M
    php_value post_max_size 600M
    php_value max_execution_time 800
    php_value max_input_time 800


    P.s. Только учти что эти параметры не должны превышать значение лимита выделенной памяти для PHP.
     
    #16 Sum.cogitans, 10 Oct 2013
    Last edited: 10 Oct 2013
  17. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    Какая память выделенная на PHP? У меня стоит апач на своем компе
     
  18. Sum.cogitans

    Sum.cogitans Elder - Старейшина

    Joined:
    7 Sep 2013
    Messages:
    173
    Likes Received:
    32
    Reputations:
    19
    php.ini
    memory_limit = 700M

    .htaccess
    php_value memory_limit 700M

    P.s. Если параметр не определен, значит лимита нет
     
  19. Империал

    Joined:
    11 Mar 2010
    Messages:
    1,224
    Likes Received:
    58
    Reputations:
    1
    А сколько по времени займет импорт такой базы?
    Я просто первый раз столкнулся
     
  20. Дмитрий :)

    Joined:
    3 Oct 2013
    Messages:
    55
    Likes Received:
    7
    Reputations:
    10
    Правильно выше говорят, но 700М ему не хватит