Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1 2 След.
RSS
Скрипт очистки базы данных — нужна помощь, как сделать., UniFi Network
 
Здравствуйте! Я пытаюсь разобраться, как добавить скрипт очистки, который описан здесь, но ни в документации, ни в постах нет пошаговых инструкций. Мой контроллер работает на Ubuntu, и, честно говоря, у меня очень мало опыта с этой системой. Может кто-нибудь объяснить простыми словами, шаг за шагом, как добавить скрипт очистки? Спасибо!
 
Вау, вот это да!!! Теперь понятно, почему первая очистка заняла так много времени. Если теперь запускать очистку каждый день, это, скорее всего, будет занимать «кучу» секунд, а может и минут. У тебя идёт ОЧЕНЬ много логирования, так что «несколько секунд» — это точно не про тебя.
 
Мы уже 30 месяцев работаем с контроллером без какой-либо очистки. Более 1700 точек доступа, свыше 40 объектов, обслуживаем больше 12 000 подключений каждый день. Папка с логами была примерно на 60 гигабайт, теперь — около 10 гигабайт. Раньше нам приходилось постоянно перезагружать контроллер в течение дня. Теперь он работает как часы. Разница в производительности просто колоссальная.
 
Вау — какая у тебя была большая база данных?!
 
ВАУ!!! Запускается на всех моих серверах за пару секунд. А насколько большая у тебя установка UniFi? Много точек доступа? Много устройств?
 
Скрипт выполнялся почти сутки, но да, он сработал! Спасибо!
 
@Gilgamesh1082,  
Это сработало у тебя?
 
Пару моментов, которые нужно учесть, и которые не упомянуты выше:

1) Сделайте резервную копию контроллера перед запуском скрипта,  
2) Убедитесь, что контроллер действительно запущен (иначе ничего не сработает).
 
Привет, @Gilgamesh1082,

Я пока не опубликовал инструкцию, потому что не хватает нескольких скриншотов, но вот инструкция для Windows — буду благодарен за любые комментарии, когда будешь её проходить:

Шаг 1: Установщик Windows UniFi не включает бинарный файл mongod. Зайди на официальный сайт MongoDB, выбери версию 2.4.14 в выпадающем списке и скачай .zip-архив, который подходит для архитектуры процессора твоего сервера.  
Шаг 2: Распакуй \bin\mongo.exe в выбранную рабочую папку. В этом примере используем C:\prune\. Остальные файлы из архива можно игнорировать.  
Шаг 3: Скачай скрипт на сервер по этой ссылке и сохрани его в рабочей папке.  
Шаг 4: Открой командную строку, нажав WINDOWS + R, набери cmd и нажми ENTER.  
Шаг 5: В командной строке перейди в рабочую папку командой:  
cd C:\prune\  
Шаг 6: Запусти пробный запуск скрипта. По умолчанию скрипт работает в режиме "dryrun" и покажет, что будет удалено из базы данных, но ничего не удалит на самом деле. Это чтобы убедиться, что скрипт запускается правильно:  
mongo.exe --port 27117 < mongo_prune_js.js  
Вывод должен выглядеть примерно так:  
root@UniFi-CloudKey:~# mongo.exe --port 27117 < mongo_prune_js.js  
MongoDB shell version: 2.4.10  
connecting to: 127.0.0.1:27117/test  
[dryrun] pruning data older than 7 days (1445423229629)...
switched to db ace  
[dryrun] pruning 17 entries (total 17) from alarm...
[dryrun] pruning 3492 entries (total 3989) from event...
[dryrun] pruning 0 entries (total 0) from guest...
[dryrun] pruning 422 entries (total 473) from rogue...
[dryrun] pruning 20 entries (total 36) from user...
[dryrun] pruning 0 entries (total 0) from voucher...
switched to db ace_stat  
[dryrun] pruning 1141 entries (total 1305) from stat_archive...
[dryrun] pruning 169 entries (total 204) from stat_daily...
[dryrun] pruning 3205 entries (total 3877) from stat_hourly...
[dryrun] pruning 0 entries (total 29) from stat_life...
[dryrun] pruning 0 entries (total 0) from stat_minute...
bye  
root@UniFi-CloudKey:~#  
Шаг 7: Отредактируй скрипт, чтобы отключить dryrun и настроить, сколько дней данных сохранить. По умолчанию скрипт сохраняет данные за 7 дней. Используй блокнот или похожий простой текстовый редактор, не применяй редакторы с форматированием, типа Wordpad или Word.  
Измени var days=7; чтобы поменять количество дней для сохранения; и замени var dryrun=true; на var dryrun=false; чтобы скрипт действительно очистил базу, а не только выполнил пробный запуск.  
Шаг 8: Запусти изменённый скрипт, чтобы реально очистить базу данных:  
mongo.exe --port 27117 < mongo_prune_js.js  
Примечание: так как база будет реально изменена, этот шаг может пройти намного дольше, чем пробный запуск в Шаге 6. Не прерывай работу до появления сообщения «bye».  
Шаг 9: Проверь, что операция прошла успешно и ошибок не было. Вывод должен быть похож на этот:  
<тут будет красивая скриншот>  
Шаг 10: Закрой окно терминала.  
Шаг 11 (по желанию): Удали созданную папку и файлы внутри, если не планируешь использовать их снова.
 
