Установим необходимый драйвер для MySQL.
emerge -av unixodbc
Необходимо отредактировать конфиги
файл /etc/unixodbc/odbcinst.ini
[myodbc-5.2]
Description=MySQL ODBC 5.2 Driver
Driver=/usr/lib/libmyodbc5a.so
UsageCount=1
файл /etc/unixodbc/odbc.ini
[mysql-asterisk]
Description=MySQL ODBC 5.2 Driver Testing DSN
Driver=myodbc-5.2
Socket=/var/run/mysqld/mysqld.sock
Server=localhost
User=asterisk
Password=jNW2d
Database=asterisk
Option=3
файл /etc/asterisk/res_odbc.conf
[mysqlaster]
enabled => yes
dsn => mysql-asterisk
username => asterisk
password => jNW2d
pre-connect => yes
pooling => no
файл /etc/asterisk/cdr_adaptive_odbc.conf
[mysqlaster]
connection=mysqlaster
loguniqueid=yes
table=cdr
usegmtime=no
alias start => calldate
timezone=Europe/Moscow
Параметр DSN отвечает за подключение Asterisk к базе данных, указанной в файле /etc/unixodbc/odbc.ini. Этот параметр говорит Asterisk, что необходимо открыть и поддерживать соединение с базой данных при загрузке модуля res_adaptive_odbc.so.
Перезапустим сервис Asterisk /etc/init.d/asterisk restart
Через CLI Asterisk проверим подключение к БД через драйвер ODBC
*CLI> odbc show
ODBC DSN Settings
-----------------
Name: mysqlaster
DSN: mysql-asterisk
Last connection attempt: 1970-01-01 03:00:00
Pooled: No
Connected: Yes
Необходимо создать базу в мускуле, если еще не создана
mysql> create database asterisk;
mysql> use asterisk;
mysql> CREATE TABLE `cdr` ( `id` int(9) unsigned NOT NULL auto_increment, `calldate` datetime NOT NULL default '0000-00-00 00:00:00', `clid` varchar(80) NOT NULL default '', `src` varchar(80) NOT NULL default '', `dst` varchar(80) NOT NULL default '', `dcontext` varchar(80) NOT NULL default '', `channel` varchar(80) NOT NULL default '', `dstchannel` varchar(80) NOT NULL default '', `lastapp` varchar(80) NOT NULL default '', `lastdata` varchar(80) NOT NULL default '', `duration` int(11) NOT NULL default '0', `billsec` int(11) NOT NULL default '0', `disposition` varchar(45) NOT NULL default '', `amaflags` int(11) NOT NULL default '0', `accountcode` varchar(20) NOT NULL default '', `uniqueid` varchar(32) NOT NULL default '', `userfield` varchar(255) NOT NULL default '', PRIMARY KEY (`id`), KEY `calldate` (`calldate`), KEY `accountcode` (`accountcode`), KEY `uniqueid` (`uniqueid`), KEY `dst` (`dst`), KEY `src` (`src`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
mysql> grant all on asterisk.* to 'asterisk'@'localhost' identified by 'jNW2d';
mysql> \q
Bye