mySQL: пропадают данные

louder

Новичок
mySQL: пропадают данные

Суть проблемы:

Есть база, содержит 21 таблицу. одна таблица основная, в ней где-то 1000 записей.
И именно в этой таблице периодически стираются некоторые записи (от 1 до 250- последний раз)..
случайным образом. тип таблицы - myisam.
Причину я не знаю ..
Пользователь может долько добавлять записи. Удалять не может.

Ситуация с сервером:
У меня виртуальный сервер (VPS). Объём памяти 128 МВ .. которой постоянно не хватает (после того как поставил mySQL), по причине чего случаются сбои .. сам сервак остаётся рабочим, слетают некоторые процессы. Приходится перезагружать переодически.

Вопрос: Могут ли проблемы с пропажей данных быть связаны со сбоями на сервере ? Есть ли какие-либо способы защиты информации в базе, кроме бэкапов ?
Информация очень важная, восстановоение из бэкапов занимает время. Запросы идут каждые 30 мин. И теряется довольно много информации..
 

Апельсин

Оранжевое создание
> Могут ли проблемы с пропажей данных быть связаны со сбоями на сервере ?

ну если у вас падал сервер, вы потом чинили таблицы то при REPAIR TABLE могут быть удалены строки, но эта комманда всегда сообщает о том что изменено кол-во строк с такого-то на такое.

Включите логи на сервере и следите кто что делает.
 

louder

Новичок
Спасибо за совет.
А вообще, на сколько реально, что это произошло именно из-за сбоя сервера ? Никто не сталкивался с этим ?
 

Superman

Новичок
Я сталкливался. Сбой сервера привел к потере нескольких строк из таблицы.
 

louder

Новичок
ага. спасибо ..
т.е. единственное что остаётся - бэкапы ..
 

Апельсин

Оранжевое создание
> А вообще, на сколько реально, что это произошло именно из-за сбоя сервера ?

что понимается под сбоем сервера?
Если падение самого MySQL или выключение физическое машины, то тогда если в этот момент таблицы обновлялись это приведет к "поломке" MyISAM таблиц.

Просто так, без всяких следов, строки не теряются.
А бэкапы никогда лишними не бывают.
 

louder

Новичок
>Просто так, без всяких следов, строки не теряются.

т.е. это можно проследить в логах ?
 

Апельсин

Оранжевое создание
> т.е. это можно проследить в логах ?

еще раз. Для MyISAM таблиц потеря данных может произойти когда:
- MySQL сервер прибивают/выключают машину/прибивают запрос обновляющий таблицу. Это ведет за собой к порче MyISAM таблицы. Такое не проходит бесследно. При попытке открыть такую порченую таблицу ты получишь ошибку.
- кто-то обновляет таблицы. Для таких случаев включаешь бинарные логи куда записываются все запросы которые изменяют данные (INSERT/UPDATE/DELETE/ALTER и т.д.). Если что-то происходит - идешь и проверяешь. Там правда не записывается _кто_ это сделал.
 

louder

Новичок
Спасибо огромное.
И последний вопрос Вам, Апельсин :
где можно подробней почитать о бинарных логах, и как их просмотреть.. есть ли какая-нибудь утилита, конвертирующая бинарный лог в текстовый формат, или в mySQL есть спец функция ?
Простите, если этот вопрос, покажется Вам уж слишком тупым.
 

Апельсин

Оранжевое создание
ну читать о них лучше всего в документации:
http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

для просмотра есть утилита mysqlbinlog которая преобразует все в текст. Без всяких параметров она читает весь файл, но можно задать начальную и конечную точку при помощи опций:
--start-position и --stop-position
или
--start-datetime и --stop-datetime
 
Сверху