YH
- — 4 months ago

公式リファレンスでは ODBCを介してMySQLへ接続する手順が記述されています。
CDR(通信履歴)以外は設定次第で、ODBCを使わずに直接MySQLへ接続可能です。
同様の手順でおそらくmariaDBでも使えます。
公式リファレンスでODBCを介してMySQLへ接続する手順のみが示されている一因として
CDRをMySQLに直接保存するためのアドオンcdr_mysqlが、(MySQL8以降のみ?)makeでエラーとなり
CDR以外が直接MySQLで接続できても、CDRで結局ODBCが必要となるからだそうです。
mariaDBであればそのエラー部分が通る可能性があります。
環境は
・CentOS 7.8.2003
・Asterisk 16.13.0
・MySQL 8.0.22
インストールで Asterisk Module and Build Option Selection を開きます。
# meke menuselect
Add-ons の res_config_mysql と app_mysql を選択して
Save & Exit
# make && make install
modules.confに追加
preload => res_config_mysql.so
res_config_mysql.confを設定
[general]
dbhost = 127.0.0.1
dbname = asterisk
dbuser = user
dbpass = password
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock
dbcharset = utf8mb4
requirements=warn ; or createclose or createchar
MySQLへの接続を確認します。
再起動してからAsteriskのCLIに入ります。
# systemctl restart asterisk
# asterisk -cvvvvvr
> realtime mysql status
結果 接続できている場合
general connected to asterisk@127.0.0.1, port 3306 with username root for 1 days, 1 hours.
CLIから抜けます
> exit
各設定の参照先をODBC接続から直接MySQLに変更します。
sorcery.confを設定
;を消して有効化します。(ここはODBCを介する場合と同様)
[res_pjsip]
endpoint=realtime,ps_endpoints
auth=realtime,ps_auths
aor=realtime,ps_aors
domain_alias=realtime,ps_domain_aliases
contact=realtime,ps_contacts
[res_pjsip_endpoint_identifier_ip]
identify=realtime,ps_endpoint_id_ips
[res_pjsip_outbound_publish]
outbound-publish=realtime,ps_outbound_publishes
[res_pjsip_pubsub]
inbound-publication=realtime,ps_inbound_publications
[res_pjsip_publish_asterisk]
asterisk-publication=realtime,ps_asterisk_publications
extconfig.confを設定
見やすいように定義をアルファベット順に並べ替えました。
ps_contactsを追加しています。
Alembicによって自動的に作成されたテーブルの;を消して、有効化します。
矢印の右側 参照先定義をmysql,generalに変更します。
'general'の指定によってres_config_mysql.confの接続先[general]が参照されます。
ということはres_config_mysql.confで複数の接続先を定義しておき、
テーブルごとに分散できるようです。
;acls => odbc,asterisk
extensions => mysql,general
;iaxpeers => odbc,asterisk
;iaxusers => odbc,asterisk
meetme => mysql,general
musiconhold => mysql,general
musiconhold_entry => mysql,general
ps_aors => mysql,general
ps_asterisk_publications = mysql,general
ps_auths => mysql,general
ps_contacts => mysql,general
ps_domain_aliases => mysql,general
ps_endpoints => mysql,general
ps_endpoint_id_ips => mysql,general
ps_inbound_publications = mysql,general
ps_outbound_publishes => mysql,general
queues => mysql,general
queue_log => mysql,general
queue_members => mysql,general
queue_rules => mysql,general
sippeers => mysql,general
;sipregs => odbc,asterisk ; (avoid sipregs if possible, e.g. by using a view)
voicemail => mysql,general
Alembicで自動的に生成されるテーブル
Asteriskの解凍ディレクトリの中にある contrib/realtime/mysql/mysql_config.sqlにテーブル定義があります。 Alembicはこれを実行するようです。
再起動して反映します。
# systemctl restart asterisk
以上になります。
YH
System engineer
AsteriskのRealtime DatabaseでODBCを使わずにMySQLへ接続する AsteriskのRealtime DatabaseでODBCを使わずにMySQLへ接続する 2020-10-22 00:18:24- CentOS7にNextCloudを導入する 1 year ago
- Laravel mix vue No.1 - Docker Environment - Dockerでlaravel環境 (laradockを使わない) 10 months ago
- DockerでCodeigniter4 betaを動かす 1 year ago
- Windows10 Home+WSL2でLinux(CentOS7)を動かす 6 months ago
- Asterisk16について調べてみた 1 year ago
- PipenvによるWindows上でのPython仮想環境の構築について 10 months ago
- 負荷試験ツール「Gatling」を試してみた。【Windows 10 編】 10 months ago
- PHP7.4のpreloadでLaravel7を高速化!? 6 months ago
- 【Docker環境】FluentdとMySQLのbulk insertを使用したログ収集【前編】 9 months ago
- CentOS6を使ったルーティング 1 year ago
- PHPからJavaScriptに変数の受け渡しで躓いた事 4 days ago
- Unity初心者がawsサーバーとWebSocketを使ってのリアルタイム同期通信について学ぶ② 3 weeks ago
- Unity初心者がawsサーバーとWebSocketを使ってのリアルタイム同期通信について学ぶ① 1 month ago
- Dockerコンテナ(Fluentd)のTimeZoneをUTCからJSTに変更する 2 months ago
- 端末でのサマータイム確認でログインできない 3 months ago
- laravelを経験した後のEC-CUBE3の所感 3 months ago
- Amazon Auroraのレプリケーション 3 months ago
- Asteriskの音声ガイダンスを日本語化 4 months ago
- AsteriskでCDR(通信履歴)をODBC接続でMySQLへ保存する 4 months ago
- AsteriskのRealtime DatabaseでODBCを使わずにMySQLへ接続する 4 months ago