项目实战-物联网平台搭建-EMQ x数据转存mysql(二)
程序员文章站
2022-03-15 15:17:07
首先安装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 -...
首先安装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页面启动
插件:
之后就可已在mysql数据库表中查看信息了
本文地址:https://blog.csdn.net/xurQQ/article/details/108993823