start(_Type, _Args) ->
case application:get_env(ebid, join_schema) of
undefined ->
mnesia:create_schema([node()]),
mnesia:start(),
initialize_tables(),
mnesia:wait_for_tables([<<set of tables>>], timer:minutes(5));
{ok, Node} ->
pong = net_adm:ping(Node),
join_schema(Node),
mnesia:wait_for_tables([<<set of tables>>], timer:minutes(5))
end,
join_schema(Node) ->
case rpc:call('rtb@ip-10-0-43-240', mnesia, change_config, [extra_db_nodes, [node()]]) of
{ok, _Result} ->
lists:foreach(fun(Tab) -> io:format("~p : ~p ~n",[Tab,timer:tc(mnesia,add_table_copy,[Tab, node(), ram_copies])]) end, mnesia:system_info(tables));
{error, Reason} ->
mnesia:stop(),
mnesia:del_table_copy(schema, node()),
error_logger:error_msg("Failed to join schema: ~p~n", [Reason]),
error(Reason)
end.
有没有办法调试join_schema需要很长时间的原因? 我们总共有10张桌子来代替&#34;桌子和#34;而且,总体尺寸是&lt; 400 MB
只有在join_schema完成后,worker才会加入集群。
主节点工作正常并且有mnesia。
答案 0 :(得分:1)
终于能够解决问题了。问题是我们根据负载遵循EC2对工人的自动扩展策略。在一段时间内(1年+),我们有许多这样的工人进出,因此主表extra_db_nodes大幅扩展。
重新启动主人解决了问题。