王艳玲 发表于 2018-10-1 12:01:17

安装&初始化mysql过程中的问题

  安装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日志会生成的文件。提示信息如下:(另:有些人在进行数据库迁移的时候也同样出现过此情况。)
  #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 Aborting
  140317 17:10:28 /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一下。然后重新按照原来的安装步骤重新初始化,顺顺利利。
  小结:
  此问题应该还是细心就能够排查得出来的。此服务器多人动过所以有一些残留的东西。错误提示很重要。个人觉得排错,就是应该按照理论的正常顺序走一边,表现应该是什么样的。然后再跟实际情况去做对比,是否实际符合理论。如果不符合了,那是理论上进行到哪个环节上出错了。就重点排查这个环节和过程。

页: [1]
查看完整版本: 安装&初始化mysql过程中的问题