?

Log in

No account? Create an account

Предыдущий пост | Следующий пост

у нас тут проблемка, с которой мы до сих пор не сталкивались

нам надо перенести БД из mysql на нашем сервере на сервер хостера.

У хостера mysql настроен с ограничением размера пакета в 1М.
(max-packet-size=1M), соответсвенно залить наш дамп не получается.
Они рекомендуют дамп базы делать с таким же ограничением.
Но дамп с таким размером пакета на нашей базе сделать нельзя (там явно есть кусок большего размера).

Как перенести базу?

наш сисадмин читает комменты, ответ нужен СРОЧНО

Комментарии

( 21 комментарий — Оставить комментарий )
green343
29 окт, 2009 18:23 (UTC)
Если есть phpmyadmin, надо сдампить отдельно структуру и отдельно данные.
Для данных выключить "расширенную вставку".
Данные скармливать на загрузку потаблично.
Если таблица не пролезает - брать и тупо по частям пихать дамп в SQL (в дампе будет просто по одному запросу на строчку данных).

Если одна запись в таблице > 1M - только ковырять настройки хостинга.
В свое время как-то так выходил из положения.
gvj
29 окт, 2009 18:24 (UTC)
Кир, проверьте, что вы экспортите без --extended-insert (-e).
Вряд-ли одна запись будет больше, чем 1M.
Будет медленнее, но это путь.
mynine
29 окт, 2009 18:40 (UTC)
Не сисадмин, а нельзя ли просто зипануть дамп и перекинуть? Локально то проблем нет..
juravlev_v_nebe
29 окт, 2009 19:14 (UTC)
Дело не в размере дампа базы. А в размере данных внутри базы.
geracl
29 окт, 2009 18:40 (UTC)
Кир, вот это не поможет - http://sypex.net/ ?

Лучше, конечно, первая версия - там вообще один файл. У меня позволял бэкапить базы, которые было иначе не забэкапить.

Если нужен файл - я поищу.
oldnavig
29 окт, 2009 18:45 (UTC)
Как вариант - использовать что-то типа Navicat for MySQL: http://navicat.com/.
там есть опция Data Transfer - много раз выручала меня в подобных случаях.
wehaveexplosive
29 окт, 2009 18:49 (UTC)
Если версии mysql совпадают - шатдауните у себя mysql и таблицы только типа myisam - запаковываете файлы базы в архивчик и отдаёте хостеру, он у себя их распаковывает в рабочую дирикторию своего sql сервера и всё работает.

sergik
29 окт, 2009 18:55 (UTC)
Если на сервер есть доступ по ssh:
Нужен дамп с кучей инсертов (phpMyAdmin делает такой замечательно, только для верности не надо объединять в единый insert), и с консоли залить в mysql.
stifff
29 окт, 2009 19:13 (UTC)
э… max-packet-size или все-таки max_allowed_packet?

Если кусок один — можно просто инсерт порезать на более мелкие.
stifff
29 окт, 2009 19:20 (UTC)
wow, переключили режим капчи )

mysqldump --max_allowed_packet=1M --quick --opt -u u404 -p project1 > dump.sql

и…

«Если во время импорта вы получите ошибку вида
mysqldump: Error 2020:
Got packet bigger than 'max_allowed_packet'
bytes when dumping table `some_table_name ` at row: 2
значит в вашей базе данных присутствуют данные, которые невозможно разделить на отдельные части, каждая не больше одного мегабайта. Как правило, такое случается, если базу данных MySQL используют для хранения содержимого различных файлов, например, картинок или музыки, не размещая их непосредственно в файловой системе. В таком случае, если размер какого-нибудь файла превышает определённое значение – база данных становится непригодной для использования на наших серверах и потребуется либо удалить такие данные из вашей базы, либо рассмотреть вариант использования сервера баз данных на VPS-сервере, где можно установить нужное ограничение max_allowed_packet в необходимое значение, либо не использовать его вообще.»
koshkaxx
29 окт, 2009 20:34 (UTC)
Димастый, какой ты умный))))
stifff
30 окт, 2009 15:03 (UTC)
ага, был «закос» под мастерхост ))
ltybc
29 окт, 2009 20:29 (UTC)
Уже ответили.
От себя добавлю - есть удобная софтина SQLYoug называется.
seacat
30 окт, 2009 04:06 (UTC)
Если в базе есть запись большего размера чем max_allowed_packet, то ИМХО никак.
Эта запись просто в клиент-сервер протокол не пролезет.

http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_allowed_packet
You must increase this value if you are using large BLOB columns or long strings. It should be as big as the largest BLOB you want to use.

http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html
A communication packet is a single SQL statement sent to the MySQL server, a single row that is sent to the client, or a binary log event sent from a master replication server to a slave.

gouriev
30 окт, 2009 09:07 (UTC)
зависит от версии.
в старых версиях (3.х) можно было создать пустую базу,
а потом просто подложить (заменить) файлы от старой.

В 4.х появились разные форматы хранения (движки?), и -
в зависимости от формата - финт может не пройти.

juravlev_v_nebe
30 окт, 2009 11:41 (UTC)
Коллеги, большое спасибо за помощь.
Я многое узнал о работе mysql за последние сутки.
Бóльшую часть вариантов попробовал — не было времени писать комментарии.

В итоге мы просто переделали базу.
Я считаю, что это был самый разумный вариант, и самый грамотный.
kisa_i_osya
7 ноя, 2009 20:31 (UTC)
Как много людей не знают о Sypex Dumper, а?
( 21 комментарий — Оставить комментарий )

Вкратце

Сейчас я практически не веду ЖЖ как отдельный блог, основная активность перенесена в фейсбук, но сюда все транслируется. Читайте там, где вам удобнее

Календарь

Январь 2018
Вс Пн Вт Ср Чт Пт Сб
 123456
78910111213
14151617181920
21222324252627
28293031   
Разработано LiveJournal.com
Дизайн yoksel