1

Проблема восстановления файла db через db_dump - db_load

Тема: Проблема восстановления файла db через db_dump - db_load

Началось с того, что самопроизвольно все файлы с расширением inf в папке storage/md стали нулевого размера.
Версия:
Version: wialon_pro_1106r14_l64
Type: Wialon Pro
Естественно сервис не стартует.
Пробовали удалить файлы inf нулевой длины, стартует, но не пересоздает их, а сообщения от приборов валит в один файл временный в корне storage.

Затем проверили верификацией все файлы db, нашли один битый.
На всякий случай сдампировали все файлы db в новые:
Использовали вот это по всем файлам db в папке md и pd:

db_dump -r m-00000001.db | db_load m-00000001.db.new
mv m-00000001.db m-00000001.db.old
mv m-00000001.db.new m-00000001.db

Потом отвязали журналы:

db_load -r lsn m-00000001.db
db_load -r lsn m-00000012.db
db_load -r lsn m-00000013.db
db_load -r lsn m-00000014.db
db_load -r lsn m-00000015.db
db_load -r lsn m-00000016.db
db_load -r lsn m-00000017.db
db_load -r lsn m-00000018.db
db_load -r lsn m-00000019.db
db_load -r lsn m-00000020.db
db_load -r lsn m-00000021.db
db_load -r lsn m-00000049.db
db_load -r lsn m-00000072.db
db_load -r lsn m-00000075.db
db_load -r lsn m-00000080.db
db_load -r lsn m-00000085.db
db_load -r lsn m-00000089.db
db_load -r lsn m-00000090.db
db_load -r lsn m-00000091.db

db_load -r lsn archive.db
db_load -r lsn objects.db
db_load -r lsn props.db
db_load -r lsn props_server.db

Потом почистили папку ml и pl.

В результате при запуске в режиме debug получаем вот это:

2013/07/22 08:25:11:539: storage_messages_env::register_batch_messages(2411): er
ror fetching database with index 90
2013/07/22 08:25:11:671: storage_messages_env::register_batch_messages(1827): er
...

Битый файл никак дампом не выдергивается, выдает вот это:
m-00000085.db

Вот что верификация выдает:
db_verify: BDB0566 Page 19472: item 190 of unrecognizable type
db_verify: BDB0566 Page 19472: item 191 of unrecognizable type
db_verify: BDB0566 Page 19472: item 192 of unrecognizable type
db_verify: BDB0566 Page 19472: item 193 of unrecognizable type
...
db_verify: BDB1057 Page 19472: offpage item 224 has bad pgno 3370601
db_verify: BDB0566 Page 19472: item 225 of unrecognizable type
db_verify: BDB1057 Page 19472: offpage item 226 has bad pgno 3370601
db_verify: BDB0566 Page 19472: item 227 of unrecognizable type
db_verify: BDB1057 Page 19472: offpage item 228 has bad pgno 3370601
db_verify: BDB0566 Page 19472: item 229 of unrecognizable type
db_verify: BDB1057 Page 19472: offpage item 230 has bad pgno 3370601
db_verify: BDB0566 Page 19472: item 231 of unrecognizable type
db_verify: BDB1057 Page 19472: offpage item 232 has bad pgno 3370601
db_verify: BDB0566 Page 19472: item 233 of unrecognizable type
db_verify: BDB1057 Page 19472: offpage item 234 has bad pgno 3370601
db_verify: BDB0566 Page 19472: item 235 of unrecognizable type
db_verify: BDB0566 Page 19472: item 236 of unrecognizable type
...
db_verify: BDB0566 Page 19472: item 278 of unrecognizable type
db_verify: BDB1056 Page 19472: impossible tlen 1953853550, item 279
db_verify: BDB0566 Page 19472: item 280 of unrecognizable type
db_verify: BDB1056 Page 19472: impossible tlen 1953853550, item 281
db_verify: BDB0566 Page 19472: item 282 of unrecognizable type
db_verify: BDB1056 Page 19472: impossible tlen 1953853550, item 283
db_verify: BDB0566 Page 19472: item 284 of unrecognizable type
db_verify: BDB1056 Page 19472: impossible tlen 1953853550, item 285
db_verify: BDB0566 Page 19472: item 286 of unrecognizable type
db_verify: BDB1056 Page 19472: impossible tlen 1953853550, item 287
db_verify: BDB0566 Page 19472: item 288 of unrecognizable type
db_verify: BDB1056 Page 19472: impossible tlen 1953853550, item 289
db_verify: BDB0566 Page 19472: item 290 of unrecognizable type
db_verify: BDB1056 Page 19472: impossible tlen 1953853550, item 291
db_verify: BDB0566 Page 19472: item 292 of unrecognizable type
db_verify: BDB1056 Page 19472: impossible tlen 1953853550, item 293
db_verify: BDB0566 Page 19472: item 294 of unrecognizable type
db_verify: BDB0566 Page 19472: item 295 of unrecognizable type
...
db_verify: BDB1059 Page 19472: gap between items at offset 59668
db_verify: BDB1045 Page 19472: item order check unsafe: skipping
db_verify: m-00000085.db: BDB0090 DB_VERIFY_BAD: Database verification failed
BDB5105 Verification of m-00000085.db failed.
root@WialonB3:/var/lib/wialonb3/storage/md#

