В случае, если в вашей компании организован мощный отдел продаж и вы ежедневно обрабатываете большое количество звонков, база данных, в которую добавляются CDR записи (Call Detail Record), начинает переполняться и увеличиваться в объеме. Со временем это может негативно сказаться на производительности сервера, замедлив обработку процессов резервного копирования и обновления системы.
Если вы не хотите удалять старые записи базы данных, элегантным решением этой проблемы будет перемещение базы данных для CDR на отдельный сервер. В этой статье мы расскажем вам, как это сделать.
РАБОЧИЕ УСЛОВИЯ
Предположим, что в нашем корпоративном контуре имеются следующие виртуальные машины:
Предварительно, настройте разрешения на подключения с IP – адреса АТС (файл pg_hba.conf в PostgreSQL и командно через консоль в случае MySQL) и создайте пользователя freepbxuser. Произведем тест на связность. Дадим команду с консоли сервера Asterisk:
mysql --host=192.168.1.3 -ufreepbxuser -p asteriskcdrdb
Введите пароль для подключения. Если все ОК, переходим к настройке FreePBX.
НАСТРОЙКА FREEPBX
Переходим в раздел Settings → Advanced Settings. Убеждаемся, что параметры Display Readonly Settings и Override Readonly Settings установлены в значение Yes.

Применяем конфигурацию нажатием Submit и Apply Config. Теперь находим сегмент настройки под названием Remote CDR Database и вносим следующие настройки:

Сохраняем изменения и переходим в консоль сервер АТС. Останавливаем FreePBX:
fwconsole stop
Редактируем файл odbc.ini. Там, в параметре server, нам необходимо указать IP – адрес хоста, на котором у нас развернута внешняя БД:
vim /etc/odbc.ini
fwconsole start
Теперь остается только проверить функционал. Сделайте пару тестовых звонков и проверьте их наличие в БД на удаленном хосте.
Если вы не хотите удалять старые записи базы данных, элегантным решением этой проблемы будет перемещение базы данных для CDR на отдельный сервер. В этой статье мы расскажем вам, как это сделать.
РАБОЧИЕ УСЛОВИЯ
Предположим, что в нашем корпоративном контуре имеются следующие виртуальные машины:
- 192.168.1.2 - сервер IP – АТС Asterisk с графической оболочкой FreePBX;
- 192.168.1.3 - сервер, на котором развернута база данных MySQL;
Предварительно, настройте разрешения на подключения с IP – адреса АТС (файл pg_hba.conf в PostgreSQL и командно через консоль в случае MySQL) и создайте пользователя freepbxuser. Произведем тест на связность. Дадим команду с консоли сервера Asterisk:
mysql --host=192.168.1.3 -ufreepbxuser -p asteriskcdrdb
Введите пароль для подключения. Если все ОК, переходим к настройке FreePBX.
НАСТРОЙКА FREEPBX
Переходим в раздел Settings → Advanced Settings. Убеждаемся, что параметры Display Readonly Settings и Override Readonly Settings установлены в значение Yes.

Применяем конфигурацию нажатием Submit и Apply Config. Теперь находим сегмент настройки под названием Remote CDR Database и вносим следующие настройки:

- Remote CDR DB Host - IP – адрес хоста, на котором развернута база данных. В нашем примере это 192.168.1.3;
- Remote CDR DB Name - имя базы данных. Укажите здесь asteriskcdrdb;
- Remote CDR DB Password - пароль для подключения к MySQL от пользователя freepbxuser;
- Remote CDR DB Port - порт, на котором база данных на удаленном хосте слушает запросы;
- Remote CDR DB Table - таблица, внутри БД, с которой мы будет работать. Указываем здесь cdr;
- Remote CDR DB Type - тип базы данных. Мы указываем MySQL;
- Remote CDR DB User - имя пользователя, под которым мы производим подключение;
Сохраняем изменения и переходим в консоль сервер АТС. Останавливаем FreePBX:
fwconsole stop
Редактируем файл odbc.ini. Там, в параметре server, нам необходимо указать IP – адрес хоста, на котором у нас развернута внешняя БД:
vim /etc/odbc.ini
Сохраняем изменения в файле и запускаем FreePBX:[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=192.168.1.3 //замену производим вот тут
database=asteriskcdrdb
Port=3306
Socket=/var/lib/mysql/mysql.sock
option=3
Charset=utf8
fwconsole start
Теперь остается только проверить функционал. Сделайте пару тестовых звонков и проверьте их наличие в БД на удаленном хосте.