0

解決できないように見える問題が発生しています。関数mnesia:change_table_copy_type(schema、node()、disc_copies)を渡す必要があります。コマンドラインで、dbがマスターノードから作成されます。erlの開始は次のとおりです。erl-nameNODE1-mnesia extra_db_nodes \ "['MASTER'] \" -s mnesiaシェルを起動してから関数呼び出しに入ると、すべてが正常に機能し、シェルを停止してejabberプロセスを正常に開始できます。 。したがって、必要なのは、DBのセットアップと同期を実行するためのスクリプト化されたメソッドです。

change_table_copy_typeを渡すためにさまざまな方法を試しましたが、成功しませんでした。最終的な目標は、mnesiaを開始するプロセスをスクリプト化し、関数を渡してから、シェルを終了できるようにすることです。誰かがこれを試したことがありますか?次のようなリダイレクトを試しました:erl -name NODE1 -mnesia extra_db_nodes \ "['MASTER'] \" -s mnesia <

関数呼び出しが渡されたときにノードが開始されないため、これは失敗します。「-run」オプションを使用しようとしましたが、関数がundefであるというエラーが発生します。たぶん私は-runセクションを正しく構築していません。

4

2 に答える 2

1

-evalerl の引数を試してください:

erl -name NODE1 -mnesia extra_db_nodes "['MASTER']" -eval 'mnesia:start(), mnesia:change_table_copy_type(schema, node(), disc_copies), init:stop()'

mnesia:wait_for_tablesを実行する前にクラスターに参加する時間を確保するために、どこかchange_table_copy_type

于 2009-09-19T01:43:29.500 に答える
0

ejabberd 15.05 以降、ejabberd には、クラスターのデプロイとセットアップを容易にする新しいコマンドが付属しています。ejabberdctl join_cluster

このコマンドは、ejabberd のドキュメント: ejabberd clusteringに記載されています。

これは、クラスタが ejabberd を起動する標準的な方法で適切に構成されていることを確認するのに役立ちます。

于 2015-07-28T08:19:45.640 に答える