С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 31/10/09 в 12:21 |
Здравствуйте.
Проблема:
есть база около 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 и после этого перенести обратно?
Спасибо.
|
|
|
|
С нами с 07.05.08
Сообщения: 43
Рейтинг: 86
|
Добавлено: 31/10/09 в 13:11 |
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 раз
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 31/10/09 в 13:13 |
Цитата: | By default, it has the same effect as myisamchk --recover tbl_name |
Что уже пробовал.
|
|
|
|
С нами с 07.05.08
Сообщения: 43
Рейтинг: 86
|
Добавлено: 31/10/09 в 13:19 |
я там пост поправил чуток)
|
|
|
|
С нами с 10.12.03
Сообщения: 1615
Рейтинг: 870
|
Добавлено: 31/10/09 в 13:35 |
меня самого этот smf запарил
имхо всё-таки останови сервер, скопируй MYI в другую папку, сервер опять запусти, а файл скопированный почекай
myisamchk -o file.MYI
myisamchk -r file.MYI
|
|
|
|
С нами с 07.05.08
Сообщения: 43
Рейтинг: 86
|
Добавлено: 31/10/09 в 13:53 |
А после запуска желательно сделать
Обслуживание форума -> Найти и исправить любые ошибки.
index.php?action=repairboards
|
|
|
|
С нами с 10.12.03
Сообщения: 1615
Рейтинг: 870
|
Добавлено: 31/10/09 в 14:41 |
+1
у меня часто после восстановления таблиц smf не поднимается полностью - в админке инструменты фиксили всё и всегда
|
|
|
|
С нами с 07.05.08
Сообщения: 43
Рейтинг: 86
|
Добавлено: 31/10/09 в 16:48 |
если не выйдет - стукай в аську, помогу
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 31/10/09 в 17:01 |
gimcnuk писал: |
есть база около 1Гб, в ней таблица на 300.000 записей |
После того, как как-нибудь вытащишь оттуда данные, сделай себе большое одолжение - мигрируй с MyISAM на InnoDB. Сколько я слышал, что "по идее MyISAM надежен и индексы не должны биться", бла-бла... тем не менее, только после того, как года 3 назад перешел на innodb везде, куда дотянулся, забыл о myisamchk и всех этих прелестях. В т.ч. и на интенсивно используемых базах с сотнями тысяч записей. Просто работает, и все.
|
|
|
|
С нами с 07.05.08
Сообщения: 43
Рейтинг: 86
|
Добавлено: 31/10/09 в 21:59 |
Без innodb - "MySql это записная книжка с sql интерфейсом" (с)
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 01/11/09 в 01:27 |
Dr.Syshalt писал: | После того, как как-нибудь вытащишь оттуда данные, сделай себе большое одолжение - мигрируй с MyISAM на InnoDB. Сколько я слышал, что "по идее MyISAM надежен и индексы не должны биться", бла-бла... тем не менее, только после того, как года 3 назад перешел на innodb везде, куда дотянулся, забыл о myisamchk и всех этих прелестях. В т.ч. и на интенсивно используемых базах с сотнями тысяч записей. Просто работает, и все. |
InnoDB работает намного дольше и грузит больше памяти чем MyISAM, хотя вроде пентарх с этого форума утверждает обратное...
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 01/11/09 в 01:32 |
кстати глянул самую большую базу 1кк записей 2.5Гб работает на MyISAM, сбоев ниразу небыло
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760
|
Добавлено: 01/11/09 в 02:06 |
ibiz писал: | InnoDB работает намного дольше и грузит больше памяти чем MyISAM |
в мануале так вроде написано.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 01/11/09 в 02:16 |
Sterx писал: | в мануале так вроде написано. |
та оно и на практике так оказалось, мож конечно у меня руки кривые и я неумею правильно писать запросы, впрочем сложных всего 2-3 запроса, остальные простые... хотел перейти именно из-за расхваленной надежности на больших базах, рано или поздно базы станут большими...
читал также про какую-то новую базу xtradb на основе innodb, которую толкает гугл
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 01/11/09 в 09:19 |
Хм, мнения разделились.
Запросы там предустановленные, рискну предположить, что наиболее оптимизированные.
Будем читать форум поддержки, на предмет перехода.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 01/11/09 в 14:43 |
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 01/11/09 в 17:27 |
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.
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 01/11/09 в 17:34 |
ibiz писал: | кстати глянул самую большую базу 1кк записей 2.5Гб работает на MyISAM, сбоев ниразу небыло |
Это, знаешь, как сказать "я два раза ездил пьяным и ничего плохого не случилось, значит - садиться за руль пьяным ничуть не опасно" )
MyISAM в принципе не создавалась для того, чтобы обеспечивать целостность данных. Там требования другие были - выжать максимум скорости даже на самых глупых и неоптимальных запросах.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 01/11/09 в 17:36 |
Dr.Syshalt писал: |
И вообще, без настроек под конкретные нагрузки рассуждать о том, что быстрее, что медленнее, нет просто смысла. |
ты наверное невнимательно читал первый пост, конкретная задача бд под форум smf_messages от скрипта http://www.simplemachines.org/
а это что-то около 70% селектов 20% апдейтов и 10% инсертов с прочим мусором
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 01/11/09 в 17:47 |
ibiz писал: | ты наверное невнимательно читал первый пост, конкретная задача бд под форум smf_messages от скрипта http://www.simplemachines.org/
а это что-то около 70% селектов 20% апдейтов и 10% инсертов с прочим мусором |
Это ты, наверное, невнимательно читал - там еще писалось про то, что таблица периодически ломается Все-таки лучше, я думаю, иметь дело с базой, в которую если ты уж делаешь insert/update - то будешь уверен, что они там и останутся.
Насчет производительности же - сценарий форума вполне вписывается в сценарий производительности innodb. Многочисленные селекты с конкурентными апдейтами/инсертами. Разумеется, я не полезу сейчас смотреть, как именно запросы организованы в SMF - но надеюсь (почему-то), что они не забыли о том, что частые селекты делаются по индексам, и прочие элементарные вещи.
Если же не хватает производительности - то простой запрос к гуглу обнажает тот факт, что SMF умеет использовать memcached.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 01/11/09 в 17:53 |
мне интересно для своего форума, с SMF ничего общего, кроме около 70% селектов 20% апдейтов и 10% инсертов ничего нет
и мне также интересна производительность как на малых базах так и на больших, и пока myisam выигрывает у innodb на практике, а не в теории
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 01/11/09 в 18:49 |
ibiz писал: | и пока myisam выигрывает у innodb на практике, а не в теории |
На практике человека, который, как я понимаю, не уделил вопросам оптимизации баз заметного времени - вполне возможно. Практика-то у всех разная. И у форума твоего могли быть запросы, которые выстраиваются в такой длинный ряд в show processlist и стоят, чего-то ждут. Если "и так работает", и ничего править неохота - ради бога. Просто не надо потом жаловаться, когда все это рухнет в один день и будешь сидеть и задаваться вопросом - стоит ли запускать myiasmchk на продакшене. Это как важные данные на FAT32 складывать - до первого выключения электричества.
Вот тут, кстати, хороший сравнительный анализ - в деталях и подробно.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 01/11/09 в 19:19 |
спишу на неумение оптимизировать базы и экономию памяти вопреки надежности, может уже все изменилось со времен моих практических сравнений
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 02/11/09 в 11:21 |
Я как профессиональный веб-программист, сисадмин и DB-architect вот что скажу. InnoDB очень пиздатый движок со многих точек зрения в теории.
Но его пиздатость резко заканчивается, когда даешь на 20-гигабайтную базу в сто таблиц 1500 QPS на двойном квадрокоре. Здесь всей его распиздатости приходит быстрый распиздец. Треды начинают зависать в произвольных состояниях (не-Locked!?), обрываться и пропускать (ага!!) запросы.
В общем я не хочу спорить, я это видел и этого мне было достаточно. При переходе обратно на MyISAM, сервер ведет себя более чем стабильно.
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 02/11/09 в 11:56 |
На данный момент 2 против 1, что не надо трогать
Про периодичность я преувеличил, "ломается" второй раз, оба раза за прошедший месяц. Может совпадение.
|
|
|
|