24.3. "Мусорные" базы данных

"Мусорная" база - это отдельная база данных на ненадёжных быстрых носителях, предназначенная для хранения слабо связанных не критичных для основного сервиса данных. Для неё не используется репликация. Выборки по такой базе производятся редко. Обрыв соединения с "мусорной" базой не критичен для основного сервиса.

В данный момент поддержано хранение в "Мусорной" базе таблиц:

log_function_process_yyyyMM - логи работы BGBS-скриптов на договорах;
log_server_<mid>_yyyуMM - логи RADIUS-запросов модулей DialUp/VoiceIp;
reject_to_accept_<mid> - подмена reject'а accept'ом при ошибке авторизации.

"Мусорная" база определяется в конфигурации сервера биллинга (Сервис=>Настройки) следующим образом:

db.trash.<trash_id>.url=jdbc:mysql://<host>:<port>/<db_name>?useUnicode=true&characterEncoding=UTF-8&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&elideSetAutoCommits=true&useCursorFetch=true&queryTimeoutKillsConnection=true
db.trash.<trash_id>.user=<user>
db.trash.<trash_id>.pswd=<pswd>
db.trash.<trash_id>.maxIdle=<max_idle>
db.trash.<trash_id>.maxActive=<max_active>

Где:

<trash_id> - идентификатор "Мусорной" базы;
<db_name> - имя базы данных;
<host> - хост с Мусорной базой;
<port> - MySQL порт;
<user> - логин MySQL;
<pswd> - пароль MySQL;
<max_idle> - максимальное число простаивающих соединений в пуле, лишние будут закрыты;
<max_active> - максимальное число активных соединений в пуле.

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

trash.table.map.<pos>.<table_prefix>=<trash_id>

Где:

<trash_id> - идентификатор "Мусорной" базы;
<pos> - порядковый номер правила для просмотра;
<table_prefix> - префикс таблицы.

Например, так можно определить хранение таблиц log_function_process в отдельной мусорной базе:

db.trash.trash_1.url=jdbc:mysql://192.168.184.2:3306/trash_1?useUnicode=true&characterEncoding=UTF-8&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&elideSetAutoCommits=true&useCursorFetch=true&queryTimeoutKillsConnection=true
db.trash.trash_1.user=root
db.trash.trash_1.pswd=
db.slave.trash_1.maxIdle=10
db.slave.trash_1.maxActive=4
#
trash.table.map.1.log_function_process=trash_1

Внимание

Функционал "мусорных" хранилищ экспериментальный, рекомендуется начать использование с таблиц, не используемых критичными сервисами (log_function_process).