Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных


Описание


Реляционная СУБД, используемая в проекте SoftWLC для хранения данных, необходимых для работы системы управления. Используется версия 15.1 Distrib 10.6.17-MariaDB. MariaDB является форком MySQL и имеет множество сходств с этой системой управления базами данных.  MariaDB имеет поддержку новых типов данных, улучшенную производительность и масштабируемость, а также множество других дополнительных возможностей. Кроме того, MariaDB поддерживает большинство функциональности MySQL и обеспечивает возможность миграции баз данных из MySQL без изменений в самих данных.

В проекте используются следующие базы данных:

База данныхОписаниеПакет для создания/обновления                                                                          
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-bruceeltex-ems-db
eltex_jobsХранит данные о выполненных отчетах eltex-jobseltex-ems-db
eltex_ngwХранит данные об отправленных сообщениях СМС и emaileltex-ems-db
eltex_jerryХранит данные индивидуальных конфигураций ОТТeltex-ems-db
eltex_ontХранит данные об устройствах ONTeltex-ems-db
eltex_ottХранит настройки OTT - черные списки, профили, настройки ESR, параметры xautheltex-ems-db
eltex_pcrfХранит данные PCRF - списки доступа пользователей и приложений, сессии пользователей, назначеные сервисы и сценарии, а также CoA логиeltex-ems-db
eltex_sorm2Хранит параметры профилей и привязок SORM2eltex-ems-db
eltex_wifi_customer_cabХранит данные и настройки Личного Кабинетаeltex-ems-db
SyslogХранит данные Syslogeltex-ems-db

Управление сервисом


ДействиеКомандаОтвет
Проверка состояния
service mariadb status

Сервис работает

mariadb start/running, process <pid>

Сервис не работает

mariadb stop/waiting
Запуск сервиса
service mariadb start

Сервис запустился

 mariadb start/running, process <pid>

Сервис уже работает

start: Job is already running: mariadb
Остановка сервиса
service mariadb stop

Сервис успешно остановлен

mariadb stop/waiting
Перезапуск сервиса
service mariadb restart

Сервис успешно перезапущен

mariadb stop/waiting
mariadb start/running, process <pid>




Конфигурация


Настройка MariaDB осуществляется при помощи конфигурационных файлов /etc/mysql/mariadb.cnf (дефолтный файл, устанавливается вместе с пакетом mariadb-server) и /etc/mysql/conf.d/eltex-ems.cnf (содержит дополнительную конфигурацию, важную для работы системы управления, устанавливается вместе с пакетом eltex-ems-db).

Количество коннектов

В зависимости от предполагаемого количества используемых точек доступа, необходимо указать максимальное количество коннектов к БД. За это отвечает параметр max_connections. По умолчанию он прописан в файле /etc/mysql/mariadb.conf.d/50-server.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
 

 После изменения конфигурационных файлов требуется перезапуск MariaDB командой:

service mariadb restart

Параметры key_buffer_size и innodb_buffer_pool_size могут быть изменены в любое время на основании показателей производительности машины. Смена значений влияет на скорость обработки данных во время работы службы MariaDB и не может привести к потере уже сохраненных данных или смене структуры хранения их в файловой системе.

Дополнительные учетные записи пользователей баз данных


Сбор 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 имел возможность проверить состояние репликации, нужны дополнительные учетные записи, создать их можно из консоли MariaDB командами:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'HOST' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;

где HOST – адрес серверов EMS в сети VRRP. Для каждого сервера должна быть создана отдельная запись.



Расчет количества коннектов к БД в зависимости от нагруженности серверов




до 50 ТДот 50 до 200 ТДот 200 до 500 ТДот 500 до 4 тыс. ТД

Количество коннектов на сервисах SoftWLC

(эти настройки указываются в конфигурационных

файлах сервисов для подключения к БД)

     
nbi (суммарное)
163878156
Количество подключений сервиса к каждой БДradius4122448
ems4102248
wireless4102248
logs2468
eltex_auth_service2244
      
ems (суммарное)
204092186
Количество подключений сервиса к каждой БДevent481632
tree482040
syslog2444
radius482040
wireless361430
      
PCRF (суммарное)
6122448
Количество подключений сервиса к каждой БДradius24816
sql.ems24816
sql.wireless24816
      
radius 
5101532
eltex-portal 
10101532
eltex-portal-constructor
10101010
rsyslog-mysql
24610
      
репликация
2222
резерв
8888
      
 

Суммарное  количество коннектов на MariaDB

(количество коннектов, которое нужно прописать в настройках БД)

78130234449

Анализ работы сервера MariaDB c помощью MySQLTuner


MySQLTuner — это perl-скрипт, который анализирует статистику работы MySQL и выдает свои рекомендации по оптимизации настроек MySQL-сервера.

Для корректного анализа и сбора статистики сервер MySQL должен проработать некоторое время без смены параметров конфигурации и без перезагрузок, по рекомендации самого MySQLTuner не менее 24 часов.


 Для запуска скрипта выполните команду:

/usr/lib/eltex-ems-db/tools/mysqltuner.pl --user root --pass root

 После запуска скрипт произведет анализ и выдаст следующую информацию:

Пример вывода результатов
 >>  MySQLTuner 1.6.14 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
 >>  Run with '--help' for additional options and output filtering

[--] Skipped version check for MySQLTuner script
[OK] Logged in using credentials passed on the command line
[OK] Currently running supported MySQL version 5.7.32-0ubuntu0.16.04.1
[OK] Operating on 64-bit architecture
 
