|
Реляционная СУБД, используемая в проекте SoftWLC для хранения основных данных, необходимых для работы системы управления. Используется версия mysql-server-5.5.
В проекте используются следующие базы данных:
База данных | Описание |
---|---|
eltex_ems | содержит данные о доменной структуре, дереве объектов, пользователях EMS, конфигурационные данные EMS и др. База создается/обновляется при установке пакета eltex-ems-db. |
eltex_alert | содержит журнал событий EMS и устройств. База создается/обновляется при установке пакета eltex-ems-db. |
wireless | хранятся настройки SSID. База создается/обновляется при установке пакета eltex-ems-db. |
eltex_auth_service | база, используемая пакетом eltex-auth-service для хранения данных о пользователях ЛК, конструктора порталов и NBI. База создается/обновляется при установке пакета eltex-auth-service-db. |
radius | в этой базе хранятся данные о Wi-Fi пользователях, их учетные записи настройки и аккаунттинг. База создается/обновляется при установке пакета freeradius-eltex-db. |
ELTEX_PORTAL | содержит данные о виртуальных порталах, используемых в проекте. База создается/обновляется при установке пакета eltex-portal-mysql. |
payments | здесь хранятся данные о платежах Wi-Fi пользователей за подключение к платным тарифам. База создается/обновляется при установке пакета eltex-portal-mysql. |
eltex_doors | содержит JWT токены сгенерированные сервисом eltex-doors. |
Действие | Команда | Ответ | |||||
---|---|---|---|---|---|---|---|
Проверка состояния |
|
| |||||
Запуск сервиса |
|
| |||||
Остановка сервиса |
|
| |||||
Перезапуск сервиса |
|
|
Настройка 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 |
После изменения конфигурационного файла файле /etc/mysql/conf.d/eltex-ems.cnf перезапустите MySQL командой:
service mysql restart |
Параметры key_buffer_size и innodb_buffer_pool_size могут быть изменены в любое время на основании показателей производительности машины. Смена значений влияет на скорость обработки данных во время работы службы MySQL и не может привести к потере уже сохраненных данных или смене структуры хранениях их на файловой системе. |
Для сбора логов с серверов DHCPи RADIUS в базе данных должна быть создана учетная запись пользователя rsyslog.
Команды:
CREATE USER 'rsyslog'@'HOST' identified by 'root'; GRANT ALL on Syslog.* TO 'rsyslog'@'HOST' identified by 'root'; |
где HOST – адрес серверов RADIUS или DHCP в сети управления. Для каждого сервера должна быть создана отдельная запись.
Для того чтобы сервер 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-auth | 2 | 2 | 2 | 5 | |
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 |
MySQLTuner — это perl-скрипт, который анализирует статистику работы MySQL и выдает свои рекомендации по оптимизации настроек MySQL сервера.
Примечание! Для корректного анализа и сбора статистики сервер MySQL должен проработать некоторое время без смены параметров конфигурации и без перезагрузок, по рекомендации самого MySQLTuner не менее 24 часов.
Для запуска скрипта выполните команду:
/usr/lib/eltex-ems-db/tools/mysqltuner.pl -- user root --pass root |
После запуска скрипт произведет анализ и выдаст следующую информацию:
>> MySQLTuner 1.2.0 - Major Hayden <major@mhtx.net> >> Bug reports, feature requests, and downloads at http://mysqltuner.com/ >> Run with '--help' for additional options and output filtering [OK] Logged in using credentials from debian maintenance account. -------- General Statistics -------------------------------------------------- [--] Skipped version check for MySQLTuner script [OK] Currently running supported MySQL version 5.5.43-0ubuntu0.14.04.1-log [OK] Operating on 64-bit architecture -------- Storage Engine Statistics ------------------------------------------- [--] Status: +Archive BDB -Federated +InnoDB -ISAM -NDBCluster [-] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17) [--] Data in InnoDB tables: 3G (Tables: 39) [--] Data in MyISAM tables: 22G (Tables: 5) [!!] Total fragmented tables: 10 -------- Security Recommendations ------------------------------------------- [OK] All database users have passwords assigned -------- Performance Metrics ------------------------------------------------- [--] Up for: 127d 22h 20m 14s (746M q [67.539 qps], 25M conn, TX: 302B, RX: 411B) [--] Reads / Writes: 21% / 79% [--] Total buffers: 48.1G global + 2.7M per thread (151 max threads) [OK] Maximum possible memory usage: 48.5G (77% of installed RAM) [OK] Slow queries: 0% (13K/746M) [!!] Highest connection usage: 100% (152/151) [OK] Key buffer size / total MyISAM indexes: 24.0G/9.9G [OK] Key buffer hit rate: 99.9% (4B cached / 5M reads) [OK] Query cache efficiency: 33.6% (114M cached / 340M selects) [!!] Query cache prunes per day: 735211 [OK] Sorts requiring temporary tables: 0% (1K temp sorts / 5M sorts) [OK] Temporary tables created on disk: 0% (3K on disk / 394K total) [OK] Thread cache hit rate: 99% (8K created / 25M connections) [!!] Table cache hit rate: 8% (324 open / 3K opened) [OK] Open file limit used: 19% (3K/16K) [OK] Table locks acquired immediately: 99% (9B immediate / 9B locks) [OK] InnoDB data size / buffer pool: 3.6G/24.0G -------- Recommendations ----------------------------------------------------- General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance Enable the slow query log to troubleshoot bad queries Reduce or eliminate persistent connections to reduce connection usage Increase table_cache gradually to avoid file descriptor limits Variables to adjust: max_connections (> 151) wait_timeout (< 28800) interactive_timeout (< 28800) query_cache_size (> 16M) table_cache (> 400) |
Особое внимание стоит уделить строкам, помеченным символами [!!], параметру "Maximum possible memory usage" (он должен быть меньше общего объёма RAM) и секции Recommendations. |