移走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
~                                                                                                                                                                                                            

 

若未使用開機啟動,也可使用下面命令分別對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文件在datadir目錄下,且和主機名一致,但為防止主機名變化后,mysql.service文件pid名稱未更新,故建議將pid名稱固定

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

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

     該文件中datadir目錄默認為空,修改成如下形式 (如果my.cnf配置有datadir,該步驟可以省略)

datadir=/home/mysql/data

5、修改開機啟動文件,/usr/local/systemd/system/mysql.service,PIDFile修改成如下形式

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

6、使配置生效

systemctl disable mysql
systemctl enable mysql
systemctl daemon-reload

7、啟動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反復重啟,且通過kill命令無法關閉

每次ps -ef| grep mysqld時發現pid都不同,且啟動日志中顯示mysql在重復啟動

解決辦法:

我所碰到的這種情況是磁盤不足,刪除了部分文件,移走重要的大文件,mysql不再重復啟動,但kill不掉,kill后,mysql會自動重啟,通過在上面提到的mysql自帶命令可以關閉

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM