Восстановление убитого кэша Беркли (BerkeleyDB)

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение zed »

cycler писал(а):Можно ли прервать восстановление без ущерба для данных?
Можно.
cycler
Новичок
Сообщения: 32
Зарегистрирован: 15 июн 2013, 10:01
Благодарил (а): 10 раз
Поблагодарили: 2 раза

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение cycler »

Йессс!!! В режиме Recover environment [cmd: db_recover -v] всё оч.быстро восстановилось.
У меня есть подозрение, почему кеш упал. Я ему предварительно, видимо, помог. Я поставил на папку /cache_db запрет на удаление файлов/папок.
скрытый текст: показать
Сначала я поставил запрет на изменение, но карты не поднялись, значит беркли что-то пишет в свои конфиги.. тогда я оставил только запрет на удаление.
Когда запустил восстановление в режиме Recover environment, он мне в первую очередь ругнулся, что не может удалить DB_CONFIG. Зачем удалять конфиги..? Ладно, запрет на удаление снял, отрекавилось буквально за 30сек и в новой версии САС всё заработало (в старой не пробовал)! Ура, товарищи!!!
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение zed »

cycler писал(а):Я ему предварительно, видимо, помог. Я поставил на папку /cache_db запрет на удаление файлов/папок.
Зачем? Если вы хотели подключить кэш в режиме только для чтения, то для этого есть специальный конфиг. Подробности в тикете: 0001874: Berkeley cache: READ-ONLY
cycler писал(а):он мне в первую очередь ругнулся, что не может удалить DB_CONFIG. Зачем удалять конфиги..?
Возможно вы его сами попросили, поставив галочку в настройках. И оно хотело перезаписать конфиг, в соответствии с выбранными настройками.
Аватара пользователя
DJ VK
Гуру
Сообщения: 1468
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 80 раз
Поблагодарили: 314 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение DJ VK »

Итак, вопрос. Почистили мы карту. переместили, удалили что-то. База естественно похудела лишь виртуально.
Нет ли возможности аналогично reset LSN и verification сделать такую же консольную оптимизацию данных, с чисткой места мертвых тайлов?
или даже засунуть этот процесс в первый пункт.
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение zed »

Есть два варианта:
1. Использовать связку из 2-х утилит: db_dump + db_load. Эта операция является аналогом команды VACUUM для SQLite, с тем отличием что тут данные вначале будут распакованы во временный файл (db_dump), а затем из этого временного файла будет создан файл БД (db_load). В SQLite же это выполняется за одну операцию.

2. Написать свою утилиту и использовать там метод: DB->compact. Это метод "щадящей" оптимизации (без пересоздания файла БД), поддерживает множество опций, но консольной утилиты для этой операции они почему-то не сделали. Возможно из-за того, что при обычных операциях записи в БД, там такая оптимизация проводится по-умолчанию, но не для всей БД, а только для тех страниц, которые используются для поиска/записи текущего ключа (key). Т.е. структура БД самооптимизирующаяся.
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение Parasite »

zed писал(а):Есть два варианта:
1. Использовать связку из 2-х утилит: db_dump + db_load. Эта операция является аналогом команды VACUUM для SQLite, с тем отличием что тут данные вначале будут распакованы во временный файл (db_dump), а затем из этого временного файла будет создан файл БД (db_load). В SQLite же это выполняется за одну операцию.

2. Написать свою утилиту и использовать там метод: DB->compact. Это метод "щадящей" оптимизации (без пересоздания файла БД), поддерживает множество опций, но консольной утилиты для этой операции они почему-то не сделали. Возможно из-за того, что при обычных операциях записи в БД, там такая оптимизация проводится по-умолчанию, но не для всей БД, а только для тех страниц, которые используются для поиска/записи текущего ключа (key). Т.е. структура БД самооптимизирующаяся.
3. Переименовать нужный файл базы в .bad, и заюзать zedову утиль в режиме восстановления .bad (и оно сделает автоматом п.1) :roll:
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение zed »

Новая версия: sdb_util_1.0.2.8.7z

Изменения касаются DB_CONFIG:
- убрана строчка, определяющая зарезервированное число мьютексов (mutex_set_max 30000), поскольку новые версии SAS умеют более точно определять это число
- по-умолчанию включён пресет High Durability. В этом же режиме работает и SAS, при отсутствии DB_CONFIG.
Gma
Советчик
Сообщения: 427
Зарегистрирован: 10 апр 2011, 23:10
Благодарил (а): 35 раз
Поблагодарили: 89 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение Gma »

После установки дополнительных карт (слоёв) _Coverage сломался кэш Я-карт, хранимый в беркли. все попытки восстановления с помощью sdb_util не удались
Вложения
sdb.rar
(22.78 КБ) 224 скачивания
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение zed »

В sdb.log ошибки у двух карт:

1. s:\sas\cache_db\imagery\

Код: Выделить всё

BerkeleyDB: file z15\9\4\38.19.sdb has LSN 4/2426893, past end of log at 1/1066665 [root path: s:\sas\cache_db\imagery\]
2. s:\sas\cache_db\yamapng\

Код: Выделить всё

BerkeleyDB Env: unable to join the environment [root path: s:\sas\cache_db\yamapng\]
Для первого кэша нужно запустить проверку sdb файлов (опция Restore cache after crash: Recover & Verify (default) в sdb_util), у второго кэша нужно попробовать удалить файл env\__db.register и запустить восстановление (опция Recover environment [cmd: db_recover -v]).

Подозреваю, что проблемы с кэшем появились из-за старого файла с настройками DB_CONFIG. После того, как восстановите кэш, удалите эти файлы и пускай SAS создаст актуальные настройки (при этом нужно взять последний релиз, а не какую-то лохматую версию).
Gma
Советчик
Сообщения: 427
Зарегистрирован: 10 апр 2011, 23:10
Благодарил (а): 35 раз
Поблагодарили: 89 раз

Re: Восстановление убитого кэша Беркли (BerkeleyDB)

Сообщение Gma »

Имеджери работает, а Ях так и не хочет. весия САСа была 14009 (не такая уж и старая) сейчас крайняя ночнушка. результат одинаков. Версия утилиты даже моложе выложенной тут.
Вложения
sdb2.rar
(14.51 КБ) 236 скачиваний
Ответить

Вернуться в «SAS.Планета»