-------- Storage Engine Statistics -----------------------------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA 
[--] Data in InnoDB tables: 31M (Tables: 79)
[--] Data in MyISAM tables: 1M (Tables: 6)
[OK] Total fragmented tables: 0
 
-------- Security Recommendations ------------------------------------------------------------------
[OK] There are no anonymous accounts for any database users
[OK] All database users have passwords assigned
[!!] User 'root@localhost' has user name as password.
[!!] User 'javauser@%' hasn't specific host restriction.
[!!] User 'radius@%' hasn't specific host restriction.
[!!] There is no basic password file list!
 
-------- CVE Security Recommendations --------------------------------------------------------------
[--] Skipped due to --cvefile option undefined
 
-------- Performance Metrics -----------------------------------------------------------------------
[--] Up for: 1d 19h 3m 44s (62K q [0.404 qps], 2K conn, TX: 29M, RX: 6M)
[--] Reads / Writes: 86% / 14%
[--] Binary logging is disabled
[--] Physical Memory     : 7.8G
[--] Max MySQL memory    : 480.4M
[--] Other process memory: 2.3G
[--] Total buffers: 320.0M global + 1.1M per thread (151 max threads)
[--] P_S Max memory usage: 72B
[--] Galera GCache Max memory usage: 0B
[OK] Maximum reached memory usage: 371.0M (4.65% of installed RAM)
[OK] Maximum possible memory usage: 480.4M (6.02% of installed RAM)
[OK] Overall possible memory usage with other process is compatible with memory available
[OK] Slow queries: 0% (0/62K)
[OK] Highest usage of available connections: 31% (48/151)
[OK] Aborted connections: 0.04%  (1/2596)
[OK] Query cache is disabled by default due to mutex contention on multiprocessor machines.
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 1K sorts)
[!!] Joins performed without indexes: 2591
[OK] Temporary tables created on disk: 17% (333 on disk / 1K total)
[OK] Table cache hit rate: 84% (659 open / 776 opened)
[OK] Open file limit used: 1% (285/16K)
[OK] Table locks acquired immediately: 100% (84K immediate / 84K locks)
 
-------- Performance schema ------------------------------------------------------------------------
[--] Performance schema is enabled.
[--] Memory used by P_S: 72B
[--] Sys schema is installed.
 
-------- ThreadPool Metrics ------------------------------------------------------------------------
[--] ThreadPool stat is disabled.
 
-------- MyISAM Metrics ----------------------------------------------------------------------------
[!!] Key buffer used: 18.5% (3M used / 16M cache)
[OK] Key buffer size / total MyISAM indexes: 16.0M/1.1M
[OK] Read Key buffer hit rate: 99.0% (7K cached / 71 reads)
[!!] Write Key buffer hit rate: 11.9% (538 cached / 474 writes)
 
-------- AriaDB Metrics ----------------------------------------------------------------------------
[--] AriaDB is disabled.
 
-------- InnoDB Metrics ----------------------------------------------------------------------------
[--] InnoDB is enabled.
[OK] InnoDB buffer pool / data size: 256.0M/32.0M
[OK] InnoDB buffer pool instances: 1
[!!] InnoDB Used buffer: 13.20% (2162 used/ 16382 total)
[OK] InnoDB Read buffer efficiency: 99.22% (268998 hits/ 271102 total)
[!!] InnoDB Write Log efficiency: 154.55% (17 hits/ 11 total)
[OK] InnoDB log waits: 0.00% (0 waits / 28 writes)
 
-------- TokuDB Metrics ----------------------------------------------------------------------------
[--] TokuDB is disabled.
 
-------- Galera Metrics ----------------------------------------------------------------------------
[--] Galera is disabled.
 
-------- Replication Metrics -----------------------------------------------------------------------
[--] Galera Synchronous replication: NO
[--] No replication slave(s) for this server.
[--] This is a standalone server.
 
-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
    Set up a Secure Password for user@host ( SET PASSWORD FOR 'user'@'SpecificDNSorIp' = PASSWORD('secure_password'); )
    Restrict Host for user@% to user@SpecificDNSorIp
    Adjust your join queries to always utilize indexes
Variables to adjust:
    join_buffer_size (> 256.0K, or always use indexes with joins)

Особое внимание стоит уделить строкам, помеченным символами [!!]

Докеризация сервиса

Имеется возможность запустить сервис mysql в Docker-контейнере. Для этого необходимо создать файл с настройками docker-compose.yml  и .env следующего содержания:

docker-compose.yml
version: "3"
  services:
  	eltex-mariadb:
  	  container_name: eltex-mariadb
      image: ${ELTEX_HUB}/eltex-mariadb:${SWLC_VERSION}
      restart: unless-stopped
      env_file:
        - environment/eltex-mariadb.env
      environment:
      # Настройки таймзоны
        - TZ=${TZ}
      volumes:
        - ./volumes/mysql/datadir:/var/lib/mysql
eltex-mysql.env
TZ=Europe/Moscow
MYSQL_ROOT_USER=root
MYSQL_ROOT_PASSWORD=root
MYSQL_USER=javauser
MYSQL_PASSWORD=javapassword
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

Для переноса данных из Deb решения в Docker можно воспользоваться следующей инструкцией.

Запустить контейнер можно командой:

docker compose up -d
  • Нет меток