一次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是一个开放源代码的关系型数据库管理系统(RDBMS),MySQL表是其管理的数据之间的最小单元,它包含了多个列和行,数据存储在行中的各个列中,在操作MySQL数据库时必须要使用表名。 如何创建MYSQL表 创建MySQL表需要使用CREATE TABLE语句。 语法如下: CREATE TABLE …

    MySQL 2023年5月18日
    00
  • 关于mysql中innodb的count优化问题分享

    关于 MySQL 中 InnoDB 的 Count 优化问题分享 问题概述 当我们需要对一个表进行数据行数统计时,通常使用的是 MySQL 中的 COUNT 函数。但当表数据量过大时,统计行数将会变得非常缓慢。这时,我们需要对查询进行优化,以提高查询效率。 优化方案 1. 利用表元数据优化 在 MySQL 中,每个表都有一个称为统计信息的元数据结构。该元数据…

    MySQL 2023年5月19日
    00
  • MySQL客户端和服务器架构

    客户端-服务器(Client/Server)结构简称 C/S 结构,是一种网络架构,通常在该网络架构下的软件分为客户端和服务器。 MySQL是一个开源的关系型数据库管理系统,被广泛应用于Web应用开发和数据存储。MySQL的客户端和服务器架构是基于客户端/服务器模型构建的。在这种架构中,客户端通过网络向服务器发送请求,服务器处理请求并将结果返回给客户端。 M…

    MySQL 2023年3月8日
    00
  • 开启MySQL远程连接的方法

    以下是开启 MySQL 远程连接的完整攻略: 1. 修改 MySQL 配置文件 1.1 进入 MySQL 配置文件目录 MySQL 配置文件通常在 Linux 系统的 /etc/my.cnf 或 /etc/mysql/my.cnf 目录下,Windows 系统的路径为 C:\Program Files\MySQL\MySQL Server 8.0\my.in…

    MySQL 2023年5月18日
    00
  • 详解MySQL的锁(LOCK)机制

    MySQL锁机制是数据库中重要的一部分,它可以保证并发访问数据时数据的正确性及一致性。MySQL提供了多种锁机制,包括表级锁和行级锁。 表级锁 表级锁是指对整张表进行加锁,保证在数据操作的过程中,表不会被其他用户或事务修改或删除。表级锁包含两种类型:共享锁和排他锁。 共享锁(Shared Lock):多个事务可以共享同一份数据,但只能读取数据,不能修改数据,…

    MySQL 2023年3月10日
    00
  • MySQL死锁原因分析

    行级锁有三种模式: innodb 行级锁 record-level lock大致有三种:record lock, gap lock and Next-KeyLocks。 record lock  锁住某一行记录   gap lock     锁住某一段范围中的记录  next key lock 是前两者效果的叠加。   问题: 行级锁表现形式:next-ke…

    MySQL 2023年4月13日
    00
  • MySQL查看字符集和校对规则

    查看数据库的字符集和校对规则 可以通过以下命令查看数据库的字符集和校对规则: SHOW CREATE DATABASE dbname; 其中,dbname 表示要查询的数据库名。 执行该命令后,会返回一个包含字符集和校对规则信息的 SQL 语句,如下所示: CREATE DATABASE `dbname` /*!40100 DEFAULT CHARACTER…

    MySQL 2023年3月10日
    00
  • MySQL针对Discuz论坛程序的基本优化教程

    MySQL针对Discuz论坛程序的基本优化教程 简介 本文将介绍如何通过对MySQL数据库进行调优来优化Discuz论坛程序性能的方法。 基本优化 调整MySQL缓存配置 在MySQL中,缓存是提高性能的一个关键。通过调整MySQL缓存配置参数,可以提高Discuz论坛程序的响应速度。 示例1: 可以通过调整以下参数来优化MySQL缓存: innodb_b…

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