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

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

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

[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 ~

 

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

启动mysqlshell

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

中止mysqlcentos

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

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

一、中止mysqlui

systemctl stop mysql

二、移动mysql data目录spa

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

三、修改mysql配置文件my.cnf,通常在/etc/下,在[mysqld]下添加或修改以下参数,默认pid文件在datadir目录下,且和主机名一致,但为防止主机名变化后,mysql.service文件pid名称未更新,故建议将pid名称固定命令行

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

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

     该文件中datadir目录默认为空,修改为以下形式 (若是my.cnf配置有datadir,该步骤能够省略)

datadir=/home/mysql/data

五、修改开机启动文件,/usr/local/systemd/system/mysql.service,PIDFile修改为以下形式

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

六、使配置生效

systemctl disable mysql systemctl enable mysql systemctl daemon-reload

七、启动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,该日志会提供一些启动失败的错误信息

以下解决方式供参考

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

解决方案:(两种方式)

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

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

2、mysql对/usr/local/mysql/data目录不具备权限

解决方案

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

3、进程中已经启动有mysql,经过“ps -ef|grep mysqld”查看,若是存在则,kill掉

4、删除mysql时为删除彻底

解决方案:

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

5、mysql启动时未指定datadir

解决方案:

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

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

解决方案:

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

二、打开/etc/sysconfig/selinux,把SELINUX=enforcing改成SELINUX=disabled

 问题二

mysql反复重启,且经过kill命令没法关闭

每次ps -ef| grep mysqld时发现pid都不一样,且启动日志中显示mysql在重复启动

解决办法:

我所碰到的这种状况是磁盘不足,删除了部分文件,移走重要的大文件,mysql再也不重复启动,但kill不掉,kill后,mysql会自动重启,经过在上面提到的mysql自带命令能够关闭

/usr/local/mysql/support-files/mysql.server stop
相关文章
相关标签/搜索