使用 MySQL 管理元数据

Milvus 默认使用 SQLite 作为元数据后台管理服务,SQLite 内嵌于 Milvus 进程中,无需启动额外服务。但是在生产环境中,基于可靠性的考虑,我们强烈建议你使用 MySQL 作为元数据管理服务。

Milvus 在 CentOS 系统中不支持 MySQL 8.0 或更高版本。

请参考以下步骤使用 MySQL 作为元数据管理服务:

  1. 拉取 MySQL 最新镜像。

    1. $ docker pull mysql:5.7
  2. 启动 MySQL 服务(密码和端口可自行设置)。

    1. $ docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  3. 使用 root 账号和 MySQL 服务所在的主机 IP (<MySQL_server_host IP>)登录 MySQL,回车后系统提示输入密码。输入上一步设置的密码。

    1. $ mysql -h<MySQL_server_host IP> -uroot -p
  4. 进入 MySQL 客户端命令行,创建一个 database,名称可自行设定,这里使用 milvus

    1. mysql> create database milvus;
  5. 退出 MySQL 客户端, 修改 milvus.yaml 文件的 meta_uri 参数。使用 MySQL 服务所在的主机 IP 作为 IP 地址(<MySQL_server_host IP>)。注意密码、IP 地址、端口以及 database 名称要和以上几步的设置一致。

    1. meta_uri: mysql://root:123456@<MySQL_server_host IP>:3306/milvus
  6. 使用修改过的 milvus.yaml 启动 Milvus 服务。

常见问题

出现 database is locked 的报错怎么解决? 如果元数据管理用的是 SQLite,在有数据频繁写入的情况下会出现该错误。建议将 SQLite 更换为 MySQL。如何更换请参考文档 使用 MySQL 管理元数据。 为什么我在 SQLite / MySQL 找不到向量数据? SQLite / MySQL 只是存放原始向量数据的元数据。向量和索引直接以文件的形式存在磁盘上,不存放在 SQLite 或 MySQL里。详见 存储相关概念。 Milvus 的元数据存储可以使用 SQL Server 或者 PostgreSQL 吗? 不可以,目前仅支持 SQLite 和 MySQL。

数据管理相关博客

从数据导入,数据存储到数据查询和调度,请参阅我们的博客深入了解 Milvus 数据管理方案。