MySQL MyISAM возможности потери данных? - PullRequest
5 голосов
/ 28 мая 2011

Многие сайты и скрипты все еще используют MySQL вместо PostgreSQL. У меня есть пара блогов с низким приоритетом, и я не хочу переходить на другую базу данных, поэтому я использую MySQL.

Вот проблема, они на VPS с малой памятью . Это означает, что я не могу включить InnoDB, так как он использует около 80 МБ памяти только для загрузки. Поэтому я должен рискнуть запустить MyISAM.

Имея это в виду, на какую потерю данных я смотрю с MyISAM? Если бы было отключение питания, когда кто-то сохранял запись в блоге, я бы просто потерял это сообщение или вся база данных?

На этих нижних ящиках я могу потерять некоторые недавние комментарии или пост в блоге, если не потеряна вся база данных.

Ответы [ 6 ]

5 голосов
/ 02 июня 2011

MyISAM не совместим с ACID и, следовательно, не обладает долговечностью. Это действительно зависит от того, что стоит больше ... памяти, чтобы использовать InnoDB или время простоя. MyISAM, безусловно, является жизнеспособным вариантом, но что требует ваше приложение от уровня базы данных? Использование MyISAM может усложнить жизнь из-за его ограничений, но в некоторых случаях MyISAM может подойти. Использование только логических резервных копий mysqldump прервет вашу службу из-за их характера блокировки. Если вы используете бинарное ведение журнала, вы можете создавать резервные копии, чтобы создавать инкрементные резервные копии, которые можно было бы воспроизвести для восстановления, если что-то повреждено в таблицах MyISAM.

2 голосов
/ 31 мая 2011

Вы можете найти следующую интересную статью о производительности MySQL:

Для меня это касается не только блокировок таблиц.Блокировка таблиц - это только одно из ограничений MyISAM, которое необходимо учитывать при его использовании в производстве.Особенно, если вы приходите из «традиционных» баз данных, вы, скорее всего, будете шокированы поведением MyISAM (и поведением по умолчанию MySQL из-за этого) - оно будет повреждено при неправильном завершении работы, произойдет сбой при частичном выполнении оператора, если возникнут определенные ошибки.обнаружен и т.д ...

http://www.mysqlperformanceblog.com/2006/06/17/using-myisam-in-production/

0 голосов
/ 03 июня 2011

Вы всегда можете получить в качестве резервной копии другой хост в той же VLAN, которая подчинена вашей базе данных, это значительно снизит риск. Я полагаю, что есть только другие варианты:

  1. Получите больше оперативной памяти для вашего сервера или убейте некоторые службы
  2. Посмотрите, есть ли у вашего хоста общий хостинг баз данных в VLAN, который вы можете использовать за небольшую плату.
  3. Регулярно делайте резервные копии и будьте готовы к худшему.
0 голосов
/ 30 мая 2011

При сбое сервера ваш первичный ключ с автоинкрементом может быть поврежден, поэтому идентификаторы постов в блоге могут изменяться с 122, 123, 75912371234, 75912371235 (где произошел сбой сервера после 123). Я видел, как это происходит, и это не красиво.

0 голосов
/ 30 мая 2011

Руководство MySQL указывает типы событий, которые могут повредить вашу таблицу, и есть статья, объясняющая, как использовать myisamchk для восстановления таблиц . Вы можете даже выполнить запрос, чтобы исправить это.

REPAIR TABLE table;

Однако нет информации о том, могут ли некоторые типы сбоев быть «нефиксированными». Это тот тип потери данных, который я не могу допустить, даже если я делаю резервные копии.

0 голосов
/ 28 мая 2011

По моему скромному мнению, с MyISAM не происходит потери данных.

Риск потери данных из-за сбоя питания связан с отключением питания, а не с механизмом хранения базы данных.

...