====== Администрирование Баз Данных: UDR и SDR ====== {{indexmenu_n>2}} До 14 версии используется только одна встроенная база данных **UDR (User Data Repository)** предназначена для постоянного хранения данных об услугах, полисингах и других настройках FastDPI.\\ С 14 Версии вводится разделение UDR на UDR и SDR. Разделение происходит автоматически при обновлении версии. \\ **SDR (System Data Repository)** предназначена для хранения настроек FastDPI, не связанных с абонентами. Можно считать, что SDR является продолжением fastdpi.conf. Никакой специальной активации SDR не требуется - необходимые .mdb-файлы создаются автоматически при включении соответствующего режима в fastdpi.conf. Глобальные правила для vlan drop/pass/hide/permit, заданные прежней CLI-командой vlan group, будут сконвертированы и перенесены из UDR в SDR c удалением из UDR. При даунгрейде с 14 на 13 версию данные из SDR будут потеряны, нужно делать ручной перенос через сохранение копии SDR перед обновлением. **Список таблиц в UDR** ^ Таблица ^ Назначение ^ | bindings | Связь login и адреса | | bindings_multi | Связь login и адреса для мультиабонентов (с несколькими IP) | | ip_props | Свойства абонентов BRAS | | policing | Настройки полисинга для абонентов | | profile_names | Имена профилей | | profiles | Профили услуг и полисинга | | services | Настройки услуг для абонентов | | vchannel_policing | Настройки полисинга для каналов | **Структура SDR** \\ В каталоге SDR /var/db/dpisdr, в зависимости от включенных режимов, находятся файлы базы данных: * fdpi.mdb: общие данные * bras.mdb: данные, относящиеся к режиму BRAS * router.mdb: данные, относящиеся к режиму роутера Содержимое этих БД для 14 версии: fdpi.mdb: * acl_vlan_rule - хранит VLAN правила (правила задаются CLI-командами группы vlan rule) * acl_qinq_rule - хранит QinQ правила (правила задаются CLI-командами группы vlan rule) bras.mdb: * l2tp_server_props - L2TP-сервера, обслуживаемые BRASом, и их свойства. (правила задаются CLI-командами группы l2tp server) router.mdb: * neighbor4 - IPv4 neighborDB, [[dpi:dpi_components:router#arp_менеджмент|подробнее в разделе "ARP менеджмент"]] * neighbor6 - IPv6 neighborDB, [[dpi:dpi_components:router#arp_менеджмент|подробнее в разделе "ARP менеджмент"]] Максимальный размер каждого из .mdb-файлов задается параметром udr_size. Backup: сохранение копий .mdb-файлов каталога SDR (желательно при остановленном fastDPI) Восстановление: копирование .mdb-файлов в каталот SDR ==== Активация встроенной UDR ==== Активация UDR требуется в обязательном порядке при использовании динамических IP адресов и для поддержки абонентов с несколькими IP. Никакой специальной активации SDR не требуется - необходимые .mdb-файлы создаются автоматически при включении соответствующего режима в fastdpi.conf. Активация UDR осуществляется настроечным параметром в файле **///etc/dpi/fastdpi.conf//** udr=1 Созданная база данных размещается в каталоге **///var/db/dpi //** Сделать копию БД можно без остановки DPI командой резервного копирования mdb_copy /var/db/dpi ./DB и выполнять дальнейшие манипуляции над копией БД. ==== Увеличение размера БД UDR и SDR ==== По умолчанию размер БД UDR и SDR ограничен 1GB, если у вас количество профилей полисинга превышает 1 млн, то потребуется увеличить размер по умолчанию: udr_size=2147483648 установит размер БД в 2GB Встроенная БД не требует администрирования и устойчива к отказам. Тем не менее в редких случаях происходило повреждение встроенной БД. В этом случае возможны следующие варианты действий: ==== Восстановление БД с переносом данных ==== Останавливаем fastDPI service fastdpi stop Выполняем скрипт rm -rf /var/db/dpi.recover/* mkdir -p /var/db/dpi.recover/tmp for table in $(mdb_dump -l /var/db/dpi); do mdb_dump -f /var/db/dpi.recover/tmp/dump.$table.load -s $table /var/db/dpi mdb_load -f /var/db/dpi.recover/tmp/dump.$table.load /var/db/dpi.recover done rm /var/db/dpi/lock.mdb mv /var/db/dpi/data.mdb /var/db/dpi.recover/data.mdb.backup cp -f /var/db/dpi.recover/data.mdb /var/db/dpi/ Запускаем fastDPI service fastdpi start ==== Удаление БД и загрузка в нее данных заново из внешнего источника (биллинга и т.п.) ==== \\ Останавливаем fastDPI service fastdpi stop Удаляем БД /bin/rm /var/db/dpi/* Запускаем fastDPI service fastdpi start Загружаем в БД заново все настройки с помощью своих скриптов ===== Экспериментальный раздел ===== ==== Восстановление БД в формат команд fdpi_ctrl ==== Останавливаем fastDPI service fastdpi stop Выполняем скрипт mdb_dump -p -a -f dump.sh /var/db/dpi /bin/rm /var/db/dpi/* Запускаем fastDPI service fastdpi start Запускаем скрипт chmod +x dump.sh ./dump.sh ==== Восстановление отдельных таблиц БД в формат команд fdpi_ctrl ==== Останавливаем fastDPI service fastdpi stop Выполняем скрипт for table in $(mdb_dump -l /var/db/dpi); do mdb_dump -p -f dump.$table.sh -s $table /var/db/dpi done /bin/rm /var/db/dpi/* Запускаем fastDPI service fastdpi start Выбираем нужные нам скрипты и запускаем, **пример** chmod +x dump.bindings.sh ./dump.bindings.sh