一次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数据库换挡加速 为什么要进行MySQL数据库换挡? 当我们的网站或应用程序的数据库开始增加数据时,它的性能可能会受到影响。为了提高MySQL数据库的性能,我们需要为其换挡或优化。 常见的基本优化包括添加索引、优化查询语句等,但这些方法往往不能解决性能限制。在这种情况下,教你进行数据库换挡,可以是提高性能的另一种方法。 如何进行MySQL数据库…

    MySQL 2023年5月19日
    00
  • MySQL中表锁和行锁机制浅析(源码篇)

    MySQL中表锁和行锁机制浅析(源码篇)详解 引言 MySQL在多个并发事务操作下,采用锁机制保证数据的一致性和并发量。MySQL锁机制主要分为表锁和行锁。本文将分析MySQL中表锁和行锁机制的源码实现原理及其应用。 表锁 概念 表锁的应用范围为整张表,在操作时会锁定整张表,其他事务将无法读写该表。 应用场景 表锁适用于以下场景: 对整张表进行DDL操作(如…

    MySQL 2023年5月19日
    00
  • MySQL范围查询优化的场景实例详解

    MySQL范围查询优化的场景实例详解 MySQL是一款非常流行的关系型数据库,范围查询在数据库中是一个非常常见的操作。但是,范围查询也可能成为一个性能瓶颈。本文将从以下几个方面详细讲解如何优化MySQL范围查询。 1. 索引优化 索引是优化MySQL查询的关键。在进行范围查询时,必须确定是否存在适当的索引可以使用。 使用索引 对于一个查询,如果可以使用一个索…

    MySQL 2023年5月19日
    00
  • Mysql 存储过程

    MySQL 存储过程是从 MySQL 5.0 开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程。 在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。 特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在…

    MySQL 2023年4月16日
    00
  • 深入浅析Mysql联合索引最左匹配原则

    MySQL联合索引是一种通过组合多个列来优化查询性能的索引类型。其中,联合索引的最左匹配原则是指,索引能够被优化使用的部分内容必须是联合索引从左到右的前缀。在本文中,我们将深入浅析Mysql联合索引的最左匹配原则,以及如何优化查询性能。 什么是联合索引最左匹配原则? 联合索引最左匹配原则是指,在使用联合索引进行查询时,只有从左到右的连续列可以被索引使用。换言…

    MySQL 2023年5月19日
    00
  • 解决安装mysqlclient的时候出现Microsoft Visual C++ 14.0 is required报错

    当在安装 mysqlclient 时出现 Microsoft Visual C++ 14.0 is required 错误时,可能是因为缺少 C++14 标准支持库或者 VC++ 14.0 开发环境相关组件,以下是完整的解决方案: 安装 Visual C++ Build Tools 2015 mysqlclient 依赖于 Microsoft Visual …

    MySQL 2023年5月18日
    00
  • centos7 安装mysql5.7(源码安装)

    Centos7将默认数据库mysql替换成了Mariadb 在接下来的mysql安装过程中,请一定保证自己当前所在目录是正确的!  e g: [root@localhost ~]# 表示当前目录为~ [root@localhost mysql]# 表示当前目录为mysql 一、安装MySQL 1、下载安装包mysql-5.7.17-linux-glibc2.…

    MySQL 2023年4月13日
    00
  • mysql 5.7.16 安装配置方法图文教程

    MySQL 5.7.16 安装配置方法图文教程 MySQL 是一种开源的、关系型的数据库管理系统(DBMS),安装配置 MySQL 是进行 Web 开发时的必要步骤。下面是 MySQL 5.7.16 安装配置的详细攻略。 步骤 1:下载安装包 从 MySQL 官网(https://dev.mysql.com/downloads/mysql/5.7.html)…

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