功能介绍
腾讯云 EMR StarRocks 提供 SQL 拦截功能,帮助用户在控制台以可视化方式管理 SQL 黑名单规则,通过正则表达式匹配 SQL 文本,对不符合规范的 SQL 语句(如全表扫描、无 WHERE 条件的 DELETE 操作、高资源消耗查询等)进行自动拦截,保障集群稳定性,降低运维门槛。
注意:
1. 当前该功能为白名单灰度开放,若需要体验可通过 提交工单 开通白名单使用。
2. SQL 拦截功能底层依赖 StarRocks 社区 SQL Blacklist 能力,支持动态配置、即时生效,无需重启集群。
前提条件
1. 集群类型为 StarRocks,且版本 ≥ v2.3。不同拦截范围对 StarRocks 版本有不同要求:
≥ v2.3 <v3.1仅拦截 SELECT,
≥ v3.1 < 3.4仅拦截 SELECT + INSERT
2. 集群状态为“运行中”,FE 节点正常运行。
3. 登录账号需具有集群管理权限。
注意事项
1. 所有 SQL 拦截规则配置动态生效,无需重启 FE/BE 进程。
2. 同一 SQL 命中多条正则规则时,底层按规则创建顺序(Index)进行匹配,命中第一条即终止拦截,不继续匹配后续规则。
3. 正则表达式中,括号 ( ) 由平台自动处理转义,其他特殊字符(. * + ? 等)需用户手动添加 \\ 前缀。
4. 拦截功能开关默认为关闭状态,开启后已启用的规则将立即生效。
5. 删除的规则无法恢复,请谨慎操作。
操作步骤
步骤一:进入 SQL 拦截管理页面
1. 登录 EMR 控制台,单击目标 StarRocks 集群 ID,进入集群详情页。
2. 在顶部导航栏中,单击SQL 拦截标签页,进入 SQL 拦截管理页面。
3. 页面顶部展示 SQL 拦截配置状态栏,包含拦截功能总开关和规则统计信息。
步骤二:开启 SQL 拦截功能
1. 在 SQL 拦截管理页面顶部,找到“SQL 拦截配置”开关。
2. 单击开关,将其切换为“开启”状态(绿色)。
3. 开启后,所有状态为“已启用”的拦截规则将立即生效,开始拦截不符合规则的 SQL 语句。
4. 关闭拦截功能总开关时,系统将弹出确认弹窗,提示“关闭后 N 条已启用规则暂停生效,SQL 将不受任何限制执行”,请确认后操作。
步骤三:创建拦截规则
1. 在“拦截规则”下,单击“新建规则”按钮,弹出规则配置弹窗,按以下说明配置规则:
2. 规则类型选择:
类型 | 说明 | 支持状态 |
SQL 正则黑名单 | 通过正则表达式匹配 SQL 文本,命中即拒绝执行 | 支持 |
3. SQL 正则黑名单配置项(选择此类型后展示):
规则名称(必填):长度限制 1~128 个字符,支持字母、数字、中文、-、_。
匹配模式(必填):支持两种模式:• 快捷选择:内置高频拦截场景复选项,可多选,每项生成一条独立规则• 自定义正则:自由输入正则表达式,括号由平台自动转义
拦截范围(必填):单选:仅 SELECT / SELECT + INSERT / SELECT + INSERT + CTAS,系统根据集群 StarRocks 版本自动屏蔽不支持的选项
快捷选项说明(快捷选择模式):
选项 | 说明 | 对应正则(示例) |
禁止 SELECT * | 防止全表扫描大表 | select \\\\* from .+ |
禁止 count(*) | 高频慢查询场景 | select count\\\\(\\\\*\\\\) from .+ |
禁止 count(distinct ...) | 聚合去重内存消耗过大 | select count\\\\(distinct .+\\\\) from .+ |
禁止 ORDER BY 无 LIMIT | 可能导致全量排序 OOM | select .+ order by .+(?!.*limit).* |
4. 配置完成后,可选择:
“保存并生效”(推荐):规则创建后立即下发生效。
“保存并禁用”:规则创建为禁用状态,不立即生效,后续可按需启用。
“取消”:放弃当前配置,关闭弹窗。
警告:
下发黑名单:服务重启及服务角色 FE 节点重启时,黑名单规则将失效,需重新点击下方黑名单方可生效。
步骤四:管理拦截规则
在“拦截规则”列表中,可对已有规则进行以下管理操作:
1. 启用 / 禁用规则:单击规则行右侧开关,即时启用或禁用单条规则,无需重启集群。
2. 查看规则详情:单击规则名称,展开规则详情,查看完整的匹配正则和拦截范围。
3. 删除规则:单击操作列的删除,在确认弹窗中输入验证信息后完成删除。(注意:删除后无法恢复。)