首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏山海散人技术

    Mnesia判断数据库和表是否存在

    判断数据库是否存在 case mnesia:system_info(use_dir) of     true ->         alread_created;     _ ->          mnesia:create_schema([node()])     end. 2. 判断表是否存在 case lists:member(agent_cache_table, mnesia:system_info(tables)) of     true ->         lager :info("The table agent_cache_table is exists in mnesia !!!") ;     _ ->         lager:info("The table agent_cache_table is not exists in mnesia !!!")     end.

    1.7K10发布于 2021-03-03
  • 来自专栏技术杂记

    RabbitMQ集群II2

    [{pid,3116}, {running_applications,[{rabbit,"RabbitMQ","3.5.6"}, {mnesia,"MNESIA {queue_slave_procs,0}, {plugins,0}, {other_proc,9342280}, {mnesia [{pid,2975}, {running_applications,[{rabbit,"RabbitMQ","3.5.6"}, {mnesia,"MNESIA {queue_slave_procs,0}, {plugins,0}, {other_proc,9303984}, {mnesia

    21320编辑于 2022-05-03
  • 来自专栏技术杂记

    RabbitMQ集群II3

    查看集群状态 [root@h101 mnesia]# rabbitmqctl -n hare cluster_status Cluster status of node hare@h101 ... }, {running_nodes,[hare@h101]}, {cluster_name,<<"hare@h101.temp">>}, {partitions,[]}] [root@h101 mnesia ]# 创建集群 [root@h101 mnesia]# rabbitmqctl -n rabbit stop_app Stopping node rabbit@h101 ... [root@h101 mnesia]# rabbitmqctl -n rabbit cluster_status Cluster status of node rabbit@h101 ... [root@h101 mnesia]# rabbitmqctl -n rabbit start_app Starting node rabbit@h101 ...

    25420编辑于 2022-05-03
  • 来自专栏技术杂记

    RabbitMQ基础6

    CXC 138 46","2.2.7"}, {xmerl,"XML parser","1.2.10"}, {mnesia ,"MNESIA CXC 138 12","4.5"}, {sasl,"SASL CXC 138 11","2.1.10"}, {queue_slave_procs,0}, {plugins,0}, {other_proc,9318008}, {mnesia false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit {queue_slave_procs,0}, {plugins,0}, {other_proc,8902024}, {mnesia

    42710编辑于 2022-05-04
  • 来自专栏Cloud-DIY

    【Rabbitmq报错及解决办法】Error: unable to connect to node rabbit@rabbitmq3: nodedown

    /plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@rabbitmq2-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq /mnesia/rabbit@rabbitmq2" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 rabbitmq CXC 138 46","2.2.14"}, {xmerl,"XML parser","1.3.6"}, {mnesia ,"MNESIA CXC 138 12","4.11"}, {sasl,"SASL CXC 138 11","2.3.4"},

    1.7K20编辑于 2022-12-13
  • 来自专栏EMQ 物联网

    Mria + RLOG 新架构下的 EMQX 5.0 如何实现 1 亿 MQTT 连接

    EMQX 集群Mnesia 介绍EMQX 4.x 版本存储采用的是 Erlang/OTP 自带的分布式数据库 Mnesia ,它具备以下优点:Embedded: 和 MySQL、PostgeresSQL 等数据库不同,Mnesia 和 EMQX 是运行在同一个操作系统进程的(类似于 SQLite)。 EMQX 在数据一致性很重要的地方使用 Mnesia 事务,例如更新路由表、创建规则引擎规则等。Distributed: Mnesia 表会复制到所有 EMQX 节点。 而 Mnesia 直接使用 Erlang 表达式和内置的数据类型进行读写,这使得与业务逻辑的整合非常顺利,并消除了数据编解码的开销。在 Mnesia 集群中,所有节点都是平等的。 如下图所示:图片Mnesia 的问题正如我们上面所讨论的,Mnesia 数据库有很多非常显著的优点,EMQX 也从中获得了非常大的收益。

    1.8K82编辑于 2022-07-21
  • 来自专栏边缘计算

    从百万到亿级:EMQX 5.0 新架构的利与弊

    作者:郑志科 单位:中国移动智慧家庭运营中心 1 Mnesia:Erlang语言中的分布式数据库 在EMQX 5.x版本之前,集群数据存储采用的是Erlang/OTP自带的实时分布式数据库管理系统——Mnesia Mnesia通常支持两种数据访问模式:本地模式和远程模式。 2 Mnesia的弊端:复制带来的开销 如前文所述,由于Mnesia集群使用全网状的连接架构,集群中每个节点都会与其它所有的节点建立连接,每个节点产生的事务也都被会复制到集群中的所有节点上。 Mnesia 网状拓扑架构 3 Mria:从全网状到单复制 为了解决Mnesia全网状复制带来的问题,EMQX 5.x版本中引入了新的数据层解决方案实现——Mria。 Mria对Mnesia进行了封装,其核心诉求是在实现数据的本地读写的基础上,尽可能地减少集群节点复制的开销。

    2K40编辑于 2023-02-23
  • 来自专栏技术杂记

    RabbitMQ集群I1

    [{pid,7593}, {running_applications,[{rabbit,"RabbitMQ","3.5.6"}, {mnesia,"MNESIA {queue_slave_procs,0}, {plugins,0}, {other_proc,9265232}, {mnesia

    33210编辑于 2022-05-04
  • 来自专栏嵌入式小屋的专栏

    如何管理 MQTT 用户登录?

    二.使用 emqx_auth_mnesia 认证 1. 修改 emqx_auth_mnesia.conf 文件 如果你安装的 MQTT 服务器,是按照我前面文章所说,直接输入以下命令就可以编辑了。 sudo vim /etc/emqx/plugins/emqx_auth_mnesia.conf 修改如下图所示: 去掉##,增加或修改用户名和密码即可 2. 开启 emqx_auth_mnesia 插件 3.

    2.2K30编辑于 2022-04-27
  • 来自专栏云计算D1net

    WhatsApp的架构是如何应付高流量的

    限制访问单ets或者mnesia进程的数量到8,这会让锁争用处于控制当中。 Mnesia 因为没有使用事务去保证一致性,他们使用一个进程对一个节点上的记录进行连续访问。 打补丁允许Mnesia库直接被分割到多个库上,这就意味着它可以写多个驱动,这么做可以直接提升磁盘的吞吐量。 这里存在的问题是Mnesia达到峰值,通过多个磁盘来分摊IO,而为了进一步提升可扩展性及性能,甚至会加入SSD。 将Mnesia“island”缩减到2个,每个“island”都是一个Mnesia集群。因此在表格被分割成32份时,将会有16个“island”支撑一个表格。 添加多个mnesia_tm async_dirty发送者 存在许多的跨集群操作,因此mnesia最好从附近的节点加载。 给异步文件IO加入循环调度。

    1.8K70发布于 2018-03-16
  • 来自专栏北京马哥教育

    RabbitMQ源码解析前奏--partitions

    RabbitMQ存储信息到Erlang的分布式数据库Mnesia中,包括queue、exchange、binding等。围绕网络分区的许多详细故障信息都与Mnesia的行为有关。 二、检测网络分区 如果一分钟左右(net_ticktime参看这里)另一个节点不能与该节点取得联系,则Mnesia通常会判定该节点down了。 如果两个节点能够联系得上了,但又都认为对方down了,则Mnesia将判定分区发生了。 这个分区将被Mnesia当成是可靠的节点来使用,在其它分区内的任何改变都会丢失。 在其它分区内停止所有节点,然后再次启动它们。当它们重新加入集群时,它们将从信任的分区中恢复状态。 具体步骤如下: #kill -p(rabbitmq pid) #rm /var/lib/rabbitmq/mnesia #./rabbitmq-server & #.

    1.1K40发布于 2018-05-02
  • 来自专栏全栈程序员必看

    RabbitMQ Network Partitions

    Many of the details of what happens around network partitions are related to Mnesia’s behaviour. RabbitMQ会将queues, exchanges, bindings等信息存储在Erlang的分布式数据库——Mnesia中,许多围绕网络分区的一些细节都和这个Mnesia的行为有关。 检测网络分区 如果另一个节点在一分钟(或者一个net_ticktime时间)内不能连接上一个节点,那么Mnesia通常任务这个节点已经挂了。 就算之后两个节点连通(译者注:应该是指网络上的可连通),但是这两个节点都认为对方已经挂了,Mnesia此时认定发送了网络分区的情况。 从网络分区中恢复 未来从网络分区中恢复,首先需要挑选一个信任的分区,这个分区才有决定Mnesia内容的权限,发生在其他分区的改变将不被记录到Mnesia中而直接丢弃。

    53920编辑于 2022-09-13
  • 来自专栏山海散人技术

    RabbitMQ安装

    通过各种日志发现,第一次安装 RabbitMQ 启动时,会生成一个 mnesia 数据库,第二次启动跟第一次启动的数据不符合,所以启动失败了。 解决的办法就是找到这个mnesia数据库并删除它,重新启动的时候让它重新生成。 文件夹位置:/var/lib/rabbitmq/mnesia  通过cd命令进入该文件夹 cd /var/lib/rabbitmq/mnesia 删除文件 rm -rf * 4.

    48020发布于 2021-03-03
  • 来自专栏技术杂记

    RabbitMQ基础8

    {queue_slave_procs,0}, {plugins,0}, {other_proc,8917816}, {mnesia RabbitMQ","3.5.6"}, {os_mon,"CPO CXC 138 46","2.2.7"}, {mnesia ,"MNESIA CXC 138 12","4.5"}, {xmerl,"XML parser","1.2.10"}, {queue_slave_procs,0}, {plugins,0}, {other_proc,9270424}, {mnesia

    41620编辑于 2022-05-04
  • 来自专栏小白开发

    (Linux)最新版EMQX关闭匿名访问开启用户认证

    需要修改的三个文件 \etc\emqx.conf \etc\plugins\emqx_auth_mnesia.conf \etc\acl.conf 1.首先进入emqx.conf找到allow_anonymous 改为false allow_anonymous = false 2.去后台开启emqx_auth_mnesia插件,然后进入emqx_auth_mnesia.conf添加下面的信息 应用的账号密码 auth.client

    2.2K21编辑于 2023-04-06
  • 来自专栏技术杂记

    RabbitMQ集群II1

    /plugins" -rabbit plb/rabbitmq/mnesia/rabbit-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia esia/rabbit" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max /plugins" -rabbit plb/rabbitmq/mnesia/rabbit-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup /plugins" -rabbit plugins_itmq/mnesia/hare-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/vae" -kernel inet_dist_listen_min 25673 -kernel inet_dist_listen_max

    42330编辑于 2022-05-03
  • 来自专栏小工匠聊架构

    MQ - 09 RabbitMQ的架构设计与实现

    元数据存储 —> 自带的分布式数据库 Mnesia RabbitMQ 的元数据都是存在于 Erlang 自带的分布式数据库 Mnesia 中的。 即每台 Broker 都会起一个 Mnesia 进程,用来保存一份完整的元数据信息。因为 Mnesia 本身是一个分布式的数据库,自带了多节点的 Mnesia 数据库之间的同步机制。 所以在元数据的存储模块,RabbitMQ 的 Broker 只需要调用本地的 Mnesia 接口保存、变更数据即可。不同节点的元数据同步 Mnesia 会自动完成。 在一些异常的情况下,如果不同节点上的 Mnesia 之间的数据同步出现问题,就会导致不同的 Mnesia 数据库之间数据不一致,进而导致集群出现脑裂、无法启动等情况。 此时就需要手动修复异常的 Mnesia 实例上的数据。 因为 Mnesia 本身是一个数据库,所以它和数据库一样,可以进行增删改查的操作。

    1.1K20编辑于 2023-09-21
  • 来自专栏一个默默无闻的工程师的日常

    RabbitMQ Network Partition

    (rabbit@controller02): ** ERROR ** mnesia_event got {inconsistent_database, running_partitioned_network 网络分区 RabbitMQ 会将 fabric 信息保存在 Erlang 的分布式数据库 Mnesia 中。而和网络分区相关的许多细节问题都和 Mnesia 的行为相关。 1. 网络分区的探测 Mnesia 判定某个 node 失效的根据是,如果其他 node 无法连接该 node 的时间达到 1 分钟以上(详情请参 考 net_ticktime 的 说明)。 当这两个 node 恢复到能联系上的状态时,都会认为对端 node 已 down 掉了,此时 Mnesia 将会判定发生了网络分区。 选中的分区将会作为“权威机构”被 Mnesia 使用。任何发生在未被选中分区中的变更将会丢失。 停止其他分区的所有 node ,之后再重新启动它们。

    1.4K20发布于 2018-07-16
  • 来自专栏技术杂记

    RabbitMQ基础2

    [{pid,3416}, {running_applications,[{rabbit,"RabbitMQ","3.5.6"}, {mnesia,"MNESIA {queue_slave_procs,0}, {plugins,0}, {other_proc,9268312}, {mnesia

    28730编辑于 2022-05-04
  • 来自专栏全栈程序员必看

    RabbitMQ Network Partitions 处理策略[通俗易懂]

    RabbitMQ会将queues,exchanges,bindings等信息存储在Erlang的分布式数据库——Mnesia中,许多围绕网络分区的一些细节都和这个Mnesia的行为有关。 如果一个节点不能在T时间内连上另一个节点(这里的连上特指broker节点之间的内部通信),那么Mnesia通常认为这个节点已经down了,就算之后两个节点又重新恢复内部通信,但是这两个节点都会认为对方已经 down,Mnesia此时认定发生了网络分区的情况。 ('rabbit@node1'): ** ERROR ** mnesia_event got {inconsistent_database, running_partitioned_network, ' 手动处理网络分区 为了从网络分区中恢复,首先需要挑选一个信任的分区,这个分区才有决定Mnesia内容的权限,发生在其他分区的改变将不被记录到Mnesia中而直接丢弃。

    1.1K10编辑于 2022-09-13
领券