rabbitmq——集群启动问题
问题现象: mnesia集群中的节点全部停止,然后再次启动,偶然出现所有节点都在一直等待数据同步的现象。 问题原因: 翻看相关源码后发现问题: mnesia_contorller.erl %% 选择可以进行数据加载的 table initial_safe_loads() -> case val({schema, storage_type}) of ram_copies -> %% 如果表为仅在内存中存储, 可以直接加载 %% 因此停止前记录的 down 掉的节点设置为 [] Downs = [], Tabs = val({schema, local_tables}) -- [schema], LastC = fun(T) -> last_consistent_replica(T, Downs) end, lists:zf(LastC, Tabs); disc_copies -> %% 如果表为 磁盘存储, 需要判断停止前集群节点的存活状态 Downs = mnesia_recover:get_mnesia_downs(), Tabs = val({schema, local_tables}) -- [schema], LastC = fun(T) -> last_consistent_replica(T, Downs) end, lists:zf(LastC, Tabs) end.