Вот что выдает попытка дампирования файла базы:
root@WialonB3:/var/lib/wialonb3# ./shell
Loaded ADF environment
root@WialonB3:/var/lib/wialonb3# cd storage/md
root@WialonB3:/var/lib/wialonb3/storage/md# db_dump -r m-00000085.db | db_load m-00000085.db.new
root@WialonB3:/var/lib/wialonb3/storage/md# mv m-00000085.db m-00000085.db.old
root@WialonB3:/var/lib/wialonb3/storage/md# mv m-00000085.db.new m-00000085.db
root@WialonB3:/var/lib/wialonb3/storage/md# db_dump -r m-00000085.db | db_load m-00000085.db.new
db_load: BDB0696 Duplicate data items are not supported with sorted data
db_load: BDB5080 m-00000085.db.new: line 371: key already exists, not loaded:
00000000000000ac50af5074
db_load: BDB0696 Duplicate data items are not supported with sorted data
db_load: BDB5080 m-00000085.db.new: line 375: key already exists, not loaded:
554e4b4e4f574e5f4b4559
db_load: BDB0696 Duplicate data items are not supported with sorted data
db_load: BDB5080 m-00000085.db.new: line 377: key already exists, not loaded:
554e4b4e4f574e5f4b4559
db_load: BDB0696 Duplicate data items are not supported with sorted data
...
db_load: BDB0696 Duplicate data items are not supported with sorted data
db_load: BDB5080 m-00000085.db.new: line 421: key already exists, not loaded:
554e4b4e4f574e5f4b4559
db_dump: m-00000085.db: BDB0090 DB_VERIFY_BAD: Database verification failed
root@WialonB3:/var/lib/wialonb3/storage/md#

Что можете посоветовать, как восстановить файл БД?
После такой попытки дампирования создает файл, но при попытке старта сервиса все также не создает inf-файлы в каталоге /storage/md
Соответственно не может записать полученные с датчиков данные в БД.

Добавлено спустя   3 минуты  34 секунды:
Есть идеи куда копать дальше? На саппорт запрос послал, пока ответа нет. Я так понимаю, в проблемном файле какие-то пересечения ключей возникли. Вопрос срочный, бэкап есть, но в нем почему то тоже inf-файлы нулевой длины, как работало, непонятно.

2

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

Просто так inf-файлы не могли обнулиться. Посмотрите, что пишется в логах в это время.
И уточните, как вы делали бэкап, брали ли вы оттуда файл бд, с которым была проблема при проверке, и пробовали ли запускать без inf-файлов?

Developer
Gurtam
3

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

