MySQL
MySQL 连接器用于把已批准的关系型数据行转成可检索文档。它支持两种索引模式:
- 自动发现:读取所选数据库中可访问的基础表,由管理员选择表和列,再映射为文档。
- 自定义 SQL:执行受控的
SELECT或WITH查询,把返回列映射为文档 ID、标题、可检索正文、元数据和更新时间。
请使用专用只读账号,并只暴露经过整理的表或视图。不要把拥有广泛权限的生产账号连接到包含未审批个人数据、凭据、令牌或运营密钥的数据库。
需要准备什么
创建只读 MySQL 账号
请用数据库管理员账号执行授权,并按实际环境调整 host pattern、数据库、表和视图名称。
MySQL 支持 REQUIRE SSL 等账号级 TLS 要求。只有当 AIvis 部署路径已经提供兼容的 MySQL TLS 处理能力时,才为该账号启用这类要求,例如通过已批准的私有数据库代理。
当源表包含敏感列时,请先创建视图:
只有当某个数据库已专门整理用于 AIvis 索引时,才使用数据库级授权:
创建凭据
连接器读取 MySQL 行时使用 utf8mb4,并设置 10 秒连接超时。
选择索引模式
自动发现
自动发现会读取所选数据库中可访问的基础表,并忽略 information_schema、mysql、performance_schema、sys 等 MySQL 系统 schema。
在 schema 树中:
- 只选择已批准索引的表和字段。
- 二进制、geometry 和 blob 类列不会被索引。
- AIvis 优先使用主键,其次使用非空唯一索引;没有稳定键时使用行哈希。
- 没有稳定键的表在选中值变化后可能生成新的文档 ID;建议添加主键,或使用自定义 SQL 返回显式 ID。
- 标题字段会优先从
title、name、subject、label等列推断;可在表设置中覆盖。 - 更新时间字段会从
updated_at、updated、modified_at、modified、last_modified等 datetime 列推断;没有更新时间字段意味着该表需要全表扫描。
自定义 SQL 要求
连接器会把你的查询包装为子查询,并校验返回列。SQL 应保持只读、确定性和可复现。
示例:
对应字段:
生产安全
连接器会在只读事务中读取 MySQL,并在读取时设置 max_execution_time。这能避免 AIvis 写入数据,但不能替代数据库侧权限控制。
上线前:
- 尽量使用只读副本、分析库或受控视图层。
- 为自定义 SQL 的筛选条件和更新时间窗口添加索引。
- 自定义 SQL 避免
SELECT *;只返回已批准列。 - 避免在高负载 OLTP 表上运行长 join。
- 在测量查询计划和同步耗时前,保持较小批大小。
- 把 MySQL 账号 host pattern 限制到 AIvis 网络路径,不要使用
%。 - 在已部署连接路径支持前,不要对账号强制 MySQL TLS;需要受保护链路时使用私有网络或已批准代理。
- 确认查询计划不会产生重锁、大表全扫或过多临时表。
验证
- 确认凭据能用只读账号连接。
- 在自动发现中确认能看到预期数据库表和字段。
- 在自定义 SQL 中确认查询返回所有已配置列。
- 执行首次同步,检查行数、已索引文档数和失败记录。
- 按标题和正文搜索代表性记录。
- 确认未选表、字段和敏感列不会出现在搜索中。
- 修改一行测试数据,确认配置更新时间字段后会更新同一文档。
- 使用连接器受众之外的用户测试,确认受限文档不可见。