暂无图片
暂无图片
3
暂无图片
暂无图片
1
暂无图片

案例--mysql启动脚本报语法错误

原创 黄超 2022-04-12
1180

现象

一套环境,MySQL有一年多没有重启,客户有事需要重启,运维人员操作:
#mysql.server restart
启动失败,报expr: syntax error语法错误
手动用mysqld_safe启动
#mysqld_safe --user=mysql &
也报expr: syntax error语法错误
最后手动用mysqld --user=mysql & 启动成功

分析

对比了生产环境脚本文件mysql.server、mysqld_safe和测试环境上这两个文件代码一致,排除脚本被修改。怀疑是环境某个时刻有变动,而mysql一直没有重启,在这次重启暴露问题出来。

准备调试脚本

在mysql.server 代码里面266行 bindir/mysqldsafedatadir="bindir/mysqld_safe --datadir="datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null & ,前面添加上sh -X,
即 sh -X bindir/mysqldsafedatadir="bindir/mysqld_safe --datadir="datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

开始调试

sh -X mysql.servver start 报expr: syntax error语法错误

摘录关键段

  • args=’ --log-error=/opt/mysql/data/log/error/mysqld.log --pid-file=/opt/mysql/data/workdbs/PRMED1.pid --socket=/opt/mysql/app/mysql-files/mysql.sock --port=3310’
  • test 0 -eq 0
  • NOHUP_NICENESS=nohup
  • nohup nice
    ++ nice
  • normal_niceness=0
    ++ nohup nice
  • nohup_niceness=
  • numeric_nice_values=1
  • for val in ‘normalnicenessnormal_niceness' 'nohup_niceness’
  • case “$val” in
  • test 1 -eq 1
    ++ expr - 0
    expr: syntax error
  • nice_value_diff=

发现,nice_value_diff=,值为空,原代码中语句是nice_value_diff=expr $nohup_niceness - $normal_niceness,往上查找,nohup_niceness值是null,normal_niceness值是0

对nohup_niceness的值有怀疑,输出环境nohup_niceness值:
#nohup_niceness=nohup nice 2>/dev/null
#echo $nohup_niceness

结果输出是空,正常环境输出是0,所以文件nohup是有问题的。

解决

#which nohup,找到位置是/usr/bin/nohup
列出文件详细信息:
#stat /usr/bin/nohup
Size:1
对比其他环境,这文件Size是31552
打开文件vi /usr/bin/nohup,发现是空文件。猜测被人误操作置空文件。
于是,从其他同版本环境服务器复制nohup文件过来替换。
重新启动mysql
mysql.server start
成功启动!

最后修改时间:2022-04-12 22:09:53
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选墨力原创作者计划合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论