Skip to end of metadata
Go to start of metadata

Не претендуя на оригинальность... 

Вчера, абсолютно неожиданно и без объявления войны, перестала работать база mongo. И как следствие перестал работать noc. 

Почитав форумы и следуя разным инструкциям по ремонту баз - так не достиг желаемого. Возможно, имея больше времени, базу удалось бы поднять, но времени как раз и не было. Поступил проще - удалил все файлы из /var/lib/mongodb/. Затем запустил 

#./scripts/post-update.

Только после этого запустился noc. За ночь discovery вытянул все интерфейсы и нашел все линки. Можно было успокоиться, но в Network Map пришлось бы расставлять все узлы по новой. А это долго и откровенно лень. Тем более, что картой сети могло дело и не ограничиться. 

Помня что имеется механизм резервного копирования, решил этим воспользоваться. 

<mikevlz> mongorestore читал?
<mikevlz> читай, запускай. Оно принимает путь к каталогу из него может восстановить базу

 

Собственно при помощи mongorestore будем восстанавливать данные 

если коротко, то имеем такие опции

--help — вызов справки
-v [ --verbose ] – выводить больше информации (например, для большей детализации необходимо использовать -vvvvv)
-h [ --host ] – хост mongo для соединения («left,right», если используется replica+sets)
--port – порт сервера, также возможно использовать –host hostname:port
-d [ --db ] – указать базу данных
-c [ --collection ] – указать используемые таблицы
-u [ --username ] – имя пользователя
-p [ --password ] – пароль
--ipv6 – включить поддержку IPv6 (по умолчанию отключена)
--dbpath – прямой доступ к файлам базы mongod по указанному пути, вместо конекта к серверу mongod. Необходима блокировка директории с данными, поэтому не может быть использована если монго-сервер использует базу по указнному пути
--directoryperdb – если задан аргумент dbpath, то каждая БД находится в отдельной директории
--objcheck - проверить обьект на валидность перед вставкой
--filter — использовать фильтр перед вставкой
--drop — удалить таблицу перед импортом
--indexesLast — подождать для добавления индекса (происходит быстрее, если данные вставляются не по порядку индекса)

В первую очередь распаковываем бекап с базой монги. После чего выполняем следующую команду

backup # mongorestore --verbose --db noc /var/backup/noc

 /var/backup/noc - путь к уже распакованным  копиям.

 

 Можно проверять результат. Я еще перезапустил mongodb и noc-launcher, на всякий случай.

Данный восстановились, но так как ночью работал дискавери, то все данные по интерфейсам и линкам продублировались. 

Снова читаем доку по mongorestore

--drop
Modifies the restoration procedure to drop every collection from the target database before restoring the collection from the dumped backup.

backup # mongorestore --drop --verbose --db noc /var/backup/noc

Проверяем.

 

 

 

  • No labels

3 Comments

  1. Unknown User (lexus)

    Как раз есть в планах этим воспользоваться для оптимизации БД, больно уж она раздулась за прошедшее время.

    1. Unknown User (mikevlz)

      достаточно прогнать на базе repairDatabase или как-то так.

      Оно должно похудеть.

      1. Unknown User (lexus)

        Уже пробовал - нет столько свободного места, сколько нужно для этой операции.