Описание
Реляционная СУБД, используемая в проекте SoftWLC для хранения основных данных, необходимых для работы системы управления. Используется версия mysql-server-5.7.
В проекте используются следующие базы данных:
База данных | Описание | Пакет для создания/обновления |
---|---|---|
eltex_ems | Хранит данные о доменной структуре, дереве объектов, пользователях EMS, конфигурационные данные EMS и др. | eltex-ems-db |
eltex_alert | Хранит журнал событий EMS и устройств. | eltex-ems-db |
wireless | Хранит настройки SSID. База создается/обновляется при установке пакета . | eltex-ems-db |
eltex_auth_service | Хранит данные о пользователях ЛК, конструктора порталов и NBI. | eltex-auth-service-db |
radius | Хранит данные о пользователях Wi-Fi, их учетные записи, настройки и аккаунттинг. | eltex-radius-db |
ELTEX_PORTAL | Хранит данные о виртуальных порталах, используемых в проекте. | eltex-portal |
eltex_doors | Хранит JWT-токены, сгенерированные сервисом. | eltex-doors |
eltex_bruce | Хранит данные о планировщике отчетов eltex-bruce | eltex-ems-db |
eltex_jobs | Хранит данные о выполненных отчетах eltex-jobs | eltex-ems-db |
eltex_ngw | Хранит данные об отправленных сообщениях СМС и email | eltex-ems-db |
eltex_jerry | Хранит данные индивидуальных конфигураций ОТТ | eltex-ems-db |
eltex_ont | Хранит данные об устройствах ONT | eltex-ems-db |
eltex_ott | Хранит настройки OTT - черные списки, профили, настройки ESR, параметры xauth | eltex-ems-db |
eltex_pcrf | Хранит данные PCRF - списки доступа пользователей и приложений, сессии пользователей, назначеные сервисы и сценарии, а также CoA логи | eltex-ems-db |
eltex_sorm2 | Хранит параметры профилей и привязок SORM2 | eltex-ems-db |
eltex_wifi_customer_cab | Хранит данные и настройки Личного Кабинета | eltex-ems-db |
Syslog | Хранит данные Syslog | eltex-ems-db |
Управление сервисом
Действие | Команда | Ответ |
---|---|---|
Проверка состояния | service mysql status | Сервис работает mysql start/running, process <pid> Сервис не работает mysql stop/waiting |
Запуск сервиса | service mysql start | Сервис запустился mysql start/running, process <pid> Сервис уже работает start: Job is already running: mysql |
Остановка сервиса | service mysql stop | Сервис успешно остановлен mysql stop/waiting |
Перезапуск сервиса | service mysql restart | Сервис успешно перезапущен mysql stop/waiting mysql start/running, process <pid> |
Конфигурация
Настройка MySQL осуществляется при помощи конфигурационных фалойв /etc/mysql/my.cnf (дефолтный файл,устанавливается вместе с пакетом mysql-server) и /etc/mysql/conf.d/eltex-ems.cnf (содержит дополнительную конфигурацию, важную для работы системы управления,устанавливается вместе с пакетом eltex-ems-db).
Количество коннектов
В зависимости от предполагаемого количества используемых точек доступа, необходимо указать максимальное количество коннектов к БД. За это отвечает параметр max_connections. По умолчанию он прописан в файле /etc/mysql/mysql.conf.d/mysqld.cnf , но закомментирован. Раскомментируйте его и пропишите необходимое значение, например так:
max_connections = 500
Это значение можно выбрать из таблицы Расчет количества коннектов к БД (нижняя строка таблицы)
Объем памяти
MyISAM используется в БД eltex_alert и syslog. InnoDB во всех остальных БД, включая высоконагруженную таблицу radius.radacct
После установки БД необходимо сконфигурировать объем памяти, выделяемый для служб MyISAM и InnoDB (/etc/mysql/conf.d/eltex-ems.cnf параметры key_buffer_size и innodb_buffer_pool_size соответственно).
Рекомендации по настройке:
При установке БД на выделенном хосте, рекомендуемый объем памяти 30-40% от общей RAM для каждой из служб.
При установке всех сервисов на один хост объем памяти, выделяемый для каждой из служб, рассчитывается исходя из того, что основному Java приложению (eltex-ems), веб-серверу tomcat6, NBI, ЛК, eltex-apb, так же требуются большие объемы виртуальной памяти. Настраиваются отдельно для каждой из служб в соответствующих конфигурационных файлах.
Объем памяти, выделяемый для службы InnoDB, может быть 2-3 раза больше, чем для MyISAM в том случае, если не планируется собирать syslog с большого количества устройств.
Например, при установке всех служб SoftWLC на один хост, выделены следующие объемы:
Для сервера на 16G:
key_buffer_size = 2G innodb_buffer_pool_size = 4G
Для сервера на 64G:
key_buffer_size=8G innodb_buffer_pool_size=24G
После изменения конфигурационных файлов требуется перезапуск MySQL командой:
service mysql restart
Параметры key_buffer_size и innodb_buffer_pool_size могут быть изменены в любое время на основании показателей производительности машины. Смена значений влияет на скорость обработки данных во время работы службы MySQL и не может привести к потере уже сохраненных данных или смене структуры хранения их в файловой системе.
Дополнительные учетные записи пользователей баз данных
Сбор rsyslog
Для сбора логов с серверов DHCP и RADIUS в базе данных должна быть создана учетная запись пользователя rsyslog.
Команды:
CREATE USER 'rsyslog'@'HOST' identified by 'root'; GRANT ALL on Syslog.* TO 'rsyslog'@'HOST' identified by 'root';
HOST – адрес серверов RADIUS или DHCP в сети управления. Для каждого сервера должна быть создана отдельная запись.
Проверка репликации из GUI EMS
Для того чтобы сервер EMS имел возможность проверить состояние репликации, нужны дополнительные учетные записи, создать их можно из консоли MySQL командами:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'HOST' IDENTIFIED BY 'root'; FLUSH PRIVILEGES;
где HOST – адрес серверов EMS в сети VRRP. Для каждого сервера должна быть создана отдельная запись.
Расчет количества коннектов к БД в зависимости от нагруженности серверов
до 50 ТД | от 50 до 200 ТД | от 200 до 500 ТД | от 500 до 4 тыс. ТД | ||
Количество коннектов на сервисах SoftWLC (эти настройки указываются в конфигурационных файлах сервисов для подключения к БД) | |||||
nbi (суммарное) | 16 | 38 | 78 | 156 | |
Количество подключений сервиса к каждой БД | radius | 4 | 12 | 24 | 48 |
ems | 4 | 10 | 22 | 48 | |
wireless | 4 | 10 | 22 | 48 | |
logs | 2 | 4 | 6 | 8 | |
eltex_auth_service | 2 | 2 | 4 | 4 | |
ems (суммарное) | 20 | 40 | 92 | 186 | |
Количество подключений сервиса к каждой БД | event | 4 | 8 | 16 | 32 |
tree | 4 | 8 | 20 | 40 | |
syslog | 2 | 4 | 4 | 4 | |
radius | 4 | 8 | 20 | 40 | |
wireless | 3 | 6 | 14 | 30 | |
PCRF (суммарное) | 6 | 12 | 24 | 48 | |
Количество подключений сервиса к каждой БД | radius | 2 | 4 | 8 | 16 |
sql.ems | 2 | 4 | 8 | 16 | |
sql.wireless | 2 | 4 | 8 | 16 | |
radius | 5 | 10 | 15 | 32 | |
eltex-portal | 10 | 10 | 15 | 32 | |
eltex-portal-constructor | 10 | 10 | 10 | 10 | |
rsyslog-mysql | 2 | 4 | 6 | 10 | |
репликация | 2 | 2 | 2 | 2 | |
резерв | 8 | 8 | 8 | 8 | |
Суммарное количество коннектов на MySQL (количество коннектов, которое нужно прописать в настройках БД) | 78 | 130 | 234 | 449 |
Анализ работы сервера mysql c помощью MySQLTuner
MySQLTuner — это perl-скрипт, который анализирует статистику работы MySQL и выдает свои рекомендации по оптимизации настроек MySQL-сервера.
Для корректного анализа и сбора статистики сервер MySQL должен проработать некоторое время без смены параметров конфигурации и без перезагрузок, по рекомендации самого MySQLTuner не менее 24 часов.
Для запуска скрипта выполните команду:
/usr/lib/eltex-ems-db/tools/mysqltuner.pl --user root --pass root
После запуска скрипт произведет анализ и выдаст следующую информацию:
Особое внимание стоит уделить строкам, помеченным символами [!!]
Докеризация сервиса
Внимание!
Установка mysql в докере используется для установки в докере скриптом в небольших однохостовых инсталляциях. При многохостовой установке не рекомендуется поднимать MYSQL в докере.
Начиная с версии 1.30 можно запустить mysql в докер-контейнере. Такая установка MYSQL предназначена для установки скриптом в докере, где она выполняется автоматически, но может быть использована при других схемах установки контроллера SoftWLC.
Подготовка к запуску
Для запуска mysql в докере необходимо установить docker и docker compose. Далее нужно создать файл docker-compose.yml. Его содержимое представлено ниже:
version: "3" services: eltex-mysql: container_name: eltex-mysql image: ${ELTEX_HUB}/eltex-mysql:${SWLC_VERSION} restart: unless-stopped ports: - "3306:3306" env_file: - eltex-mysql.env environment: - TZ=${TZ} volumes: - /opt/mysql-docker/data:/var/lib/mysql
- container_name - Имя контейнера;
- image - url образа контейнера в репозитории ELTEX;
- ports - проброс порта 3306 для взаимодействия с СУБД;
- env_file - файл с настройками контейнера
- environment - переменные окружения (таймзона)
- volumes - монтирование директории, в которой будут сохранятся данные mysql
Важно
<MYSQL_DATA_DIR> нужно заменить на путь к существующей директории.
В файле .env нужно указать следующие параметры:
ELTEX_HUB=hub.eltex-co.ru/softwlc # Common version number SWLC_VERSION=1.30 # Настройки таймзоны TZ=Asia/Novosibirsk # Пароль пользователя базы данных. Один для всех сервисов. MYSQL_USER=javauser MYSQL_PASSWORD=javapassword
- ELTEX_HUB - url репозитория Eltex
- SWLC_VERSION - Версия контроллера softwlc
- TZ - Часовой пояс
- MYSQL_USER - имя пользователя БД
- MYSQL_PASSWORD - пароль пользователя БД
Далее нужно создать файл eltex-mysql.env, в котором необходимо указать следующие параметры:
MYSQL_ROOT_USER=root MYSQL_ROOT_PASSWORD=root MYSQL_USER=${MYSQL_USER} MYSQL_PASSWORD=${MYSQL_PASSWORD} ANSWER_SOFTWLC_ROOT_DOMAIN=root ANSWER_SOFTWLC_SERVICE_USER_PASSWORD=softwlc ANSWER_AUTH_SERVICE_ADMIN_USER=admin ANSWER_AUTH_SERVICE_ADMIN_PASSWORD=password ANSWER_EMS_LANG=1 ANSWER_EMS_ACCESS_TYPE_DOMAIN=1 ANSWER_SOFTWLC_BACKUP_DB=1
- MYSQL_ROOT_USER - Пользователь с правами администратора MySQL.
- MYSQL_ROOT_PASSWORD - Пароль для пользователя с правами администратора MySQL.
- MYSQL_USER - Пользователь базы данных MySQL.
- MYSQL_PASSWORD - Пароль для пользователя базы данных MySQL.
- ANSWER_SOFTWLC_ROOT_DOMAIN Домен для системного пользователя SoftWLC.
- ANSWER_SOFTWLC_SERVICE_USER_PASSWORD - Пароль системного пользователя SoftWLC.
- ANSWER_AUTH_SERVICE_ADMIN_USER - Имя администратора службы аутентификации.
- ANSWER_AUTH_SERVICE_ADMIN_PASSWORD - Пароль администратора службы аутентификации.
- ANSWER_EMS_LANG - Язык в ems.
- ANSWER_EMS_ACCESS_TYPE_DOMAIN - Тип доступа к домену для службы управления событиями.
- ANSWER_SOFTWLC_BACKUP_DB - Флаг для резервного копирования базы данных SoftWLC.
Запуск контейнера
Для запуска контейнера необходимо выполнить команду
sudo docker compose up -d