经过上两篇博客的学习大伙已经初步了解了mnesia的创建和库内表的创建,已经各种对表的操作。
接下来我们就要了解一下mnesia数据库和其他关系型数据区别最大的特性,就是它的分布式特性。首先需要介绍的是mneisa分布式架构的拓扑图:
通过上图我们可以了解到,先由一个以上的erlang节点组成一个相互之间的对等的master集群,这个master集群中的任何一台master节点宕机的话,都不会影响master集群对外发布的数据服务。master集群中的表需要设置为disc_copies类型的数据表,那么宕机之后恢复节点并且重启之后并不会丢失数据,而且会自动同步在宕机这段时间中其他master节点上的增量数据。
在master节点之外,可以启动若干个mnesia的slaver节点,在slaver节点上存放的数据是master节点内存副本,所以一旦slaver节点宕机之后,重启slaver节点会发现数据库中的表已经全部丢失,需要重新连接到master节点上把master节点上的数据同步到本地的内存中来。
现在就来详细介绍一下如何构建这个分布式mnesia数据库集群。
首先需要构建一个全联通的erlang节点网络,这个没有什么难度通过epmd框架,在节点启动的时候在命令行上设置节点名称,命令是, erl -name mst -setcookie xxxxxx -mnesia dir ‘“/tmp/mnesia_store”’,设置不同的name启动若干个erlang节点,需要保证每个节点使用相同的cookie值,否者节点之间无法联通了。
通过以下步骤创建master节点:
1. 启动集群中准备用来作为master角色的节点启动,
2. 通过net_adm:ping('mst1@node1'). 这样的命令打通所有节点,
3. 使用nodes().函数确认所有节点是否已经联通
4. 调用mnesia:create_schema([nodes()]). 注意,这里参数是用的nodes()函数,他会取得集群中所有节点,通过这个函数在所有master节点上创建了一份schema文件,在各个节点上执行 ls /tmp/mnesia_store命令可以在文件夹中看到已经创建的schema文件。
5. 启动mneisa数据库,调用mnesia:start() 启动数据库,执行mneisa:info() 查看mneisa数据库的状态,如下:
从上图我们可以了解到,本地d:/tmp/mnesia 保存数据的目录已经启用,并且数据库的两个副本:'baisui@aliyun-18097n.taobao.ali.com','mynode@aliyun-18097n.taobao.ali.com'已经启动,另外还有两个副本节点(stopped db nodes)尚未启动。在所有master节点上重复执行mnesia:info() 命令显示的结果应该是一样的。
至此,所有所有master节点已经启动完毕。
通过以下步骤创建slaver节点:
通过
相关推荐
### Mnesia数据库:Erlang中的分布式数据库管理系统 #### 引言 Mnesia,作为Erlang编程语言的一部分,是一款由爱立信公司开发的分布式数据库管理系统(DBMS)。自1997年以来,Mnesia一直是Open Telecom Platform...
Mnesia是一个高度可扩展的分布式数据库管理系统,主要为实时系统设计,尤其适用于Erlang和Elixir编程语言。它作为OTP(Open Telephony Platform)的一部分,提供了对高可用性、容错性和低延迟数据存储的出色支持。 ...
### Erlang Mnesia:分布式数据库管理系统 #### 一、引言与概述 Mnesia是一款由爱立信(Ericsson)开发并维护的分布式数据库管理系统(DBMS),它被设计用于支持电信应用以及其他需要持续运行和具备软实时特性的...
Mnesia是Erlang OTP (Open Telephony Platform) 库中的一个核心组件,它是一个强大的分布式数据库系统,特别适用于需要高可用性、容错性和实时性能的场景,比如电信和相关领域。 Mnesia的设计理念是与Erlang的并发...
Mnesia是一个分布式数据库管理系统,特别适用于需要持续运行和具备软实时特性的Erlang应用,如电信系统。它作为开放式电信平台(OTP)的一部分,是用Erlang编程语言实现的。Mnesia的设计初衷是为了解决电信应用中的...
Mnesia是一个分布式数据库管理系统(DBMS),适合于电信和其它需要持续运行和具备软实时特性的Erlang应用。 目 录 1 、介绍 . . .. . .. . . .. . 4 1.1 关于 Mnesia . . .. . .. . . .. . 4 1.2 Mnesia ...
在Erlang OTP中,分布式数据库Mnesia也提供了强一致性和高可用性的数据存储解决方案。 otp_win64_19.3.exe文件是Erlang OTP 19.3版本的安装程序,适用于Windows 64位操作系统。这个版本可能包含了性能优化、新功能...
综上所述,这个项目涉及到Erlang语言的高级应用,尤其是其分布式数据库Mnesia与成熟的关系型数据库PostgreSQL之间的交互,对于熟悉这两种技术的开发者来说,是一个有趣的挑战和学习机会。通过这个项目,可以深入研究...
Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。下面的内容将着重说明 如何做 Mnesia ...
FaceBook 之 Cassandra是指使用FaceBook之Cassandra来实现分布式数据库。 Cassandra 特点是指使用Cassandra的特点和优势。 Keyspace是指使用Cassandra的键空间。 Column family(CF)是指使用Cassandra的列族。 ...
Mnesia 是一个强大的分布式数据库管理系统(DBMS),专门为Erlang编程语言设计,特别适用于需要高可用性、持续运行和软实时特性的电信和其他关键业务应用。这个系统允许在多个节点间同步数据,提供了一种在分布式...
- **多用户分布式DBMS**:Mnesia是一个支持多用户的分布式数据库管理系统,特别适用于工业电信应用领域。 - **符号编程语言Erlang**:Mnesia采用Erlang作为其目标编程语言,Erlang是一种非常适合并发处理的语言,...
Mnesia 是一个分布式数据库管理系统,它是 Erlang 语言环境的一部分,专门设计用于在分布式系统中存储和查询数据。随着业务需求的增长,单个 Mnesia 表的大小和性能可能会成为瓶颈。为了解决这个问题,Mnesia 提供了...
Erlang的分布式数据库Mnesia则提供了一种实时性较强、支持水平分割和数据冗余的解决方案,特别适合读多写少的场景。 Mnesia数据库在Erlang生态系统中扮演着重要角色,它可以避免传统数据库的实时性问题和IPC通讯...
此外,还会涉及Erlang的分布式特性,如节点间的通信和分布式数据库Mnesia的使用,这对于构建跨节点的分布式应用至关重要。 在Erlang和OTP的世界里,容错性是核心设计理念之一。通过故障隔离和恢复机制,系统可以在...
Erlang还有一套强大的并发工具,如分布式节点通信和分布式数据库Mnesia。这些工具使得Erlang成为构建分布式系统和集群的理想选择。在Erlang中文手册中,你会找到关于如何利用这些工具的详细指导。 "更多erlang资料...