|
Аварии и их последствия
|
|||
---|---|---|---|
#18+
Уважаемые коллеги! Занимаюсь эксплуатацией чужой разработки СУБД. На днях случился такой очень неприятный момент. Вышел из строя файл-сервер, на котором крутилась СУБД. Сервер подняли (причина пока не понятна- не мой участок), перезапустили и- оказалось совсем неприятное явление. Повредились записи БД за определенное число и те записи, в которые вносились изменения тоже за это же число (к примеру, за 16.12). Суть повреждений - в MEMO-поля записан мусор или они пустые. Строковые, даты и т.п. поля остались без изменений. Базу восстановили из копии+ потребовалась ручная работа, но это уже детали. Все фунционирует, но остались вопросы. Первое - отчего так повредилась база? Второе- кто виноват и как этого избежать? Разработчиков уже нет, но в коде программы (вскрыта REFOX'ом) отсутствуют механизмы BEGIN TRANSACTION-END-ROLLBACK. Влияние темных сил, мировой закулисы и инопланетян на информационные технологии исключаю ;) Кто сталкивался с чем-либо подомным и как этого можно избежать- прошу поделиться соображениями. С уважением, Kurzenev. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2009, 10:14 |
|
Аварии и их последствия
|
|||
---|---|---|---|
#18+
Kurzenevостались вопросы. Первое - отчего так повредилась база?Потому, что все базы и таблицы, родственные к dBase, имеют такой недостаток. Второе- кто виноват и как этого избежать?Не виноват никто, кроме сисадминов, которые не смотрят за сервером в смысле профилактики Избежать можно путем перевода данных в другой формат, но это не даст 100% гарантии сохранности при сбое Разработчиков уже нет, но в коде программы (вскрыта REFOX'ом) отсутствуют механизмы BEGIN TRANSACTION-END-ROLLBACK. Вот и хорошо, что нет, а то были бы проблемы при корпоративном доступе к базе По опыту могу сказать, что ни одно резервирование не помогает так, как если написать программулину, которая один раз в несколько часов делает копии данных и архивирует их, не затирая предыдущие архивы, и эти копии списываются на сторонний носитель (и даже не один), который в промежутке между сессиями хранится в сейфе, дабы не запортиться при сбоях сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2009, 11:55 |
|
Аварии и их последствия
|
|||
---|---|---|---|
#18+
Kurzenev, Перетирали это много раз. Повторю еще... Kurzenev Повредились записи БД за определенное число и те записи, в которые вносились изменения тоже за это же число (к примеру, за 16.12). Суть повреждений - в MEMO-поля записан мусор или они пустые. Строковые, даты и т.п. поля остались без изменений. Первое - отчего так повредилась база? База данных, основанная на файлах DBF, "крутится" на обычном файловом сервере. Это значит, что за запись данных отвечает сервер, а за их обработку - "толстый" клиент. Естественно, что в момент, когда запись уже началась, а свет вдруг "вырубился", в файл будет записан всякий мусор. Ибо ресурсов у сервера недостаточно для корректного завершения запущенных сеансов.... Мемо-поля по размеру больше, чем другие (кроме General) и редактируются чаще. Поэтому на них эффект "виднее"... А "выстрелить" (запортить данные) могло в любом месте... На моей памяти был такой случай, когда программа выдала текстовые данные в файл DBF вместо принтера, чем этот файл "убила"... Благо это был справочник и его восстановили с резервной копии... Kurzenev Второе- кто виноват и как этого избежать? Виноват тот, кто "уронил" файл-сервер (вполне может быть и внешним по отношению к организации человеком: экскаваторщик, порвавший кабель; энергетик, выключивший рубильник на подстанции и т.д.) Избежать этого можно только установкой источника бесперебойного питания и своевременным отключением сервера с уведомлением всех работающих пользователей о чрезвычайной ситуации и необходимости завершить работу с приложением. Kurzenev Разработчиков уже нет, но в коде программы (вскрыта REFOX'ом) отсутствуют механизмы BEGIN TRANSACTION-END-ROLLBACK. Вы немного не понимаете специфику FoxPro и пытаетесь на него "натянуть" стандарты специализированных серверов SQL. Все таки программа, написанная на FoxPro, это не сервер, а "толстый" клиент (пусть и со своим движком SQL). Минимальные транзакционные механизмы у нее есть (например, различные типы буферизации), но они бесполезны, когда сбой происходит на файл-сервере. Кроме того, встроенных автоматизированных механизмов "поднятия" актуального состояния базы данных (как, например, протоколирование изменений, проводимых пользователями) у Фокса нет, а, будучи запрограммированы на языке FoxPro, они сильно замедлят работу программы... Подумайте сами, не зря ведь продавцы берут хорошие деньги за дистрибутивы MS SQL SERVER или Oracle... :-) Резюмируя вышесказанное: 1. если Вам критично Ваше приложение (например, программа - уникальный продукт), то вложите деньги в повышение надежности: грамотный админ на файл-сервере, хороший компьютер (на роль сервера) / специализированный сервер за несколько десятков тысяч "зеленых", обеспечение бесперебойного питания файл-сервера и т.д. надолго избавят Вас от подобных проблем. 2. если Вам критичны работы по поднятию БД, то вложите деньги и переведите имеющуюся базу на SQL-сервера (MS SQL SERVER или Oracle), доработав соответствующим образом клиента или написав нового... Хотя я лично не уверен, что поднятие БД SQL-серверов при подобных ЧП будет быстрее и пройдет безболезненно для данных (т.е. ничего не потеряется из того, что пользователи вводили в момент непосредственно предшествовавший ЧП)... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2009, 12:04 |
|
Аварии и их последствия
|
|||
---|---|---|---|
#18+
Ежедневный архив тебя спасет. Удаляешь архивы старше месяца и все. У меня 2 управления по 200 компов так работает, рубят свет эксковаторщики по -черному. Восстанавливаю из архива когда надо ). !arj32 a имя_архива.arj data\*.* ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2009, 17:01 |
|
Аварии и их последствия
|
|||
---|---|---|---|
#18+
Acronis самый лучший спосител. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2009, 07:36 |
|
Аварии и их последствия
|
|||
---|---|---|---|
#18+
Уважаемые коллеги, большое спасибо за ответы и ценные советы, но- данные пропали строго за определенный день. Казалось бы - поломался бы fpt-файл, ну было бы понятно. Сломалось бы все. Если человек утром чего-то навводил, то в базе это "чего-то" осталось бы. Смотрю- а в memo-полях за этот день сплошной мусор из-за склеивания всего, что попало из тех же memo-полей. Понимаю, что ситуация довольно экзотическая. Может, кто-то встречался с такой экзотикой? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 10:17 |
|
Аварии и их последствия
|
|||
---|---|---|---|
#18+
2Kurzenev Приветствую ! Регулярно приходится наблюдать(восстанавливать при возможности) битые fpt-ки . Чаще вылетают данные именно за рабочий промежуток времени (день, недели и т.д.) Как уже правильно выше написали - уж такая судьба у файловой СУБД , очень большая зависимость от правильной работы сервера(системы) . Здесь уж ничего не поделаешь , нужно смириться, и требовать чтобы системщики лучше следили за работой железа и ОС ! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2010, 15:45 |
|
|
start [/forum/topic.php?fid=41&msg=36406834&tid=1585696]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 343ms |
total: | 464ms |
0 / 0 |