我怎样才能查看 mysql 是否启动时没有出现错误?

我怎样才能查看 mysql 是否启动时没有出现错误?

今天我更改了 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 而不是将其记录到文件中并不是一个好主意,原因如下:

  1. 一段时间后,您将丢失错误消息,特别是当有很多行输出快速出现时。
  2. 系统重启后,您将无法看到错误消息。

在调试守护进程启动过程中的某些问题时,这样做可能会很有用。只需手动执行进程即可完成此操作,而无需分叉。在我的系统上,当我使用 调用 mysql 进程时,它不会与终端分离sudo mysqld

相关内容