伺服器上的mysql預設資料目錄為/var/lib/mysql/,同時伺服器的/空間不是很大,而近期又有大量的日誌需要匯入進行分析,時常搞得/的空間捉襟見肘,晚上一狠心就想把mysql的資料目錄轉移到另外一塊硬碟/data中。
於是關閉mysql服務:
service mysqld stop
轉移mysql資料目錄
mv /var/lib/mysql/ /data/
編輯my.cnf
vi /etc/my.cnf
修改其中的datadir和socket到新的路徑
[mysqld]
datadir=/data/fuhj/mysql
socket=/data/fuhj/mysql/mysql.sock
本以為修改完啟動mysql服務之後就沒問題了。
service mysqld start
但是儘管啟動服務沒有問題,但是通過mysql客戶端連線的時候卻報錯:
[root@hostXXX data]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
在網上搜了半天也沒個所以然,一個個都是相互抄襲,各種拷貝,沒有一個靠譜的。
自己分析了一下,提示說無法通過socket檔案/var/lib/mysql/mysql.sock連線到mysql伺服器,也就是說對於mysql程式來說,儘管我把socket檔案從/var/lib/mysql/mysql.sock轉移到了/data/mysql/mysql.sock我在my.cnf裡指定了mysqld知道了,但是對於mysql還是會從預設的安裝目錄/var/lib/mysql/裡找這個mysql.sock檔案,找不著,就不知道從哪裡啟動了。
為了驗證我的想法,我首先從轉移後的路徑做了個軟連線指向到mysql的預設目錄裡,如果mysql程式能連上說明想法是正確的。
ln –s /data/mysql/mysql.sock /var/lib/mysql/
做完軟連線,重啟mysql服務,再次通過mysql程式連線,沒有問題,可以連上了。
[root@host160 lib]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.71 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
那說明就是這裡的問題了。
其實不做軟連結也是可以的,只需要在/etc/my.cnf裡新增[mysql]欄位指定socket的位置到我們轉移後的位置即可
[mysql]
socket=/data/mysql/mysql.sock
作者: 付海軍
出處:http://fuhj02.cnblogs.com
版權:本文版權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段宣告;必須在文章中給出原文連線;否則必究法律責任
個人網站: http://www.fuhaijun.com/