1. 程式人生 > >移走mysql data目錄,及常見mysql啟動問題

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