移走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
相關文章
相關標籤/搜索