一次MySQL启动导致的事故实战记录

一次MySQL启动导致的事故实战记录

背景

在日常运维过程中,经常会遇到MySQL启动失败的情况。这时候应该怎么办呢?本次实战记录就是一次MySQL启动失败的案例。

问题描述

本次MySQL启动失败的错误信息如下:

[ERROR] Can't start server: Bind on TCP/IP port: Address already in use
[ERROR] Do you already have another mysqld server running on port: 3306 ?
[ERROR] Aborting

解决步骤

1. 查看MySQL进程状态

在终端中输入命令 ps -ef | grep mysql,可以查看到当前机器上运行的MySQL进程状态。如果有MySQL进程运行,需要将其杀死。命令 kill -9 进程号 用于杀死指定进程。

$ ps -ef | grep mysql
mysql    1931     1  0 Mar04 ?        00:01:25 /usr/sbin/mysqld

2. 启动MySQL服务

在终端中输入命令 service mysql start,启动MySQL服务。如果启动失败,需要查看MySQL的错误日志。

$ service mysql start

3. 查看MySQL错误日志

MySQL的错误日志一般在 /var/log/mysql/error.log 路径下。通过查看错误日志,可以判断MySQL启动失败的原因。

$ tail -f /var/log/mysql/error.log

4. 修改MySQL配置文件

通过查看错误日志发现,MySQL启动失败的原因是占用了3306端口。可以修改MySQL的配置文件 my.cnf,将监听的端口号改为其他未被占用的端口号,比如3307。

$ vim /etc/mysql/my.cnf

port = 3306 修改为 port = 3307

5. 重启MySQL服务

修改完 my.cnf 文件后,需要重启MySQL服务才能生效。可以通过命令 service mysql restart 来重启MySQL服务。

$ service mysqld restart

示例1:查找占用端口的进程

如果不清楚哪个程序占用了MySQL的3306端口,可以通过命令 lsof -i:3306 来查找。

$ lsof -i:3306
COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
mysqld   267643  mysql   10u  IPv4 1941364      0t0  TCP *:mysql (LISTEN)

示例2:查看MySQL进程状态

有时候我们需要详细地了解MySQL进程的状态,可以通过命令 ps -ef | grep mysql 来查看。加上关键词 httpd 可以根据关键词过滤出相关的进程信息。

$ ps -ef | grep mysql
mysql   267643      1 59 Jul23 ?       3-16:23:05 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/lib/mysql/mysql-error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
root    275630 275051  0 16:56 pts/0    00:00:00 grep mysql

总结

如果遇到MySQL启动失败的情况,需要先查看MySQL进程状态,然后杀死占用端口的程序,并查看MySQL错误日志来判断失败原因。如果是占用了3306端口,需要修改MySQL配置文件来换用其他端口,然后重启MySQL服务。在实践中,我们还可以使用各种工具,如 lsofnetstatpstop 等来帮助我们排查问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一次MySQL启动导致的事故实战记录 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Mysql怎么指定某个字符串字段前面几位排序查询

    今天小编给大家分享一下Mysql怎么指定某个字符串字段前面几位排序查询的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 指定某个字符串字段前面几位排序查询 数据样例 想要结果:  每个test_value 里面都包含 ORDER 关键字, 想根据…

    MySQL 2023年4月11日
    00
  • 分析Mysql大量数据导入遇到的问题以及解决方案

    分析Mysql大量数据导入遇到的问题以及解决方案 数据导入是数据库使用过程中必不可少的一环,在处理大量数据时,Mysql的数据导入操作可能会遇到以下问题: 问题一:导入速度太慢 当数据量大时,通过直接执行SQL语句进行数据导入的速度会相对较慢,尤其是在数据量太大的情况下,可能会导致SQL执行超时或服务器资源不足等问题。因此我们需要手段去提高导入的速度。 解决…

    MySQL 2023年5月18日
    00
  • BIND+MySQL

    使用bind-mysql模块增加对mysql数据库的支持 简介:对于bind,如果想修改或增加dns记录,是直接修改文本的,这样的话一方面不方便管理,另一方面容易出错,如果我们增加对mysql数据库的支持,再配合php、perl、python等程序直接操作mysql,这对于dns的管理将会非常地方便和不易出错。现在介绍使用mysql bind驱动模块实现这一…

    MySQL 2023年4月13日
    00
  • MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)

    当我们在MySQL客户端或者程序中远程连接MySQL服务器时,常常会出现“Lost connection to MySQL server”或者“Server has gone away”的问题。这是因为在网络传输的过程中可能会发生一些错误或者超时,导致连接中断。下面我将为大家详细讲解MySQL远程连接丢失问题的解决方法。 原因分析 MySQL远程连接丢失可能…

    MySQL 2023年5月18日
    00
  • Mysql optimize table 时报错:Temporary file write fail的解决

    当我们在对Mysql的表进行优化时,有时候会遇到”Temporary file write fail”的报错信息,这是由于mysql在进行优化操作时需要写入一些临时文件,而操作时出现了无法写入临时文件的情况引起的。 下面是解决这个问题的完整攻略: 1. 确认磁盘空间是否足够 首先需要确认一下磁盘空间是否足够,可以通过运行df命令查看磁盘使用情况,如下所示: …

    MySQL 2023年5月18日
    00
  • 详解mysql8.0创建用户授予权限报错解决方法

    下面是详解MySQL 8.0创建用户授予权限报错解决方法的完整攻略: 问题背景 在MySQL 8.0版本中,使用CREATE USER命令创建用户并授权时,有可能会出现类似于下面的报错: ERROR 1410 (42000): You are not allowed to create a user with GRANT 这是由于MySQL 8.0版本的安全…

    MySQL 2023年5月18日
    00
  • MySQL主从复制问题总结及排查过程

    下面我将详细讲解“MySQL主从复制问题总结及排查过程”的完整攻略,并举两个示例进行说明。 问题描述 在使用MySQL主从复制的过程中,经常会出现各种问题。例如:主从数据不一致、主库宕机、从库延迟等。正确排查这些问题,有助于保证数据库高可用性,提高应用的健壮性和可靠性。 排查过程 以下是排查MySQL主从复制问题的最佳实践: 1. 检查复制状态 首先,我们需…

    MySQL 2023年5月18日
    00
  • Mysql Online DDL的使用详解

    Mysql Online DDL的使用详解 Mysql Online DDL是mysql的一个非常重要的特性,允许用户在不停止数据库服务的情况下修改数据库表结构。在这篇文章中,我们将会详细讲解mysql online ddl的使用方法,包括如何创建、修改和删除表的字段等。 创建新表 使用Mysql Online DDL,您可以创建新表,而无需停止数据库服务。…

    MySQL 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部