移走mysql data目录,及常见mysql启动问题

Posted 大坑水滴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移走mysql data目录,及常见mysql启动问题相关的知识,希望对你有一定的参考价值。

一般mysql安装在/usr/local/下,现以将/usr/local/mysql/data目录移动到/home/mysql下为例

首先保证/home/mysql目录是存在的,本例中使用了mysql开机启动,如下为data目录未移动之前的开机启动service文件

技术分享图片
[Unit]
Description=Mysql
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/mysql/data/mysql.pid
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false

[Install]
WantedBy=multi-user.target
View Code

若未使用开机启动,也可使用下面命令分别对mysql进行启动和停止操作

启动mysql

/usr/local/mysql/support-files/mysql.server start

停止mysql

/usr/local/mysql/support-files/mysql.server stop

下面开始进入mysql data目录移动

1、停止mysql

systemctl stop mysql

2、移动mysql data目录

mv /usr/local/mysql/data /home/mysql/

3、修改mysql配置文件my.cnf,一般在/etc/下,在[mysqld]下添加或修改如下参数

pid-file=/home/mysql/data/mysql.pid
datadir=/home/mysql/data

4、修改mysql启动文件,/usr/local/mysql/support-files/mysql.server

     该文件中datadir目录默认为空,修改成如下形式

datadir=/home/mysql/data

5、修改开机启动文件,/usr/local/systemd/system/mysql.service,PIDFile修改成如下形式

PIDFile=/home/mysql/data/mysql.pid

6、启动mysql

systemctl start mysql

 

mysql启动常见问题

“The server quit without updating PID file”是比较常见的mysql启动问题
Nov 21 10:34:51 localhost.localdomain systemd[1]: Starting Mysql...
Nov 21 10:34:53 localhost.localdomain mysql.server[45912]: Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysql.pid).
Nov 21 10:34:53 localhost.localdomain systemd[1]: mysql.service: control process exited, code=exited status=1
Nov 21 10:34:53 localhost.localdomain systemd[1]: Failed to start Mysql.
Nov 21 10:34:53 localhost.localdomain systemd[1]: Unit mysql.service entered failed state.

启动错误,在mysql的data目录下会存在一个后缀为err的日志,上述mysql data目录移动后,日志路径变为/home/mysql/data/localhost.localdomain.err,该日志会提供一些启动失败的错误信息

如下解决方式供参考

一、/usr/local/mysql/data目录不存在

解决方案:(两种方式)

1、修改/etc/my.cnf文件,添加pid-file,指向mysql具有权限的地址

2、新建 /usr/local/mysql/data 目录,要保证mysql对该目录 具有权限             

二、mysql对/usr/local/mysql/data目录不具有权限

解决方案

chown -R mysql:mysql /usr/local/mysql/data

三、进程中已经启动有mysql,通过“ps -ef|grep mysqld”查看,如果存在则,kill掉

四、删除mysql时为删除完全

解决方案:

在mysql安装目录下的data目录下,查看是否存在mysql-binlog.index,若存在,则删除

五、mysql启动时未指定datadir

解决方案:

在mysql配置文件/etc/my.cnf,及启动文件mysql.server中添加datadir,可参考上述“mysql data目录移动”进行设置

六、centos系统,默认会开启selinux  (暂时还未碰到过)

解决方案:

1、临时改为告警模式,shell命令行输入setenforce 0

2、打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled

 

以上是关于移走mysql data目录,及常见mysql启动问题的主要内容,如果未能解决你的问题,请参考以下文章

mysql 无法启动的几种常见问题

Mysql DBA 高级运维学习笔记-Mysql常见多实例配置方案及多实例安装

MySQL学习入门安装和启动及常见问题解决方法

mysql5.5 免编译安装及脚本启动报错深入

MySQL数据库的初始化和常见的简单命令

Linux下安装mysql 及常见问题解决