ejabberd:mnesiaからmysqlへの移行

xmpp ejabberdサーバーを使用すると、ドキュメントが極端に不足していることがわかります。 標準的なニーズからわずかに逸脱した各自は、自分で発明するか、会議、メーリングリスト、svnのコメント、および直接ソースコードから断片的に収集する必要があります。

開発者が新しいモジュールにODBCサポートを追加したejabberd 2.1.11のリリースでは、通常のmnesiaデータベースからタスクに適したmysqlにデータを転送する問題に直面しました。 一度他のモジュールで解決しましたが、その方法をリモートで覚えているだけです。 今、私は自分自身と、興味を持つすべての人の未来のためのプロセスを思い出して文書化しようとします。



そのため、標準のmnesiaデータベースをストレージとして使用するejabberd 2.1.11があり、 何も解決したくない、 mysqlが必要です。

まず、データベースを作成します。 ここで、またはソースパッケージの/src/odbc/mysql.sqlファイルで構造を取得します。

その後、mnesiaからデータをエクスポートする必要があります。 ejabberd-modulesの一部であるmod_admin_extraモジュールが必要になります

ダウンロード:
svn co svn.process-one.net/ejabberd-modules

mod_admin_extraは長い間更新されていないため、新しいモジュール、したがって新しいテーブルについては何も知りません。 私は質問を不器用に解決しました:ソースejabberd-modules / mod_admin_extra / trunk / src / mod_admin_extra.erlと1つのピースを開きました
 
               {export_last、last}、
               {export_offline、オフライン}、
               {export_passwd、passwd}、
               {export_private_storage、private_storage}、
               {export_roster、名簿}、
               {export_vcard、vcard}、
               {export_vcard_search、vcard_search}]、 


に置き換えられました

               {export_last、last}、
               {export_offline、オフライン}、
               {export_passwd、passwd}、
               {export_private_storage、private_storage}、
               {export_roster、名簿}、
               {export_vcard、vcard}、
                 {export_motd、motd}、
                 {export_motd_users、motd_users}、
                 {export_muc_registered、muc_registered}、
                 {export_muc_room、muc_room}、
                 {export_sr_group、sr_group}、
                 {export_sr_user、sr_user}、
               {export_vcard_search、vcard_search}]、 


注:ウォームチューブircクライアントを好むため、ircトランスポートを使用せず、mod_ircはオフになっています。 使用する場合は、おそらく '{export_irc、irc}、'のようなものをリストに追加する必要があります。 ls /var/spool/jabber/*.DCDを実行し、mnesiaのテーブル名を出力として取得することにより、正確に確認できます。

ビルド(アーランが必要):

cd ejabberd-modules/mod_admin_extra/trunk
./build.sh


:より詳細なアセンブリ手順は、ejabberd-modulesホームページで見つけることができます。

同様に、 ejabberd-modules / mysqlをビルドします

結果のejabberd-modules / mod_admin_extra / trunk / ebin / mod_admin_extra.beamejabberd-modules / mysql / trunk / ebin / *をスローします .11 / ebin / )。

信頼性と再起動のために、ネットワークからejabberdサーバーを切断します(ただし、停止しないでください!)。

ejabberdを実行しているユーザー用の書き込み可能なフォルダーを作成します(jabber:jabberがありますが、mkdir / tmp / temp; chmod 777 / tmp / tempを実行しました)。

mnesiaからデータをエクスポートします(-jabber - jabber-):
ejabberdctl export2odbc /tmp/test/
txt sql-, mysql. ( phpMyAdmin). , - .
- mnesia, . , - 14 .

, .

, !

ejabberd mysql. ( ) .

,
{auth_method, odbc}

{odbc_server, {mysql, "host", "db", "user", "pass"}}.
,
{host_config, "domain2", [{odbc_server, {mysql, "host2", "db2", "user2", "pass2"}}]}.

, XXX->XXX_odbc, :
mod_announce_odbc
mod_blocking_odbc
mod_last_odbc
mod_muc_odbc
mod_offline_odbc
mod_privacy_odbc
mod_private_odbc
mod_pubsub_odbc
mod_roster_odbc
mod_shared_roster
mod_vcard_odbc
mod_vcard_xupdate_odbc



, , 2009 , , - . . , , .
- jabber-):
ejabberdctl export2odbc /tmp/test/
txt sql-, mysql. ( phpMyAdmin). , - .
- mnesia, . , - 14 .

, .

, !

ejabberd mysql. ( ) .

,
{auth_method, odbc}

{odbc_server, {mysql, "host", "db", "user", "pass"}}.
,
{host_config, "domain2", [{odbc_server, {mysql, "host2", "db2", "user2", "pass2"}}]}.

, XXX->XXX_odbc, :
mod_announce_odbc
mod_blocking_odbc
mod_last_odbc
mod_muc_odbc
mod_offline_odbc
mod_privacy_odbc
mod_private_odbc
mod_pubsub_odbc
mod_roster_odbc
mod_shared_roster
mod_vcard_odbc
mod_vcard_xupdate_odbc



, , 2009 , , - . . , , .

- jabber-):
ejabberdctl export2odbc /tmp/test/
txt sql-, mysql. ( phpMyAdmin). , - .
- mnesia, . , - 14 .

, .

, !

ejabberd mysql. ( ) .

,
{auth_method, odbc}

{odbc_server, {mysql, "host", "db", "user", "pass"}}.
,
{host_config, "domain2", [{odbc_server, {mysql, "host2", "db2", "user2", "pass2"}}]}.

, XXX->XXX_odbc, :
mod_announce_odbc
mod_blocking_odbc
mod_last_odbc
mod_muc_odbc
mod_offline_odbc
mod_privacy_odbc
mod_private_odbc
mod_pubsub_odbc
mod_roster_odbc
mod_shared_roster
mod_vcard_odbc
mod_vcard_xupdate_odbc



, , 2009 , , - . . , , .

Source: https://habr.com/ru/post/J154535/


All Articles