实在是意难平,一个拼写的小错误,结合另一个命名不规范,把一个问题让我看了2个多小时,还拉着我导师一起看了近一个小时。
一定要记下来!!!!
参数、配置文件的拼写一定要正确
起因:
准备在一台主机上装3个mysql实现proxysql的负载均衡
之前已经安装了2个mysql,分别是mysql3306和mysql3307,也一直能双开使用,于是准备用之前的方法装mysql3308
拷贝了mysql 5.7.28的tar包,解压,改写配置文件,初始化,改写init.d的快速启动,修改start.sh启动文件,然后报了如题的错误
找问题:
按照网上的办法,先看了MySQL的配置文件,到最后start.sh的,没问题,再跑一遍,还是报错
结合自己安装笔记,检查了权限问题,配置文件命名问题,mysqld的使用问题,多开mysql的干扰问题都不是,最烦的是日志文件在初始化的时候没有生成,data文件下也缺少很多文件,sock文件也没生成,但是找到是在mysql初始化时候出问题了。
分析问题
因为看不了错误日志,只能测试看是否是配置文件的问题,修改了配置文件,换了basedir文件,修改了用户权限,还是不行,重点是也不报错,也没MySQL错误日志
最后想起来可以在系统日志里头看,发现一直说mysql用户没有权限写日志文件
但是mysql用户的权限是给足的,新建了用户去跑,还是不行。仔细看报错发现是,没权限写mysql3306的log文件,所以错误是??
结果
还是没想通,导师说肯定是哪调用了3306的配置文件所以导致报错没权限,往上翻果然有说未知的“my3308.cnf" 配置文件,就这样还是没一下子找出来问题。新建了3308文件,修改参数还是不行,仔细看是 “defaults-file=/etc/my3308.cnf" 的file上多了个s
然后它找不到my3308.cnf就去找默认配置的my.cnf,刚好我这个my.cnf是mysql3306的配置文件,所以初始化失败,报错也是报在mysql3306的错误日志里面。
初始化参数的拼写错误+配置文件命名不规范导致整个问题耗时这么久
/data/mysql3308/bin/mysqld --defaults-file=/etc/my3308.cnf --initialize-insecure --basedir=/data/mysql3308 --datadir=/data/mysql3308/data --user=mysql
重新初始化即可