在linux中,怎样查看mysql服务运行状态?

哎,2 02 2 年我做Linux系统维护的时候,还挺无聊的。
MySQL 正在系统上运行。
当你询问它的状态时,我当时很困惑,所以我先尝试了systemctl。
我在终端中输入 systemctl mysql status 。
嘿嘿,有回应了。
表明服务正在运行,并且还显示了运行时间。
那一刻,我的心情稍微平静了一些。

然后,我又想,如果systemctl失败了,那我就换个服务,在终端里输入服务的mysql状态。
这次也主动了,我也更有信心了。

然后有一次,我突然有了一个想法,直接使用MySQL客户端,在终端中输入用户名mysql -u -p,输入密码,然后输入SHOW PROCESSLIST;或状态;在命令行中。
这次信息更加丰富,服务器状态、连接状态一目了然。

当时我很困惑。
这三种方法各有其用途。
Systemctl和services是在系统层面,看整体状态。
MySQL 客户端深入内部并拥有所有细节。
后来想想,我可能有点极端,但是每种方法都有自己的理由,就看你自己的需求了。

至于生产环境,我是后来才意识到的。
我们需要使用专业的监控工具来实时监控。
如果出现问题,我们可以尽快发现。
只有这样数据库才能稳定。

如何查看mysql是否运行

老实说,当MySQL服务器不断出现问题时,检查它是否正在运行是一件令人头疼的事情。
后来我发现,技巧就那么几个,用多了就熟悉了。

在Linux中,对我来说最方便的方法是使用systemctl。
例如,在Ubuntu上,我直接使用“sudo systemctl status mysql”来查看状态栏是否启用。
最让我印象深刻的是当我半夜查看时,命令行上弹出“Active:活跃(正在运行)”。
这时我松了一口气,心想事情终于成功了。
如果是“inactive(死亡)”,则基本上意味着服务已停止,因此您需要使用 sudo systemctl 快速启动 MySQL。
当然,如果你安装了Percona或者其他分支,命令可能需要改为percona-server。

Windows 让我头疼。
我总是使用 netstat -ano |使用findstr "3 3 06 ",但说实话,这个命令有时会给我错误的读数。
我记得检查过一次,发现3 3 06 端口被其他东西占用了。
原来Redis是开发安装的。
当时我就愣住了好久。
所以现在我更喜欢在Windows上使用mysqladmin ping,指定用户名和密码,看看是否直接返回“mysqld is alive”。
这比只看端口更可靠,但前提是你需要知道用户名和密码。

您还可以直接与客户联系。
例如,我经常使用 MySQL Workbench 或直接输入 mysql -u root -p 看看是否可以登录。
我有一个朋友总是说这是最准确的方法。
不管怎样,他公司的系统经常出现MySQL的问题,所以他就用这种方法来定位问题。

检查进程 ps aux | grep mysql 也是一个很好的工具。
你可以看看mysqld是否真的在后台运行。
不过,一般情况下我不会优先考虑这种用法,因为有时服务会挂起但进程不会杀死。

我基本上阅读 /var/log/mysql/error.log 来获取日志。
这个文件是我的救星。
有一次MySQL在半夜突然停止响应。
我在该日志中看到消息“错误:无法打开日志文件”,立即知道 my.cnf 配置文件中的日志路径拼写错误。
对于 Windows,请查看 C:\ProgramData\MySQL\MySQL Server X.Y\logs\mysql_error.log。
您可能需要自己记住路线。

实际上,我并不是单独使用这些方法,而是组合使用这些方法。
例如,首先运行 systemctl status 以获取概述。
如果不起作用,请运行“mysqladmin ping”以确认权限和核心服务。
最后如果不行的话,运行mysql -u root -p看看能否建立连接。
看,这就是我在混乱中找到出路的方法。

Linux下查找连接了mysql的进程

哎,MySQL卡住了怎么办?我当时也很困惑。
我来给大家讲讲我的常用技巧吧。

第一步是输入showProcessList;或显示完整的进程列表;这两个命令都直接在 MySQL 中。
查看该表并找到花费特别长时间的查询。
比如我上次查看的时候,ID是1 9 7 3 4 3 ,用户是root,命令是query,时间显示为0,但是状态是Sleep。
告诉我们谁在那里等着。

第2 步,检查主机和端口了吗?例如,主机为1 2 7 .0.0.1 :4 1 3 5 4 您可以在计算机上键入命令。
我通常使用的是netstat -anp |是grep 4 1 3 5 4 输入后看结果。
例如,1 2 7 .0.0.1 :4 1 3 5 4 建立 1 2 7 .0.0.1 :3 3 07 这意味着什么?这意味着有一个连接数据库的过程。
我 ps -ef |我输入 grep 4 1 3 5 4 并再次单击以查找进程号。
我上次看到它是在1 1 6 7 这将帮助您找出哪个程序被卡住了。

第三招是使用lsof -p 1 1 6 7 ,它可以清楚地看到1 1 6 7 进程打开了哪些文件,包括数据库连接等。
这样就可以找到类似的程序,看看是否导致数据库卡住。

说实话,当时我并不明白为什么这么复杂。
经过几次尝试,我发现只要这几个步骤,基本上就能找到卡顿问题的原因。
例如,上次我检查时,是 PHPtest.PHP 脚本减慢了数据库速度。

就是这样,希望对您有所帮助。