====== Администрирование Баз Данных: 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