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

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
weec
лейтенант
Сообщения: 948
Зарегистрирован: 2007-07-24 11:17:35
Откуда: Afghanistan
Контактная информация:

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

Непрочитанное сообщение weec » 2008-12-20 18:14:11

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

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

После вышеописанных манипуляций заливка дампа прошла успешно.
Последний раз редактировалось weec 2008-12-20 21:54:00, всего редактировалось 3 раза.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

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

Непрочитанное сообщение zg » 2008-12-20 18:23:58

weec писал(а):это при заливке дампа на хранилище
что есть дамп?
если SQL, то проблем не должны было быть, если файлы, то нужно юзать mysqlhotcopy

Аватара пользователя
weec
лейтенант
Сообщения: 948
Зарегистрирован: 2007-07-24 11:17:35
Откуда: Afghanistan
Контактная информация:

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

Непрочитанное сообщение weec » 2008-12-20 21:35:47

спасибо, подправил

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

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

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

Непрочитанное сообщение zg » 2008-12-20 21:39:11

весьма странно... ну ладно, будем знать -)))) спасибо за инфу!

Аватара пользователя
weec
лейтенант
Сообщения: 948
Зарегистрирован: 2007-07-24 11:17:35
Откуда: Afghanistan
Контактная информация:

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

Непрочитанное сообщение weec » 2008-12-20 21:47:36

до сих пор не могу понять, почему в руководствах по репликации лочат таблицы перед использованием mysqldump ?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

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

Непрочитанное сообщение zg » 2008-12-20 21:56:50

чтоб целостность базы не нарушить, страховка, одним словом -)))

Аватара пользователя
weec
лейтенант
Сообщения: 948
Зарегистрирован: 2007-07-24 11:17:35
Откуда: Afghanistan
Контактная информация:

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

Непрочитанное сообщение weec » 2008-12-21 19:43:31

нет возможности снять дамп когда таблицы залочены

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

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

Непрочитанное сообщение zg » 2008-12-22 8:56:28

смотря кто лочит. Лочить может и сам дампер.

Аватара пользователя
weec
лейтенант
Сообщения: 948
Зарегистрирован: 2007-07-24 11:17:35
Откуда: Afghanistan
Контактная информация:

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

Непрочитанное сообщение weec » 2008-12-22 10:40:18

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