Тема: Проблема восстановления файла 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-файлы нулевой длины, как работало, непонятно.