在Linux服務器上安裝了mysql之后,很多人并不會關心mysql位置是不是安裝合理,特別是數據文件存儲的位置,隨著業務數據的不斷增加,mysql數據文件可以高達幾十個G,默認的數據文件位置如果分配的磁盤空間不夠,這時候就需要牽庫。本文解決該問題的思路就是將mysql數據文件的目錄修改到磁盤空間分配充足的地方,并將舊數據文件復制過去。
第一步:查詢Linux磁盤分區
磁盤劃分.png
第二步:查看mysql數據文件位置
默認數據文件路徑.png
通過前兩步可以看出mysql默認的數據文件位置并沒有在空間較大的/home目錄下,而是在根目錄下,這種情況下根目錄空間被沾滿的可能性極高,所以遷移數據文件是經常做的操作。
第三步:停掉mysql服務,并在home目錄下創建一個mysql_data目錄用來遷移數據文件,命令如下
#service mysqld stop
#mkdir /home/mysql_data
第四步:將默認目錄下的數據文件拷貝到/home/mysql_data,命令如下
#cp -a /var/lib/mysql/ /home/mysql_data
(參數a務必加上,避免拷貝過去權限改變)
第五步:修改第一個配置文件my.cnf(一般在etc目錄下,如果不在使用命令find / -name my.cnf搜索),將datadir和socket路徑都改為最新的home下對應的路徑
第一個文件修改.png
第六步:修改第二個配置文件mysqld(一把默認在/etc/init.d/目錄下,如果不在使用命令find / -name mysqld搜索),將datadir的路徑修改為對應home目錄下的路徑
第二個文件修改.png
第七步:修改第三個配置文件mysql_safe(一般默認在/usr/bin目錄下,找不到還是上述方法搜索),將datadir的路徑修改為對應home目錄下的路徑
第三個文件修改.png
第八步:創建一個mysql.sock的鏈接(因為mysql啟動時候會用到這個文件,目的是把原來的文件指向最新的位置,讓mysql取最新位置上的文件)
#ln -s /home/mysql_data/mysql/mysql.sock /var/lib/mysql/mysql.sock
鏈接效果.png
第九步:啟動mysql,創建一個新庫,看是否被創建在最新位置上
#service mysqld start
最終效果1.png
最終效果2.png
注意:有些情況下修改配置之后不能立即生效,啟動mysql報和mysql_safe相關的錯,這時候需要先取消mysql安全驗證,啟動mysql然后進入到mysql命令行中,刷新配置,具體命令如下:
#/usr/bin/mysqld_safe --skip-grant-tables &
#mysql -u root -p
mysql>flush privileges;