今天我更改了 mysql 配置文件并使用以下命令重新启动了 mysql:
service mysql restart
并看到了以下内容:
停止 mysql 数据库服务器:mysqld。
启动 mysql 数据库服务器:mysqld。检查损坏、未完全关闭和需要升级的表。
之后mysql服务开始工作,但后来我在我的网站上看到错误,并意识到InnoDB引擎没有启动。
在/var/log/daemon.log中我看到了以下几行:
InnoDB:错误:日志文件 ./ib_logfile0 的大小与 .cnf 文件中指定的大小不同,为 0 5242880 字节
InnoDB:与 .cnf 文件中指定的大小不同,为 0 67108864 字节!
[错误] 插件“InnoDB”初始化函数返回错误。
[错误] 插件“InnoDB”注册为存储引擎失败。
我删除了日志文件并重新启动了mysql,但这不是问题。
问题是:
如果不查看 daemon.log 文件,我怎么知道启动 mysql 时有错误?也许可以设置将 mysql 启动错误打印到 stdout?
答案1
daemon.log 由 syslog 填充。因此,查看正常启动过程中发生的情况的唯一方法是输入另一个 shell
tail -f /varlog/daemon.log
如果您希望收到更大问题的警告,您可以修改 init 脚本。我快速查看了 mysql init 脚本:/etc/init.d/mysql
并发现logger
用于将错误记录到/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”,错误也将被记录到 stderr。
答案2
将错误消息永久地打印到 stdout 而不是将其记录到文件中并不是一个好主意,原因如下:
- 一段时间后,您将丢失错误消息,特别是当有很多行输出快速出现时。
- 系统重启后,您将无法看到错误消息。
在调试守护进程启动过程中的某些问题时,这样做可能会很有用。只需手动执行进程即可完成此操作,而无需分叉。在我的系统上,当我使用 调用 mysql 进程时,它不会与终端分离sudo mysqld
。