duig пишет:

Просто так inf-файлы не могли обнулиться. Посмотрите, что пишется в логах в это время.
И уточните, как вы делали бэкап, брали ли вы оттуда файл бд, с которым была проблема при проверке, и пробовали ли запускать без inf-файлов?

Без inf-файлов конечно пробую, ничего не создается.
Сейчас после запуска в логи сыпятся ошибки, при этом веб доступен, не пишет только данные с датчиков в БД.

Вот что идет в лог:

env::register_batch_messages(1406): error fetching database for time 1374427282
env::register_batch_messages(651): error fetching database for time 1374422528
env::register_batch_messages(2404): error fetching database with index 90
env::register_batch_messages(2747): error fetching database with index 91
env::register_batch_messages(1613): error fetching database for time 1374433247
env::register_batch_messages(1361): error fetching database for time 1374432824
env::register_batch_messages(2399): error fetching database with index 90
env::register_batch_messages(1609): error fetching database for time 1374432683
env::register_batch_messages(841): error fetching database for time 1374424931
env::register_batch_messages(2313): error fetching database with index 90
env::register_batch_messages(819): error fetching database for time 1374433878
env::register_batch_messages(489): error fetching database for time 1374434479
env::register_batch_messages(1126): error fetching database for time 1374426776
env::register_batch_messages(1609): error fetching database for time 1374431029
env::register_batch_messages(1035): error fetching database for time 1374429190
env::register_batch_messages(1372): error fetching database for time 1374427364
env::register_batch_messages(1789): error fetching database for time 1374432671
env::register_batch_messages(1505): error fetching database for time 1374433626
env::register_batch_messages(1179): error fetching database for time 1374431623
env::register_batch_messages(2777): error fetching database with index 91

4

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

psi-storm, Вам нужно пересоздать inf файлы. Обратитесь за ними в ТП с указанием перечня номеров файлов. Или пришлите storage/ms/msgs_stats.txt - он должен содержать последнюю актуальную информацию.

At the dark side of telematics...
5

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

Послали запрос в ТП, но у нас уже горит. Если есть возможность прислать все файлы из списка нам на электронку support@e-911.ru :
Просьба выслать inf-файлы:

m-00000001.inf
m-00000012.inf
m-00000013.inf
m-00000014.inf
m-00000015.inf
m-00000016.inf
m-00000017.inf
m-00000018.inf
m-00000019.inf
m-00000020.inf
m-00000021.inf
m-00000049.inf
m-00000072.inf
m-00000075.inf
m-00000080.inf
m-00000085.inf
m-00000089.inf
m-00000090.inf
m-00000091.inf

На данный момент мы часть файлов восстановили, но хотелось бы иметь все.
Критичны следующие файлы:

m-00000072.inf
m-00000075.inf
m-00000080.inf
m-00000091.inf

6

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

Help Help Help!!! smile

Дайте пожалуйста хотя бы вот это файл: m-00000091.inf

7

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

Help Help Help!!! smile

Дайте пожалуйста хотя бы вот это файл: m-00000091.inf

А то ТП не отвечает вообще по электронке.

Можно вот сюда скинуть: support@e-911.ru

8

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

psi-storm
Специально для тех у кого горит - у нас предусмотрен пакет технической поддержки Unlimited, который включает в себя, как работы по администрированию Pro, так и более быстрые ответы на запрос в техническую поддержку.

Technical Support Department Gurtam
9

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

Понял. Вас.
Оставлю коммент для тех, кто пользуется продуктом wialonb3:
на всякий случай (а случаи бывают разные) держите в бэкапах файлы *.inf из папки storage/md ибо это же berkeley db, самая высокопроизводительная СУБД, и очень капризная к различным телодвижениям типа некорректных перезагрузок, завершений процессов, и вообще может жить своей жизнью, не учитывая пожеланий трудящихся. Иначе можете получить датчики приборов, которые пришлют инфу не в БД, как положено, а в файл в расширением msgs в папке storage, который может быть потерян. Файл *.inf с нужным номером из папки storage/md можно запросить в ТП Гуртам, но пацакам обычно требуется делать три раза ку при виде малиновых штанов...