Есть какие-нибудь новости?
 
Вы потрясающий. Спасибо вам, сэр!
 
Должен быть готов к завтрашнему дню, с инструкциями для каждой платформы и скриншотами 😀
 
UBNT-Cody, у тебя есть примерное время, когда обновят статью в базе знаний по очистке? Там будет инструкция для Windows? Мне нужно почистить базы данных, но пока безуспешно. Нужно ли устанавливать MongoDB на сервер, где у меня сейчас работает контроллер? И нужно ли останавливать сервис контроллера, чтобы скрипт очистки заработал?
 
Отлично!

Выполнение указанных выше команд — хорошая привычка после обновления. Если забывать делать это, можно в итоге получить кучу лишнего занимаемого места! Не забудьте следить за размером базы данных, чтобы она не разрослась слишком сильно, иначе в будущем может понадобиться увеличить дисковое пространство вашей виртуальной машины для ремонта.
 
Привет, да, спасибо, помогло. Заняло некоторое время, но как только всё заработало, это главное. Также могу подтвердить, что эти действия освободили около 9 ГБ места.
 
Контроллер запустился успешно?
 
Ок, вот вывод:  
:~# ls -lah /var/log/unifi  
total 109M  
drwxr-xr-x  2 root root   4.0K Feb 29 22:47 .  
drwxrwxr-x 11 root syslog 4.0K Feb 29 06:43 ..  
-rw-r--r--  1 root root    75M Mar  1 04:27 mongod.log  
-rw-r--r--  1 root root   4.5M Mar  1 04:27 server.log  
-rw-r--r--  1 root root    11M Feb 29 22:47 server.log.1  
-rw-r--r--  1 root root    11M Feb 29 10:04 server.log.2  
-rw-r--r--  1 root root    11M Feb 28 21:04 server.log.3  

Так что файлы логов не такие уж и большие.  

:~# sudo apt-get autoclean  
Чтение списков пакетов... Готово  
Построение дерева зависимостей  
Чтение информации о состоянии... Готово  
Удалено libnss3 2:3.19.2.1-0ubuntu0.14.04.2 [1,103 kB]
Удалено libgnutls26 2.12.23-12ubuntu2.4 [393 kB]
Удалено ntpdate 1:4.2.6.p5+dfsg-3ubuntu2.14.04.7 [57.1 kB]
Удалено libnss3-nssdb 2:3.19.2.1-0ubuntu0.14.04.2 [10.6 kB]
Удалено libssl1.0.0 1.0.1f-1ubuntu2.16 [827 kB]
Удалено unifi 4.8.12-7387 [215 MB]
Удалено libgnutls-openssl27 2.12.23-12ubuntu2.4 [18.3 kB]
Удалено openssl 1.0.1f-1ubuntu2.16 [488 kB]

Немного почистил.  

Теперь запускаем Prune:  

:~# mongo --port=27117 < prune.js  
MongoDB shell version: 2.4.9  
подключение к: 127.0.0.1:27117/test  
удаление данных старше 7 дней (1456219864378)...  
переключено на базу ace  
удалено 20 записей (всего 30) из alarm...  
удалено 2845 записей (всего 29455) из event...  
удалено 0 записей (всего 0) из guest...  
удалено 1253 записи (всего 5135) из rogue...  
удалено 77 записей (всего 447) из user...  
удалено 0 записей (всего 0) из voucher...  
{ "ok" : 1 }  
переключено на базу ace_stat  
удалено 6081 запись (всего 17431) из stat_archive...  
удалено 316 записей (всего 875) из stat_daily...  
удалено 6806 записей (всего 19451) из stat_hourly...  
удалено 0 записей (всего 3255) из stat_life...  
удалено 0 записей (всего 0) из stat_minute...  
удалено 0 записей (всего 0) из stat_monthly...  
{ "ok" : 1 }  
{ "ok" : 1 }  
пока
 
Кто-нибудь уже нашёл способ обойти ошибку «Невозможно восстановить базу данных ace_stat с размером:»?
 
Итак, я обратился к этой статье https://help.ubnt.com/hc/en-us/articles/204911424-UniFi-Remove-prune-older-data-and-adjust-mongo-database-size и использовал старый скрипт old_prune.js. Но результат всё тот же. Мне нужно, чтобы база стала как минимум в два раза меньше, не больше 1 Гб.
 
Привет! Сделал всё по твоим инструкциям, но размер базы данных не изменился. У меня версия 2.4.6 на Windows 2012. Возможно, можно удалить какие-то файлы, которые давно не используются, например, с 2014 года? Но идеальный вариант — значительно уменьшить размер самой базы.
Страницы: 1 2 След.
Читают тему (гостей: 1)