视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Mnesia数据库及其集群的配置
2020-11-09 15:31:41 责编:小采
文档


mnesia_manage.erl模块专门用以管理本工程中用到的各种数据库。 其导出函数有: create_all_tables/0,用以创建本模块里定义的所有数据表。 create_online_users/0,创建在线用户表。 create_users/0,创建用户表 create_user_data/0,创建用户资料表 create_ava

mnesia_manage.erl模块专门用以管理本工程中用到的各种数据库。

其导出函数有:
create_all_tables/0,用以创建本模块里定义的所有数据表。

create_online_users/0,创建在线用户表。

create_users/0,创建用户表

create_user_data/0,创建用户资料表

create_available_acc/0,创建可供注册的账号表

create_reserved_acc/0,创建保留账号表


insert_formal_acc/2插入正式的账号

insert_test_acc/2,插入测试账号


select_all/1,[Tab]选择某表所有记录

tab_length/1,[Tab]查询某标的长度


使用本模块时,执行erl命令时,除了要指明节点名称等,还需要指明存放mnesia数据库的路径,命令如下:

erl -sname NodeChatCore1 -pa ./chat_server/ebin -mnesia dir '"./mnesia_dir_ChatServerCore_1"'

进入erlang shell后,执行命令:mnesia_manage:create_all_tables(). 之后退出shell,进入mnesia_dir_ChatServerCore_1文件夹,即可看到刚刚建立的各个数据库的文件。


再次进入节点NodeChatCore1 的shell,让我们检查一下刚才建立的数据表是否正常。

从上图可以看到,想要建立的数据库都建立好了。现在,往available_acc数据表里插入100条示例账号:

提示信息说明100条数据插入成功。100012-100100的数据太长,截图太小无法完全显示出来。

我们测试一下,随意从刚刚插入的数据表里读取一条记录:

成功了!


现在,用相同的方法打开ChatServerExt模块的shell,不要建立该模块的数据库模式,而是从已经建立数据库模式的节点NodeChatCore1@localhost处拷贝数据库模式,我们看到,现在2个节点已经形成了一个集群。具体过程如下:

但除了schema,其他数据库都是运行在remote上的,也即远端的其他节点。而且,即使schema也只是运行在ram里的,无法持久化存储。现在,我们从现有节点处拷贝各数据库的配置文件:

再次查看,我们发现,我们需要的数据表已经运行在当前节点了,2个节点的数据库将保持同步和一致。

我们选择做个测试,在2个节点里执行相同的命令,可以看到,2个节点都能获得相同的数据了。

下载本文
显示全文
专题