mnesia数据可以实现集群共享数据库。数据库表可以在其中某个节点所在的数据库目录,可以拷贝到其他节点数据库目录,mnesia会同步数据库,在启动时执行mnesia:wait_for_tables实现数据库数据同步。
erlang mnesia集群建立有两种方法:
方法一:
1、启动时所有节点,并且使节点互通(设置同样的cookie,并且启动epmd,可以通过net_adm:ping/1使节点连通,或者直接执行第二步,mnesia会先连通节点)
2、在其中一个节点上执行mnesia:create_schema(NodeList).(NodeList指集群节点列表)
3、在任意一节点执行mnesia:system_info(). mnesia:start(). mnesia:system_info(). 可以看到 db_nodes里包括了所有节点。
如果没有设置mnesia数据库目录,则会在启动目录看到Mnesia.chen@127.0.0.1 Mnesia.xiao@127.0.0.1目录
%%节点chen@127.0.0.1
D:\>erl -name chen@127.0.0.1 -cookie '123'
Eshell V5.9 (abort with ^G)
(chen@127.0.0.1)1> net_adm:ping('xiao@127.0.0.1').
pong
(chen@127.0.0.1)2> mnesia:create_schema([node()|nodes()]).
ok
(chen@127.0.0.1)3> mnesia:system_info().
===> System info in version "4.6", debug level = none <===
opt_disc. Directory "d:/Mnesia.chen@127.0.0.1" is used.
use fallback at restart = true
running db nodes = []
stopped db nodes = ['xiao@127.0.0.1','chen@127.0.0.1']
no
(chen@127.0.0.1)4> mnesia:system_info(db_nodes).
['chen@127.0.0.1','xiao@127.0.0.1']
(chen@127.0.0.1)5> mnesia:start().
ok