CentOS 下 MySQL DateBasic 抢救

CentOS 下 MySQL DateBasic 抢救

强 Kill 数据库进程。

分析问题:确定报错内容

报错信息:The server quit without updating PID file /var/lib/mysql/localhost.localdomain.pid

img

第一方案:解决报错内容

综合晚上所有报错解决方案:

1.文件没有写的权限

  • chmod a+w /usr/local/mysql/data/NAME.pid

2.进程已经存在mysql进程

  • ps -ef |grep mysql

3.二次在机器上安装mysql,残余数据影响了服务的启动。

  • yum remove mysql-server

4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件

  • socket = /tmp/mysql.sock
  • datadir = /usr/local/mysql/data

5.skip-federated 字段问题

  • [ERROR] /usr/local/mysql/bin/mysqld: unknown option '--skip-federated'

6.错误日志目录不存在

  • log-error=/usr/local/mysql/log/error.log
  • log=/usr/local/mysql/log/mysql.log

7.CentOS 系统,默认会开启SeLinux

  • setenforce 0

8.目录 /etc/mysql/ 与文件 /etc/my.cnf 重复

  • mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak

9.废弃无用文件造成服务无法启动

  • rm -rf /usr/local/mysql/data/ib_logfile0
  • rm -rf /usr/local/mysql/data/ib_logfile1
  • rm -rf /usr/local/mysql/data/mysql-bin.index

第二方案:重装重新配置

``

# cat /etc/my.cnf
user = mysql

tmpdir = /tmp

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock

datadir = /usr/local/mysql/data

pid-file = /usr/local/mysql/data/mysql.pid

log-error = /usr/local/mysql/data/error.log

``

# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid --tmpdir=/tmp

# service mysqld start && mysqladmin -u {username} passowrd {password}
Starting MySQL SUCCESS!

一些小备注

1、socket 非常重要。当配置文件与命令出现冲突,应该听从命令显示。
2、log 非常重要,每个 MySQL 都应该加之。

log=/usr/local/mysql/log/mysql.log

log-error=/usr/local/mysql/log/error.log

3、数据库恢复使用 mysql -u{username} -p{password} {databases} <{filename}.sql

4、淡定,一般数据库只要备份在没有太大问题。可以再看看这篇文章

如果你真的选择了重新安装配置,那么应该更换目录避免冲突(包括mysql-server与lnmp)。可以尝试制作While+For循环服务启动脚本(wall命令是个好东西)

原文地址:https://www.cnblogs.com/itxdm/p/TheserverquitwithoutupdatingPIDfile.html