![我怎样才能查看 mysql 是否启动时没有出现错误?](https://linux22.com/image/578234/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E6%9F%A5%E7%9C%8B%20mysql%20%E6%98%AF%E5%90%A6%E5%90%AF%E5%8A%A8%E6%97%B6%E6%B2%A1%E6%9C%89%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%EF%BC%9F.png)
今天我更改了 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
。