今天我已经改变了MySQL的configuration文件,并重新启动MySQL:
service mysql restart
并看到以下内容:
停止mysql数据库服务器:mysqld。
启动mysql数据库服务器:mysqld。 检查损坏,不干净closures和升级需要表..
之后,MySQL服务开始工作,但后来我看到我的网站上的错误,并意识到InnoDB引擎未启动。
在/var/log/daemon.log中我看到了以下几行:
InnoDB:错误:日志文件./ib_logfile0的大小不同,为0 5242880字节
InnoDB:超过.cnf文件中指定的0 67108864字节!
[错误]插件'InnoDB'初始化函数返回错误。
[错误]插件'InnoDB'注册为存储引擎失败。
我删除了日志文件,并重新启动MySQL,但这不是问题。
问题是:
我怎么知道有没有启动mysql的错误,而无需查看daemon.log文件? 也许有可能设置打印mysql启动错误标准输出?
daemon.log被syslog填充。 所以唯一的办法就是在正常的启动过程中看到里面发生了什么,就是input另一个shell
tail -f /varlog/daemon.log
如果你想警告更大的问题,你可以修改init脚本。 我快速浏览了mysql init脚本: /etc/init.d/mysql并发现使用logger将错误logging到/var/log/daemon.err :
# priority can be overriden and "-s" adds output to stderr ERR_LOGGER="logger -p daemon.err -t /etc/init.d/mysql -i"
在第二行添加“-s”,错误也会被logging到stderr。
将错误消息永久打印到标准输出而不是将它们logging到文件中不是一个好主意,原因如下:
在守护进程启动期间debugging某些问题时,这样做可能很有用。 这可以通过手动执行而不分叉来完成。 在我的系统上,当我使用sudo mysqld调用它时,mysql进程不会从terminal上分离。