|
|
|
Методы исследования записей в БД
|
|||
|---|---|---|---|
|
#18+
Приветствую всех. Столкнулся с такой проблемой. Сервер FB 2.5.3 Classic 64bit на Linux; на нём крутится ряд баз. Число одновременных коннектов около 100; интенсивность записи в базы невысокая; общий объём баз порядка 40Мб. Сегодня по одной из баз появилась непонятная проблема - исчезло порядка 50 записей в одной из таблиц. Восстановление из утреннего бэкапа с перезабивкой сегодняшних данных решило вопрос. Однако мне непонятно, что могло послужить причиной проблемы: клиент у этой базы единственный, и он работает через мою софтину. Клиент божится, что ничего лишнего не нажимал, и у меня нет оснований ему не доверять - это человек аккуратный и осторожный. Логирование действий пользователя я не предусматривал. Предварительно, перед восстановлением из бэкапа, я сделал свежий бэкап и заодно скопировал сам fdb-файл объёмом чуть больше 2Мб. Есть ли какой-то инструментарий и дока для низкоуровневого ковыряния этого файла? Я хотел бы посмотреть, если это возможно, какая транзакция и какой запрос могли похерить эти данные, чтобы определиться с причиной - глюк сервера, клиентского ПО или юзера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2014, 22:35 |
|
||
|
Методы исследования записей в БД
|
|||
|---|---|---|---|
|
#18+
Любезный, 1) Верить словам юзверей - ошибочный путь. 2) Записи из таблиц может удалить системный админ баз, например случайно. 3) Логировать действия - нужно обязательно, или хотя бы SQL команды которые шлют серваку. тулза есть - IBSurgeon, но она платная. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 09:24 |
|
||
|
Методы исследования записей в БД
|
|||
|---|---|---|---|
|
#18+
Любезный, Постулат номер ноль при разработке практически любой базы данных - первичные данные не удаляются никогда. Если надо, заводится поле типа deleted или status в нем при удалении выставляется соответствующий флаг; соответственно к выборкам добавляется условие and deleted = 0. И постулат номер ноль при работе с людьми - все лгут. Ну и иногда добросовестно ошибаются. В том числе разработчики и администраторы. Так что логирование нужно обязательно. По инструментарию и доке - а оно точно настолько нужно? Если вы никогда не ковыряли FB настолько глубоко, то с наскоку за один день все равно ничего не раскопаете. Я бы лучше этот день потратил на доработку базы данных и/или клиентского софта. Тем более, что запрос все равно не раскопаете, да и абстрактный номер транзакции, в которой были удалены данные, сам по себе тоже ничего не даст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 10:42 |
|
||
|
Методы исследования записей в БД
|
|||
|---|---|---|---|
|
#18+
ЛюбезныйЕсть ли какой-то инструментарий и дока для низкоуровневого ковыряния этого файла? IBUndelete, IBSurgeonViewer. но если уже "мусор убрался", ничего ты не увидишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 12:03 |
|
||
|
Методы исследования записей в БД
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, особенно за наводку на инструменты. Про "не доверять юзеру" - это я уже слышал, но это тот случай, когда программа очень необходима юзеру, и умышленные действия с его стороны исключены. автор2) Записи из таблиц может удалить системный админ баз, например случайно. Тоже исключено. Единственный DBA на этом сервере - это я. В проблемный период времени я вообще не был подключен к серваку. Теоретически нельзя исключить, что софтиной мог быть отправлен запрос (или даже несколько) на удаление, но чтобы выловить причину, нужно хотя бы примерно прикинуть его текст. авторПо инструментарию и доке - а оно точно настолько нужно? Если вы никогда не ковыряли FB настолько глубоко, то с наскоку за один день все равно ничего не раскопаете. Я бы лучше этот день потратил на доработку базы данных и/или клиентского софта. Тем более, что запрос все равно не раскопаете, да и абстрактный номер транзакции, в которой были удалены данные, сам по себе тоже ничего не даст. День или более - не столь важно. Моя задача - понять, что произошло, и постараться исключить повтор проблемы. Абстрактный номер транзакции, как мне кажется, мог бы помочь определить точно, какие именно записи похерены этой транзакцией, да и сколько вообще было транзакций при пропадании записей. Ну и соответственно можно будет предполагать текст запроса. авторно если уже "мусор убрался", ничего ты не увидишь. Это понятно. По gstat этой базы, который я снимал дня за четыре до проблемы, до 20 тысяч транзакций было ещё далеко, а дефолтные параметры сборки мусора я не менял. Буду исследовать fdb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 14:45 |
|
||
|
Методы исследования записей в БД
|
|||
|---|---|---|---|
|
#18+
ЛюбезныйПро "не доверять юзеру" - это я уже слышал, но это тот случай, когда программа очень необходима юзеру, и умышленные действия с его стороны исключены. Осталось исключить неумышленные, а также любые возможности "сделать бяку плохому дяде" для всех окружающих вашего юзера. ЛюбезныйТеоретически нельзя исключить, что софтиной мог быть отправлен запрос (или даже несколько) на удаление, но чтобы выловить причину, нужно хотя бы примерно прикинуть его текст ЛюбезныйАбстрактный номер транзакции, как мне кажется, мог бы помочь определить точно, какие именно записи похерены этой транзакцией, да и сколько вообще было транзакций при пропадании записей. Ну и соответственно можно будет предполагать текст запроса. На что разработчик не пойдет, только чтобы усложнить себе жизнь не делать логирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 16:56 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38816173&tid=1563176]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 510ms |

| 0 / 0 |
