>데이터 베이스 >MySQL 튜토리얼 >Mnesia数据库及其集群的配置

Mnesia数据库及其集群的配置

WBOY
WBOY원래의
2016-06-07 15:42:051349검색

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"'

Mnesia数据库及其集群的配置

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

Mnesia数据库及其集群的配置


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

Mnesia数据库及其集群的配置

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

Mnesia数据库及其集群的配置

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

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

Mnesia数据库及其集群的配置

成功了!


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

Mnesia数据库及其集群的配置

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

Mnesia数据库及其集群的配置

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

Mnesia数据库及其集群的配置

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

Mnesia数据库及其集群的配置

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.