9306 是什么
9306 是 Sphinx 与 Manticore Search 中 searchd 的 SQL 接口端口:它实现了 MySQL 客户端协议的一部分,因此可以用标准 mysql 客户端连上去执行 SHOW TABLES、SELECT 配合 MATCH 等语句,既方便管理索引,也能在排障时直接验证检索结果。检索用的二进制 API 默认在 9312,两者配合使用:业务走 API 与 SQL 查询,运维与排障更常用 9306 手工确认。
基本信息
| 服务 | Sphinx / Manticore searchd(SQL 接口) |
|---|---|
| 协议 | TCP(MySQL 方言) |
| 配套端口 | 9312(检索 API) |
| 用途 | 全文索引查询与维护 |
| 常见调用方 | PHP、Python 站点搜索 |
| 安全等级 | 仅应用网段 |
典型使用场景
- 搜索排障:直接查索引确认数据与关键词是否命中
- 索引维护:查看索引清单与状态、触发重建
- 接口对照:SQL 侧与 API 侧结果不一致时定位差异
- 老站升级评估:从 Sphinx 迁移到 Manticore 的验证
- 性能分析:查询耗时与索引结构的关系
- 数据校验:业务库与索引内容的一致性抽查
常用 SQL 侧操作
| 语句 | 作用 | 注意 |
|---|---|---|
| SHOW TABLES | 列出索引 | 确认索引是否加载成功 |
| SHOW INDEX STATUS | 查看索引状态 | 重建进度在这里看 |
| SELECT ... MATCH('关键词') | 验证检索结果 | 与业务结果对照 |
| SHOW META | 查看查询统计 | 关键词命中情况排障 |
查询示例
查询示例
mysql -h127.0.0.1 -P9306 -e 'SHOW TABLES' # 索引清单
mysql -h127.0.0.1 -P9306 -e "SELECT id,WEIGHT() FROM idx WHERE MATCH('关键词') LIMIT 5"
mysql -h127.0.0.1 -P9306 -e 'SHOW META' # 上次查询的元信息
ss -lntp | grep -E '9306|9312' # 端口核对9306 只是「长得像 MySQL」:它不支持事务,DDL 语义也不同,用管理 MySQL 的习惯操作容易造成不可回滚的数据变更。
索引重建期间查询结果会变化:排障时先确认是否正在索引轮转,再对比前后结果,避免把正常行为当成缺陷。
索引与数据源不一致表现为「明明有数据却搜不到」:核对增量同步任务与索引时间戳,通常能立刻定位是同步中断而不是引擎故障。
分词配置决定召回效果:中文站点尤其如此,调整分词需要重建索引并留出验证窗口,不能直接在生产上试。