如何持久化部署至Azure Edge SQL实例的流定义
Azure SQL Edge 流定义与元数据持久化方案
针对边缘节点重部署后自动恢复流配置的需求,完全可以通过Azure Edge管理服务自带的板载能力实现,不需要额外部署第三方工具,具体实现逻辑如下:
核心存储逻辑说明
Azure SQL Edge的流分析作业定义、关联元数据默认存储在实例内部系统表中,随/var/opt/mssql路径下的实例数据一同存放。如果部署时未做持久卷挂载,容器/实例销毁后这部分数据会随临时存储一同被清除。
具体配置步骤
- 配置持久卷挂载(基础必选)
部署SQL Edge模块时,在IoT Edge管理界面的模块容器配置中,将容器内路径/var/opt/mssql映射到边缘节点主机的本地持久目录:- Linux节点推荐映射到主机路径
/opt/azuresqledge/data,执行命令chown 10001:10001 /opt/azuresqledge/data给目录授权(SQL Edge容器内运行服务的用户UID为10001,无权限会导致服务启动失败) - Windows节点直接映射到非系统临时目录的本地磁盘路径即可
完成挂载后,只要主机对应目录不被删除,哪怕SQL Edge容器被删除重建,重新挂载该目录后所有实例数据、流定义、作业配置都会完整保留。
- Linux节点推荐映射到主机路径
- 配置声明式流定义自动下发(零手动干预可选)
如果需要实现节点完全重装后的自动恢复,不要在实例部署后手动连接数据库执行T-SQL创建流作业,选择以下任意一种板载方式下发配置:- 启动脚本自动执行:将流作业创建、输入输出绑定、作业启动的T-SQL脚本存入持久挂载目录,给SQL Edge模块配置环境变量
MSSQL_SCRIPT_STARTUP指向脚本路径,脚本中增加流作业存在性判断逻辑(存在则跳过创建),实例每次启动时会自动执行脚本完成配置。 - 模块孪生期望属性下发:如果是搭配Azure流分析(ASA) on Edge使用的场景,直接将流定义、输入输出绑定规则写入SQL Edge/ASA Edge模块的孪生期望属性中,边缘代理同步配置时会自动完成流的创建与启动,全程不需要手动连接数据库操作。
- 启动脚本自动执行:将流作业创建、输入输出绑定、作业启动的T-SQL脚本存入持久挂载目录,给SQL Edge模块配置环境变量
- 跨节点灾备配置(可选)
如果需要应对边缘节点本地磁盘故障的场景,可以开启SQL Edge内置的自动备份功能,将备份文件同步到外接存储或关联的云存储目录,新节点部署时直接拉取备份文件还原,流定义和业务数据可以一次性恢复。
验证方式
配置完成后可以直接删除运行中的SQL Edge容器,等待IoT Edge代理自动拉取镜像重启实例,连接实例后查询系统视图sys.streaming_jobs,即可看到原有流作业完整保留,且会自动恢复到运行状态,不需要手动重新配置。
内容的提问来源于stack exchange,提问作者benjist
相关产品推荐
相关产品推荐

