emqx mysql_数据持久化(企业版) - MySQL - 《EMQ X v3.0 使用手册》 - 书栈网 · BookStack...

MySQL 数据存储

本章节以在 CentOS 7.2 中的实际例子来说明如何通过 MySQL 来存储相关的信息。

安装与验证 MySQL 服务器

读者可以参考 MySQL 官方文档 或 Docker 来下载安装 MySQL 服务器,本文章使用 MySQL 5.6 版本。

为方便管理操作,可下载使用官方免费图形化管理软件 MySQL Workbeanch。

配置 EMQ X 服务器

通过 RPM 方式安装的 EMQ X,MySQL 相关的配置文件位于 /etc/emqx/plugins/emqx_backend_mysql.conf,如果只是测试 MySQL 持久化的功能,大部分配置不需要做更改。填入用户名、密码、数据库即可:

auth.mysql.server=127.0.0.1:3306

auth.mysql.username=root

auth.mysql.password=123456

auth.mysql.database=mqtt

保持剩下部分的配置文件不变,然后需要启动该插件。启动插件的方式有 命令行和 控制台两种方式,读者可以任选其一。

初始化数据表

插件启动时会检查配置中数据库中是否存在以下几张数据表,初始化之后才能启动插件:

mqtt_client 存储设备在线状态

DROP TABLE IF EXISTS`mqtt_client`;

CREATE TABLE`mqtt_client`(

`id`int(11)unsignedNOT NULL AUTO_INCREMENT,

`clientid`varchar(64)DEFAULT NULL,

`state`varchar(3)DEFAULT NULL,--在线状态0离线1在线

`node`varchar(100)DEFAULT NULL,--所属节点

`online_at`datetime DEFAULT NULL,--上线时间

`offline_at`datetime DEFAULT NULL,--下线时间

`created`timestamp NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY(`id`),

KEY`mqtt_client_idx`(`clientid`),

UNIQUE KEY`mqtt_client_key`(`clientid`)

)ENGINE=InnoDBDEFAULT CHARSET=utf8;

mqtt_sub 存储设备的主题订阅关系

DROP TABLE IF EXISTS`mqtt_sub`;

CREATE TABLE`mqtt_sub`(

`id`int(11)unsignedNOT NULL AUTO_INCREMENT,

`clientid`varchar(64)DEFAULT NULL,

`topic`varchar(255)DEFAULT NULL,

`qos`int(3)DEFAULT NULL,

`created`timestamp NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY(`id`),

KEY`mqtt_sub_idx`(`clientid`,`topic`(255),`qos`),

UNIQUE KEY`mqtt_sub_key`(`clientid`,`topic`)

)ENGINE=InnoDBDEFAULT CHARSET=utf8;

mqtt_msg 存储 MQTT 消息

DROP TABLE IF EXISTS`mqtt_msg`;

CREATE TABLE`mqtt_msg`(

`id`int(11)unsignedNOT NULL AUTO_INCREMENT,

`msgid`varchar(100)DEFAULT NULL,

`topic`varchar(1024)NOT NULL,

`sender`varchar(1024)DEFAULT NULL,

`no

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值