Mnesia数据库及其集群的配置
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个节点都能获得相同的数据了。
推荐阅读
-
Python的Django框架中的数据库配置指南
-
Spring Boot 配置MySQL数据库重连的操作方法
-
详解Spring Hibernate连接oracle数据库的配置
-
.NET Core 获取数据库上下文实例的方法和配置连接字符串
-
Linux下php连接SQLServer 2000数据库的配置方法
-
在centos 7中安装配置k8s集群的步骤详解
-
Laravel 下配置 Redis 让缓存、Session 各自使用不同的 Redis 数据库
-
django配置连接数据库及原生sql语句的使用方法
-
Java Web项目中连接Access数据库的配置方法
-
xadmin进行全局配置(修改模块名为中文以及其他自定义的操作步骤)