【问题标题】:How do I find the location of MySQL daemon error log?如何找到 MySQL 守护程序错误日志的位置?
【发布时间】:2025-04-01 00:00:02
【问题描述】:

许多 MySQL 问题需要检查 MySQL 守护程序错误日志,但它在哪里并不总是很明显。找到它的一种方法是发出SELECT @@log_error 查询。但是,如果您在 Linux MySQL 服务器主机上有一个 root shell,不想连接到服务器,并且需要一种快速而肮脏的方式在 shell 脚本中获取它,该怎么办?

【问题讨论】:

    标签: mysql linux


    【解决方案1】:

    我们可以使用 mysqld 使用文件描述符 2 (stderr) 作为错误日志和 /proc 文件系统的事实,如下所示:

    sudo readlink /proc/$(pidof mysqld)/fd/2
    

    当然,这需要当前正在运行的服务器。文件描述符保证为 2,因为 MySQL 通过将 stderr 流重定向到启动时指定的日志写入错误日志,然后写入 stderr - 至少在 5.5 及更早版本中,可能在更高版本中也是如此。

    【讨论】:

    • 适用于 windows 的任何东西?
    • 我只在绝对必要时才使用 Windows,这种情况很少见,但我认为同样的想法会奏效。您将需要找到与mysqld.exe 的文件描述符2 对应的文件。也许从 openfiles /query 开始?如果我必须维护一个 Windows 机器,我要做的第一件事就是安装 Cygwin,这样我就会拥有我知道如何使用的工具。使用 Cygwin,您可能可以做到 lsof -p $(pidof mysqld) | grep 2w | head -1 | awk '{print $9}'
    • 我想这将是指在所有情况下回答或指向一个堆栈答案(这是我的动机)。我将对其进行研究(实际上,最好通过守护程序将某些东西作为脚本/命令行泵送)与安装。但是谢谢你,cygwin 的想法等等
    最近更新 更多