Страница 1 из 1

подводные камни MySQL

Добавлено: 2008-12-20 18:14:11
weec
Недавно переносил базу (использует таблицы myisam, innodb) и натолкнулся на ошибки errno: 121, 151 (проблема с созданием таблицы). Ошибки повстречались мне при заливке дампа на хранилище (дамп снимал с помощью mysqldump). Заглянул в appendix на dev.mysql.com и понял, что до меня базу переносили, но некорректно. Оказалось причина в том, что в innodb-файлах остались данные о таблицах, хотя команда SHOW TABLES их не показала.

Как я устранил проблему?: создал пустую базу в новом хранилище и все файлы из директории этой базы в старом хранилище перелил в соответствующую директорию нового хранилища, затем запустил команду mysqladmin drop ИМЯ_БАЗЫ. На запрос о подтверждении удаления ответил YES (эта процедура корректно удалила все таблицы).

После вышеописанных манипуляций заливка дампа прошла успешно.

Re: подводные камни MySQL

Добавлено: 2008-12-20 18:23:58
zg
weec писал(а):это при заливке дампа на хранилище
что есть дамп?
если SQL, то проблем не должны было быть, если файлы, то нужно юзать mysqlhotcopy

Re: подводные камни MySQL

Добавлено: 2008-12-20 21:35:47
weec
спасибо, подправил

mysqlhotcopy не приходилось использовать
SQL, многие встречались с такими ошибками, глянь google

Re: подводные камни MySQL

Добавлено: 2008-12-20 21:39:11
zg
весьма странно... ну ладно, будем знать -)))) спасибо за инфу!

Re: подводные камни MySQL

Добавлено: 2008-12-20 21:47:36
weec
до сих пор не могу понять, почему в руководствах по репликации лочат таблицы перед использованием mysqldump ?

Re: подводные камни MySQL

Добавлено: 2008-12-20 21:56:50
zg
чтоб целостность базы не нарушить, страховка, одним словом -)))

Re: подводные камни MySQL

Добавлено: 2008-12-21 19:43:31
weec
нет возможности снять дамп когда таблицы залочены

Re: подводные камни MySQL

Добавлено: 2008-12-22 8:56:28
zg
смотря кто лочит. Лочить может и сам дампер.

Re: подводные камни MySQL

Добавлено: 2008-12-22 10:40:18
weec
weec писал(а):до сих пор не могу понять, почему в руководствах по репликации лочат таблицы перед использованием mysqldump ?
Хранимые процедуры и mysqldump
Никогда не понимал, почему каждый раз при переезде сервера на новое железо, приходится перетаскивать хранимые процедуры отдельно.
Для тех, кто обладает памятью, лучшей, чем у меня: экспорт хранимых процедур и функций включается параметром --routines, например:
mysqldump --routines --extended-insert berserk > outputfile.sql
Если же база уже перенесена, и не хватает лишь переноса хранимых функций и процедур, можно воспользоваться командой:
mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt berserk > outputfile.sql
Название базы (berserk) выделено курсивом, вероятно, вам потребуется его заменить. Импорт в базу на новом сервере можно осуществить так:
mysql newberserk < outputfile.sql
Выполнит импорт в базу newberserk. Очень жаль, что --routines до сих пор не является параметром по умолчанию.
http://baron.su/archives/135-Hranimye_p ... ldump.html