milvus修改数据库为mysql时无法连接
问题
Error: failed to open database: Can't construct MySQL connection. Possible reason: out of storage, meta schema is damaged or created by in-compatible Milvus version.
Milvus server is going to shutdown ...
Milvus server exit...
当修改milvus的数据库为mysql的时候遇到了这个问题,


数据库milvustest已经创建,配置文件也已经改好,完全按照官方文档改的,但是就是出错,之后偶然测试了一下远程连接mysql,发现连不上,突然想到会不会和这个有关系,修改之后果然能用了,修改过程参照远程连接服务器的mysql出现2003-Cant connect to MySQL server.
我也不知道具体是什么原因,猜测是这个连接按照ip访问的,会被mysql数据库拦截,但是我在修改之前使用localhost和127.0.0.1都不行。
----------2021.12.06-----
经过测试后,终于发现解决方法及真正的原因。
- docker部署milvus在没有指定ip的情况下会自动分配一个ip,如果对公网的端口做了访问限制,该ip地址无法根据公网访问端口,因此需要把milvus大的配置文件/milvus/conf/server_config.yaml中的meta_uri的ip地址改为内网ip,即能够在docker容器内ping通的ip地址
2.在启动milvus的时候可以指定ip启动
创建docker网段:
docker network create --subnet=172.18.0.0/16 mynetwork
启动milvus:
sudo docker run -d --name milvus_cpu_1.1.0 \
--net mynetwork \
--ip 172.18.0.2 \
-p 19530:19530 \
-p 19121:19121 \
-v /home/$USER/milvus/db:/var/lib/milvus/db \
-v /home/$USER/milvus/conf:/var/lib/milvus/conf \
-v /home/$USER/milvus/logs:/var/lib/milvus/logs \
-v /home/$USER/milvus/wal:/var/lib/milvus/wal \
milvusdb/milvus:1.1.0-cpu-d050721-5e559c
- 需要设置mysql访问权限
mysql -uroot -p
use mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'<milvus启动ip地址>' IDENTIFIED BY '<数据库密码>';
flush privileges;
4.设置mysql的bind-address
vi /etc/my.cnf
在[mysqld]节点下面添加
bind-address=0.0.0.0
保存后重启mysql:
service mysqld restart

浙公网安备 33010602011771号