本文以使用官方示例驱动的LightSensor设备为例,描述将设备的数据存储到本地MySQL数据库的方法。
前提条件
背景信息
在生产中常需要结合传感器的历史数据和行业的算法模型,在边缘端进行现场状态的分析和判断。实现此操作,首先需要把设备上报的数据存储到本地数据库。
边缘函数计算提供本地数据库存储助手,根据ProductKey_DeviceName
格式,将设备上报数据分为不同的表,并存储到本地MySQL数据库,供函数计算中的其他函数(算法逻辑)查询。同时,因为边缘设备的存储空间受限,本地数据库还提供数据库单表存储上限配置(默认为1万条记录)和数据写满回滚机制。
步骤一:创建MySQL容器镜像应用
MySQL容器镜像应用,将作为MySQL数据库服务(server),供函数(client)访问并在其下创建MySQL数据库。
- 登录边缘计算控制台。
- 在左侧导航栏单击应用管理。
- 创建容器镜像类型的边缘应用,具体操作,请参见容器镜像应用。
部分参数说明如下所示,其余参数保持默认值或无需配置。
表 1. 应用信息参数说明 参数 描述 应用名称 设置您应用的名称,例如publicMySql。 应用类型 选择容器镜像。 仓库类型 选择公共仓库。 镜像地址 设置镜像地址为mysql:latest。 应用版本 设置应用的版本,必须是该应用唯一的版本号,即一个应用不可以设置两个相同的版本号。 环境变量 单击新增环境变量,添加如下方“环境变量配置”表格所示的一条环境变量。 表 2. 环境变量配置 名称 值 MYSQL_ROOT_PASSWORD Mysql数据库的root账户密码,例如设置为123abc。 表 3. 容器配置参数说明 参数 描述 是否使用宿主机host模式 选择否。 网络端口映射 设置您应用的网络端口映射。 - 宿主机端口:设置为3306。
- 容器内端口:设置为3306。
- 类型:选择TCP。
是否启动特权模式 选择是。 卷映射 设置您的卷映射。 - 源路径:
- Linux系统下,设置为/var/mysql/data。
- Windows系统下,设置为\您存放MySQL文件的磁盘:\mysql\data ,例如\D:\mysql\data。
- 目的路径:设置为/var/lib/mysql。
- 读写权限:选择读写。
- 单击确认,完成MySQL容器镜像应用的创建。
步骤二:分配MySQL容器镜像应用到边缘实例
- 在左侧导航栏单击边缘实例。
- 在本文“前提条件”中创建的边缘实例右侧,单击查看。
- 在实例详情页面的边缘应用页签,单击分配应用。
- 在分配应用面板,找到已创建的MySQL容器镜像应用publicMySql,单击对应操作栏中的分配,然后单击关闭。
- 在实例详情页面,单击右上角部署后,在弹出对话框中单击确定,将子设备、函数计算等资源下发到边缘端。
步骤三:创建本地数据库存储函数
- 下载本地数据库存储函数saveMysqlDB-code.zip。
- 登录函数计算控制台。如尚未开通该服务,请阅读并选中我已阅读并同意,单击立即开通,开通服务。
- (可选)在左侧导航栏单击服务及函数,在服务及函数页面服务列表区域,单击新增服务,创建一个服务。其中,服务名称必须填写,此处设置为EdgeFC,其余参数可根据您的需求设置,也可以不设置。说明
- 若您首次在函数计算中创建服务,请根据配置向导配置参数。
- 若已操作过其他应用场景示例或小程序示例,即已创建EdgeFC服务,则无需重复创建。
- 创建服务成功后,在服务及函数页面的EdgeFC区域,单击新增函数。
- 在新建函数页面,单击事件函数区域中的配置部署。
- 设置本地数据库存储函数的基础管理配置参数。
参数 描述 所在服务选择已创建的EdgeFC服务。函数名称设置为saveMysqlDB。 运行环境设置函数的运行环境,此示例中选择Python 3。 在上传代码右侧选择上传代码包,单击上传代码,上传步骤1中下载的saveMysqlDB-code.zip代码包。
函数入口使用默认值index.handler。其余参数的值请根据您的实际需求设置,也可以不设置。更多信息,请参见函数计算。
确认函数信息后,单击新建完成操作。
- 创建函数完成后,系统自动跳转到函数详情页面。您可在代码执行页签的代码执行管理区域下,选中在线编辑单选框,查看源码。
- (可选)配置数据库参数。saveMysqlDB是一个设备数据存储到本地MySQL数据库的参考示例,您可以按需调整和更改示例。目前预留的可调整参数有:
- table_max_entries:数据库单表最大记录条数,默认为1万条。
- table_clean_count:数据库记录到达上限,设置从时间最久远的数据开始删除的条数,默认为4000条。
步骤四:分配本地数据库存储函数到边缘实例
- 使用已创建的saveMysqlDB函数,创建函数计算类型的边缘应用。具体操作,请参见函数计算应用。
应用信息参数说明如下:
参数 描述 应用名称 设置您应用的名称,例如appsaveMysqlDB。 应用类型 选择函数计算。 地域 选择您创建的服务所在的地域。 服务 选择EdgeFC服务。 函数 选择saveMysqlDB函数。 授权 选择AliyunIOTAccessingFCRole。 应用版本 设置应用的版本,必须是该应用唯一的版本号,即一个应用不可以设置两个相同的版本号。 函数配置说明如下:参数 描述 启用默认配置 选择否。 运行模式 运行模式有两种。此处选择持续运行模式。程序部署后会立即执行。 超时限制(秒) 函数收到事件后的最长处理时间,此处使用默认值5秒。如超过该时间函数仍未返回结果,该函数计算程序将会被强制重启。 定时运行 使用默认配置:关闭。 环境变量 单击新增环境变量,添加如下方“环境变量配置”表格所示的环境变量。 表 4. 环境变量配置 名称 值 DB_NAME MySQL的数据库名称,请根据MySQL数据库命名规则,自定义设置,例如设置为mysql_db。 MYSQL_IP MySQL服务地址,需通过MySQL容器镜像应用名称来访问。本示例中MySQL容器镜像应用名称为publicMySql。 其余参数无需配置。
- 在左侧导航栏单击边缘实例。
- 在本文“前提条件”中创建的边缘实例右侧,单击查看。
- 在实例详情页面的边缘应用页签,单击分配应用。
- 在分配应用面板,找到已创建的本地数据库存储函数appsaveMysqlDB,单击对应操作栏中的分配,然后单击关闭。
步骤五:配置消息路由
添加消息的详细步骤及各个参数的解释。详细信息,请参见设置消息路由。
- 在实例详情页面,单击消息路由页签。
- 单击分配路由,添加LightSensor设备到函数计算的消息路由。按照界面提示,设置如下参数,参数设置完成后单击确定。
参数 描述 路由名称 设置一个消息路由名称。 消息来源 此处选择设备,选择 。消息主题过滤 此处选择全部。 消息目标 此处选择边缘应用和appsaveMysqlDB函数。
步骤六:重新部署边缘实例
- 在实例详情页面,单击右上角部署后,在弹出对话框中单击确定,将子设备、函数计算等资源下发到边缘端。
- 登录您的网关,执行
tail -f /linkedge/run/logger/fc-base/appsaveMysqlDB/log.INFO
命令,可以查看该应用的日志,来观察其实际运行情况。 - 在本地MySQL数据库(本示例中名为mysql_db的数据库)中执行
select * from YourProductKey_YourDeviceName;
命令,可以查询到通过appsaveMysqlDB应用存储到MySQL数据库的LightSensor设备数据。说明 将命令中的YourProductKey_YourDeviceName替换为您实际设备的设备证书信息,例如本示例中LightSensor设备的ProductKey为a1*****xPAf,DeviceName为LightSensor,那么实际执行的命令为select * from a1*****xPAf_LightSensor
。
文档内容是否对您有帮助?