转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
环境描述:
rancher版本:v2.5.7
Longhorn版本:v1.1.1
MySQL版本:v5.7.26
问题描述:
在rancher界面部署MySQL,在“数据卷”处创建一个Longhorn的pvc持久化挂载/var/lib/mysql目录,MySQL无法启动。但是将/var/lib/mysql目录挂载到服务器本地启动无任何异常。
报错日志:
2021/6/30 下午5:27:45 Initializing database
2021/6/30 下午5:27:45 2021-06-30T09:27:45.961062Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021/6/30 下午5:27:45 2021-06-30T09:27:45.964617Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2021/6/30 下午5:27:45 2021-06-30T09:27:45.964676Z 0 [ERROR] Aborting
问题原因:
因为Longhorn为块存储设备,在创建一个pvc时,会自动创建一个lost+found目录, mysql 初始化的时候 data 目录是不能有任何文件的,所以报 initialize specified but the data directory has files in it.
拿了一个redis做实验,挂载目录下确实有一个lost+found目录:
解决方法:
根据MySQL官方提示(链接:https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_ignore-db-dir),在启动命令处加入一条“--ignore-db-dir=lost+found”即可解决。
在rancher上部署的MySQL,可以加在“入口/命令”的位置,如下截图: