移走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 ExecReloadView Code=/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-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