物联网数据下载到mysql_项目实战-物联网平台搭建-EMQ x数据转存mysql(二)

本文介绍了如何将物联网数据从EMQ X MQTT Broker下载并存储到MySQL数据库中,详细步骤包括安装MySQL,创建相关数据库和表结构,如mqtt_client、mqtt_sub、mqtt_msg等,以及配置EMQ X后台插件连接MySQL存储数据。
摘要由CSDN通过智能技术生成

首先安装mysql

官网下载安装mysql-server

# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

# rpm -ivh mysql-community-release-el7-5.noarch.rpm

# yum install mysql-community-server

安装成功后重启mysql服务。

# service mysqld restart

进入mysql:

mysql -u root

设置密码(密码为:password):

set password for 'root'@'localhost' =password('password');

登陆:

mysql -u root –p

创建mqtt数据库:

create database mqtt;

MySQL 设备在线状态表

创建mqtt_client表:

DROP TABLE IF EXISTS `mqtt_client`;

CREATE TABLE `mqtt_client` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`clientid` varchar(64) DEFAULT NULL,

`state` varchar(3) DEFAULT NULL,

`node` varchar(64) 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`),

INDEX topic_index(`id`, `clientid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8MB4;

MySQL 主题订阅表

创建mqtt_cub表:

DROP TABLE IF EXISTS `mqtt_sub`;

CREATE TABLE `mqtt_sub` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`clientid` varchar(64) DEFAULT NULL,

`topic` varchar(180) DEFAULT NULL,

`qos` tinyint(1) DEFAULT NULL,

`created` timestamp NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`),

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

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

INDEX topic_index(`id`, `topic`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8MB4;

MySQL 消息存储表

创建mqtt_msg表:

DROP TABLE IF EXISTS `mqtt_msg`;

CREATE TABLE `mqtt_msg` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`msgid` varchar(64) DEFAULT NULL,

`topic` varchar(180) NOT NULL,

`sender` varchar(64) DEFAULT NULL,

`node` varchar(64) DEFAULT NULL,

`qos` tinyint(1) NOT NULL DEFAULT '0',

`retain` tinyint(1) DEFAULT NULL,

`payload` blob,

`arrived` datetime NOT NULL,

PRIMARY KEY (`id`),

INDEX topic_index(`id`, `topic`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8MB4;

MySQL 保留消息表

创建mqtt_retain表:

DROP TABLE IF EXISTS `mqtt_retain`;

CREATE TABLE `mqtt_retain` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`topic` varchar(180) DEFAULT NULL,

`msgid` varchar(64) DEFAULT NULL,

`sender` varchar(64) DEFAULT NULL,

`node` varchar(64) DEFAULT NULL,

`qos` tinyint(1) DEFAULT NULL,

`payload` blob,

`arrived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`),

UNIQUE KEY `mqtt_retain_key` (`topic`),

INDEX topic_index(`id`, `topic`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8MB4;

MySQL 消息确认表

创建mqtt_acked表:

DROP TABLE IF EXISTS `mqtt_acked`;

CREATE TABLE `mqtt_acked` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`clientid` varchar(64) DEFAULT NULL,

`topic` varchar(180) DEFAULT NULL,

`mid` int(11) unsigned DEFAULT NULL,

`created` timestamp NULL DEFAULT NULL,

PRIMARY KEY (`id`),

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

INDEX topic_index(`id`, `topic`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8MB4;

MySQL 数据存储

修改配置文件: emqx_backend_mysql.conf

配置 MySQL 服务器

支持配置多台 MySQL 服务器连接池:

## Mysql 服务器地址

backend.mysql.pool1.server = 127.0.0.1:3306

## Mysql 连接池大小

backend.mysql.pool1.pool_size = 8

## Mysql 用户名

backend.mysql.pool1.user = root

## Mysql 密码

backend.mysql.pool1.password = public

## Mysql 数据库名称

backend.mysql.pool1.database = mqtt

目录结构

不同安装方式得到的 EMQ X 其目录结构会有所不同,具体如下:

描述使用 ZIP 压缩包安装使用二进制包安装可执行文件目录./bin/usr/lib/emqx/bin

数据文件./data/var/lib/emqx/data

Erlang 虚拟机文件./erts-*/usr/lib/emqx/erts-*

配置文件目录./etc/etc/emqx/etc

依赖项目录./lib/usr/lib/emqx/lib

日志文件./log/var/log/emqx

启动相关的脚本、schema 文件./releases/usr/lib/emqx/releases

启用 MySQL 数据存储插件

./bin/emqx_ctl plugins load emqx_backend_mysql

或者在mqtt web页面启动

插件:

2ceea12df17891282b0a143b6a4290af.png

之后就可已在mysql数据库表中查看信息了

本文地址:https://blog.csdn.net/xurQQ/article/details/108993823

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值