10

Проблема восстановления файла db через db_dump - db_load

(24/07/2013 12:54:54 отредактировано psi-storm)

Re: Проблема восстановления файла db через db_dump - db_load

И вопрос в догонку. После всех манипуляций с восстановлением inf-файлов стали валтиться ошибки в логи:

Файл: trace.log         Строка 748290 Позиц83682502 байт                    100%
2013/07/24 15:37:02:686: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:02:813: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:02:942: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:03:071: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:03:198: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:03:326: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:03:454: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:03:582: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:03:710: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:03:838: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079
2013/07/24 15:37:03:970: storage_messages_env::register_batch_messages(167): err
or fetching database for time 1354268079

Чем может быть вызвана данная ошибка?

Сразу скажу, что верификацию файлов делал, все в порядке, журналы тоже пересоздавал, инф-файлы все на месте.
А ошибки все равно валятся.

И данная ошибка вызывает замедление работы системы в целом.

11

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

psi-storm, думаю что inf файл для первого индекса неправильный. Также можно говорить что этот объект(пользователь и т.д.) не был мигрирован при обновлении с 1101 на более позднюю версию. Тут точно стоит обратится в ТП, но ничего критически страшного.

At the dark side of telematics...
12

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

psi-storm
бэкап это святое, но многие забывают про элементарные вещи. Для некоторых было открытием, что для сервера требуется мощный ИБП, что нельзя копировать БД при работающем сервере.. Как таким "кю" доверяют работать с данными - непонятно.
Если сервер подвис не совсем и есть ssh, зайдите и корректно остановите процесс перед ресетом, сэкономите много времени и нервов. Наиболее часто зануление inf случается при пропадании электропитания, ресет руками - очень редкие случаи.

WDC Administrator
Gurtam
13

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

bako пишет:

Как таким "кю" доверяют работать с данными - непонятно.

Константин, чувство юмора на 5+ smile

Eduard Vald / GoGPS Service
www.gogps.eu
Skype: tivald.ee
14

Проблема восстановления файла db через db_dump - db_load

(25/07/2013 05:32:35 отредактировано psi-storm)

Re: Проблема восстановления файла db через db_dump - db_load

bako пишет:

psi-storm
бэкап это святое, но многие забывают про элементарные вещи. Для некоторых было открытием, что для сервера требуется мощный ИБП, что нельзя копировать БД при работающем сервере.. Как таким "кю" доверяют работать с данными - непонятно.
Если сервер подвис не совсем и есть ssh, зайдите и корректно остановите процесс перед ресетом, сэкономите много времени и нервов. Наиболее часто зануление inf случается при пропадании электропитания, ресет руками - очень редкие случаи.

Видимо у нас редкий случай.
Глубина архивов невысокая, подняли из бэкапов, а там тоже inf-файлы нулевые.
Благо были еще старые копии, но в них не хватало одного inf-файла, созданного позднее.
Сервер резервного копирования от Гуртам не куплен, так что работаем с тем, что есть.
По питанию - все в порядке.

Так что нет необходимости объяснять элементарные вещи, всегда задаю вопросы по существу, а вот отвечают на них либо общими фразами, либо вообще игнорируют.

15

Проблема восстановления файла db через db_dump - db_load

Re: Проблема восстановления файла db через db_dump - db_load

psi-storm
Про элементарщину - не принимайте на свой счёт, это явно не про вас. Мы не игнорируем вопросы, восстановление inf - это не для форума.

WDC Administrator
Gurtam
16

Проблема восстановления файла db через db_dump - db_load

(26/07/2013 08:02:36 отредактировано psi-storm)

Re: Проблема восстановления файла db через db_dump - db_load

Спасибо, понял. Уже помогли ваши ребята из ТП.