*) # usage basename=`basename "$0"` echo "Usage: $basename {start|stop|restart|reload|force-reload|status} [ MySQL server options ]" exit 1 ;;
至此,mysql的服务脚本分析完毕~
总结
在通过服务脚本启动mysql的过程中,报“The server quit without updating PID file”错误,有两个条件
首先,pid文件不存在
其次,通过kill -0 $pid检查到进程并不存在
这个时候,只能通过mysql数据库的错误日志来定位。
服务脚本如果不做任何调整的话,默认的basedir是/usr/local/mysql,datadir是/usr/local/mysql/data
如果自己的mysql服务不是默认路径,
则需要在该脚本中显式设置
经测试,需设置如下几处:
1. 设置basedir和添加conf变量
其中,conf指的是mysqld的配置文件,建议配置文件中显式指定basedir和datadir的值。
在这里,datadir可不设置,因为datadir可通过配置文件来获取。
但是basedir必须要指定,因为要首先根据basedir来判断my_print_deefauts命令
basedir=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64 datadir= conf=/usr/local/mysql-advanced-5.6.23-linux-glibc2.5-x86_64/my_3308.cnf
2. 第256行,添加extra_args=" -c $conf"
extra_args=" -e $basedir/my.cnf.bak" if test -r "$basedir/my.cnf" then extra_args="-e $basedir/my.cnf" else if test -r "$datadir/my.cnf" then extra_args="-e $datadir/my.cnf" fi fi extra_args=" -c $conf"
3. 修改285行mysqld_safe的启动参数
将
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
修改为,
$bindir/mysqld_safe --defaults-file="$conf" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 &
主要是添加了--defaults-file选项