0

我遇到了一个似乎无法解决的问题。我需要传入函数 mnesia:change_table_copy_type(schema, node(), disc_copies)。在从主节点创建数据库的命令行中。erl start 是: erl -name NODE1 -mnesia extra_db_nodes \"['MASTER']\" -s mnesia 当我启动 shell 然后进入函数调用时一切正常,然后我可以停止 shell 并正常启动 ejabber 进程. 所以我需要一个脚本方法来完成数据库设置和同步。

我尝试了许多不同的方法来获取 change_table_copy_type 传入但没有成功。最终目标是能够编写启动 mnesia 的过程脚本,传入函数,然后退出 shell。有没有人试过这个?我尝试过重定向,例如: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 回答