安装mysql过程中的问题
问题关键字:
/usr/local/webserver/mysql/libexec/mysqld: File ‘/data/mysqldata/binlog/binlog.index‘ not found (Errcode: 13)
问题背景:
以下是我验证过的多次的mysql安装过程,大家可直接进行使用。mysql的安装路径在:/usr/local/webserver/mysql下。但是我再一次使用以下脚本安装的过程的中,执行到初始化数据库表的时候,就出现了问题。
#----------Add user-------# /usr/sbin/groupaddmysql /usr/sbin/useradd -g mysqlmysql #--------Confiugre & make install -------# cd /root/tools tar zxvf mysql-5.5.3-m3.tar.gz cd mysql-5.5.3-m3/ ./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg make && make install chmod +w /usr/local/webserver/mysql chown -R mysql:mysql /usr/local/webserver/mysql cd .. #--------Make dir----------# mkdir -p /data/mysql/data/ mkdir -p /data/mysql/binlog/ mkdir -p /data/mysql/relaylog/ chown -R mysql:mysql /data/mysql/ #--------Initialize MySQL-----# /usr/local/webserver/mysql/bin/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data/mysql/data --user=mysql #-------Start MySQL----------# [ -f /root/tools/my.cnf ] && cp /usr/local/webserver/mysql/my.cnf echo "/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/usr/local/webserver/mysql/my.cnf&" >> /etc/rc.local /bin/sh /usr/local/webserver/mysql/bin/mysqld_safe --defaults-file=/usr/local/webserver/mysql/my.cnf & |
具体问题现象:
出现的问题如下:使用/usr/local/webserver/mysql/bin/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data/mysql/data --user=mysql初始化的时候。系统的提示mysqld不能够打开此/data/mysqldata/binlog/binlog.index文件。此文件为打开binlog日志会生成的文件。提示信息如下:(另:有些人在进行数据库迁移的时候也同样出现过此情况。)
[root@web_mobile mysql]# bin/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data/mysql/data --user=mysql Installing MySQL system tables... /usr/local/webserver/mysql/libexec/mysqld: File ‘/data/mysqldata/binlog/binlog.index‘ not found (Errcode: 13) 140317 17:10:28 [ERROR] Aborting 140317 17:10:28 [Note] /usr/local/webserver/mysql/libexec/mysqld: Shutdown complete Installation of system tables failed! Examine the logs in /data/mysql/data for more information. You can try to start the mysqld daemon with: shell> /usr/local/webserver/mysql/libexec/mysqld --skip-grant & and use the command line tool /usr/local/webserver/mysql/bin/mysql to connect to the mysql database and look at the grant tables: |
我的思路,问题解决:
大家可以看到使用的安装mysql的步骤,数据文件是存放在/data/mysql中的,就算真的是mysqld打不开binlog日志也应该是提示:
/usr/local/webserver/mysql/libexec/mysqld: File ‘/data/mysqldata/binlog/binlog.index‘ not found (Errcode: 13)(/data/mysql/binlog/binlog.index才是我想要保存的地方呀!)怎么突然冒出来这么一个东西。
思路一:先排查一下/data/mysql路径下的权限和属主。发现是mysql并没有错。而且确实/data底下是没有mysqldata目录的。{一般情况下这种错误提示,应该是目标目录,没有相应的权限而已。}
思路二:既然提示没有此文件,我手动创建一个/data/mysqldata/binlog然后包权限设置好。再重新初始化,居然可以了。嗯,然后我就瞬间有点明白了。是不是加载到哪个my.cnf配置文件了。然后就locate一下,发现在/etc/下有一个被修改的my.cnf文件。查看下里面的内容,确实是配置了#log-bin =/data/mysqldata/binlog/binlog#。然后果断的把这配置文件mv一下。然后重新按照原来的安装步骤重新初始化,顺顺利利。
小结:
此问题应该还是细心就能够排查得出来的。此服务器多人动过所以有一些残留的东西。错误提示很重要。个人觉得排错,就是应该按照理论的正常顺序走一边,表现应该是什么样的。然后再跟实际情况去做对比,是否实际符合理论。如果不符合了,那是理论上进行到哪个环节上出错了。就重点排查这个环节和过程。
本文出自 “从头开始” 博客,请务必保留此出处http://atong.blog.51cto.com/2393905/1378160