Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Восстановление таблицы MYSQL
Новая тема
Ответить
цитата
31/10/09 в 12:21
Alexandur
Здравствуйте.
Проблема:
есть база около 1Гб, в ней таблица на 300.000 записей (smf_messages от скрипта
http://www.simplemachines.org/
)
Таблица периодически ломается, выдавая: Database Error: Duplicate entry '335223' for key 'PRIMARY'
File: /usr/home/user/www/***/Sources/Subs-Post.php
Line: 1535
Пробовал восстанавливать myisamchk -r /var/db/mysql/gimcnuk_db0/smf_messages.MYI
Ошибка: myisamchk: error: 5 when fixing table
MyISAM-table '/var/db/mysql/gimcnuk_db0/smf_messages.MYI' is not fixed because of errors
Запустил safe-recover, часа за два счётчик натикал 100.000 записей, т.е. процесс ещё часа на 4.
Проблема усугубляется ещё и тем, что отключен mysql сервер и не работают другие базы.
Вопросы:
1. Можно ли прервать процесс восстановления без последствий?
2. Можно ли ускорить процесс? Читал, что можно выделить больше RAMа для процесса (например myisamchk -O sort=16M -O key=16M -O read=1M -O write=1M ...) но есть опасения.
3. Можно ли восстанавливать без остановки сервера? Например, скопировать .MYD .MYI .frm в другое место, запустить myisamchk и после этого перенести обратно?
Спасибо.
цитата
31/10/09 в 13:11
axelded
1) Можно
2) Если есть возможность, залить на "чистый" mysql сервер, чтоб не мешать работе остальных баз...
А там уже экспериментируй с параметрами.
3) Попробуй REPAIR TABLE
http://dev.mysql.com/doc/refman/5.1/en/repair-table.html
Ну и желательно предварительно забэкапить файлики базы.
Последний раз редактировалось: axelded (
31/10/09 в 13:15
), всего редактировалось 1 раз
цитата
31/10/09 в 13:13
Alexandur
Цитата:
By default, it has the same effect as myisamchk --recover tbl_name
Что уже пробовал.
цитата
31/10/09 в 13:19
axelded
я там пост поправил чуток)
цитата
31/10/09 в 13:35
Еugene
меня самого этот smf запарил
имхо всё-таки останови сервер, скопируй MYI в другую папку, сервер опять запусти, а файл скопированный почекай
myisamchk -o file.MYI
myisamchk -r file.MYI
цитата
31/10/09 в 13:53
axelded
А после запуска желательно сделать
Обслуживание форума -> Найти и исправить любые ошибки.
index.php?action=repairboards
цитата
31/10/09 в 14:41
Еugene
+1
у меня часто после восстановления таблиц smf не поднимается полностью - в админке инструменты фиксили всё и всегда
цитата
31/10/09 в 16:48
axelded
если не выйдет - стукай в аську, помогу
цитата
31/10/09 в 17:01
Dr.Syshalt
gimcnuk писал:
есть база около 1Гб, в ней таблица на 300.000 записей
После того, как как-нибудь вытащишь оттуда данные, сделай себе большое одолжение - мигрируй с MyISAM на InnoDB. Сколько я слышал, что "по идее MyISAM надежен и индексы не должны биться", бла-бла... тем не менее, только после того, как года 3 назад перешел на innodb везде, куда дотянулся, забыл о myisamchk и всех этих прелестях. В т.ч. и на интенсивно используемых базах с сотнями тысяч записей. Просто работает, и все.
цитата
31/10/09 в 21:59
axelded
Без innodb - "MySql это записная книжка с sql интерфейсом" (с)
цитата
01/11/09 в 01:27
ibiz
Dr.Syshalt писал:
После того, как как-нибудь вытащишь оттуда данные, сделай себе большое одолжение - мигрируй с MyISAM на InnoDB. Сколько я слышал, что "по идее MyISAM надежен и индексы не должны биться", бла-бла... тем не менее, только после того, как года 3 назад перешел на innodb везде, куда дотянулся, забыл о myisamchk и всех этих прелестях. В т.ч. и на интенсивно используемых базах с сотнями тысяч записей. Просто работает, и все.
InnoDB работает намного дольше и грузит больше памяти чем MyISAM, хотя вроде пентарх с этого форума утверждает обратное...
цитата
01/11/09 в 01:32
ibiz
кстати глянул самую большую базу 1кк записей 2.5Гб работает на MyISAM, сбоев ниразу небыло
цитата
01/11/09 в 02:06
Sterx
ibiz писал:
InnoDB работает намного дольше и грузит больше памяти чем MyISAM
в мануале так вроде написано.
цитата
01/11/09 в 02:16
ibiz
Sterx писал:
в мануале так вроде написано.
та оно и на практике так оказалось, мож конечно у меня руки кривые и я неумею правильно писать запросы, впрочем сложных всего 2-3 запроса, остальные простые... хотел перейти именно из-за расхваленной надежности на больших базах, рано или поздно базы станут большими...
читал также про какую-то новую базу xtradb на основе innodb, которую толкает гугл
цитата
01/11/09 в 09:19
Alexandur
Хм, мнения разделились.
Запросы там предустановленные, рискну предположить, что наиболее оптимизированные.
Будем читать форум поддержки, на предмет перехода.
цитата
01/11/09 в 14:43
ibiz
gimcnuk:
ну ты отпиши результаты, если перейдешь, какие нагрузки, работает быстрее/медленее... кстати на многих виртуалах поддержки innodb нет, видимо у хостеров много проблем из-за нее
хотя по тестам сайта
http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs- ks-part-1/
innodb показывает результаты лучшие чем myisam
цитата
01/11/09 в 17:27
Dr.Syshalt
ibiz писал:
innodb показывает результаты лучшие чем myisam
Зависит от того, как бенчмаркить. Это же не просто "быстрее-медленнее". Если ты только bulk-инсерты делаешь - MyISAM отработает быстрее. Поскольку там много фичей отсутствует - ни транзакций, но foreign keys, проверять меньше и т.д. Но как только ты интенсивно апдейтить начинаешь базу, которую одновременно многие читают - тут начинает сказываться тот факт, что у innodb блокировка идет на уровне рядов, в то время, как MyISAM - блокирует на уровне таблицы. И вот тут все сильно меняется.
И вообще, без настроек под конкретные нагрузки рассуждать о том, что быстрее, что медленнее, нет просто смысла. Базы данных - это не десктопное приложение "поставил и работает".. наверное, DBA оракловские получают не просто так свои немаленькие деньги. И innodb тоже надо уметь использовать. Просто странно ожидать, что у тебя база на сотни тыс. записей, никто никогда 5 минут не уделил продумыванию архитектуры, настройками - и все само работает с оптимальной скоростью и никогда не сбоит.
А так - да, innodb - просто шаг вперед и немалый, в сравнении с MyISAM. То есть с ней MySQL становится уже более-менее нормальной базой данных, а не тем не пойми что, чем он является с MyISAM. Но базы данных (сюрприз!) надо уметь использовать. Ну и хотя бы поучиться использовать explain. А если так использовать, как многие используют (bulk insert'ы с "autocommit on", селекты по rlike, селекты при полном отсутствии индексов) - то, да, наверное, проблемы будут меньше в случае использования "БД для чайников" ака MyISAM.
Что же до SMF - то да, лучше спросить у людей, пробовали ли. Я думаю, что там уж не совсем чайники софт писали, должно неплохо работать на innodb.
цитата
01/11/09 в 17:34
Dr.Syshalt
ibiz писал:
кстати глянул самую большую базу 1кк записей 2.5Гб работает на MyISAM, сбоев ниразу небыло
Это, знаешь, как сказать "я два раза ездил пьяным и ничего плохого не случилось, значит - садиться за руль пьяным ничуть не опасно" )
MyISAM в принципе не создавалась для того, чтобы обеспечивать целостность данных. Там требования другие были - выжать максимум скорости даже на самых глупых и неоптимальных запросах.
цитата
01/11/09 в 17:36
ibiz
Dr.Syshalt писал:
И вообще, без настроек под конкретные нагрузки рассуждать о том, что быстрее, что медленнее, нет просто смысла.
ты наверное невнимательно читал первый пост, конкретная задача бд под форум smf_messages от скрипта
http://www.simplemachines.org/
а это что-то около 70% селектов 20% апдейтов и 10% инсертов с прочим мусором
цитата
01/11/09 в 17:47
Dr.Syshalt
ibiz писал:
ты наверное невнимательно читал первый пост, конкретная задача бд под форум smf_messages от скрипта
http://www.simplemachines.org/
а это что-то около 70% селектов 20% апдейтов и 10% инсертов с прочим мусором
Это ты, наверное, невнимательно читал - там еще писалось про то, что таблица периодически ломается
Все-таки лучше, я думаю, иметь дело с базой, в которую если ты уж делаешь insert/update - то будешь уверен, что они там и останутся.
Насчет производительности же - сценарий форума вполне вписывается в сценарий производительности innodb. Многочисленные селекты с конкурентными апдейтами/инсертами. Разумеется, я не полезу сейчас смотреть, как именно запросы организованы в SMF - но надеюсь (почему-то), что они не забыли о том, что частые селекты делаются по индексам, и прочие элементарные вещи.
Если же не хватает производительности - то простой запрос к гуглу обнажает тот факт, что SMF умеет использовать memcached.
цитата
01/11/09 в 17:53
ibiz
мне интересно для своего форума, с SMF ничего общего, кроме около 70% селектов 20% апдейтов и 10% инсертов ничего нет
и мне также интересна производительность как на малых базах так и на больших, и пока myisam выигрывает у innodb на практике, а не в теории
цитата
01/11/09 в 18:49
Dr.Syshalt
ibiz писал:
и пока myisam выигрывает у innodb на практике, а не в теории
На практике человека, который, как я понимаю, не уделил вопросам оптимизации баз заметного времени - вполне возможно. Практика-то у всех разная. И у форума твоего могли быть запросы, которые выстраиваются в такой длинный ряд в show processlist и стоят, чего-то ждут. Если "и так работает", и ничего править неохота - ради бога. Просто не надо потом жаловаться, когда все это рухнет в один день и будешь сидеть и задаваться вопросом - стоит ли запускать myiasmchk на продакшене. Это как важные данные на FAT32 складывать - до первого выключения электричества.
Вот
тут
, кстати, хороший сравнительный анализ - в деталях и подробно.
цитата
01/11/09 в 19:19
ibiz
спишу на неумение оптимизировать базы и экономию памяти вопреки надежности, может уже все изменилось со времен моих практических сравнений
цитата
02/11/09 в 11:21
Pentarh
Я как профессиональный веб-программист, сисадмин и DB-architect вот что скажу. InnoDB очень пиздатый движок со многих точек зрения в теории.
Но его пиздатость резко заканчивается, когда даешь на 20-гигабайтную базу в сто таблиц 1500 QPS на двойном квадрокоре. Здесь всей его распиздатости приходит быстрый распиздец. Треды начинают зависать в произвольных состояниях (не-Locked!?), обрываться и пропускать (ага!!) запросы.
В общем я не хочу спорить, я это видел и этого мне было достаточно. При переходе обратно на MyISAM, сервер ведет себя более чем стабильно.
цитата
02/11/09 в 11:56
Alexandur
На данный момент 2 против 1, что не надо трогать
Про периодичность я преувеличил, "ломается" второй раз, оба раза за прошедший месяц. Может совпадение.
Новая тема
Ответить
Эта страница в полной версии