核心操作原則
- 先停服務:所有服務變更前必須停止 (
service mysql stop 或 /etc/init.d/mysql stop)。
- 備份資料:任何操作前完整備份 (
mysqldump 或目錄複製)。
符號連結遷移法 (範例:移至 /lu/my/mysql-standard-4.0.20-pc-linux-i686)
# 1. 停止服務
service mysql stop
# 2. 複製資料目錄 (保留原目錄備份)
cp -R /var/lib/mysql /lu/my/mysql-standard-4.0.20-pc-linux-i686
# 3. 修正擁有者權限
chown -R mysql:mysql /lu/my/mysql-standard-4.0.20-pc-linux-i686
# 4. 移除原目錄並建立符號連結
unlink /var/lib/mysql # 或 mv /var/lib/mysql /var/lib/mysql.bak
ln -s /lu/my/mysql-standard-4.0.20-pc-linux-i686 /var/lib/mysql
# 5. 確認連結正確
ls -ld /var/lib/mysql
# 6. 啟動服務
service mysql start
關鍵指令速查
| 指令 | 用途 |
ln -s 來源 目標 | 建立符號連結 (目標指向來源) |
unlink 連結 | 移除符號連結 (不刪除來源資料) |
chown -R user:group 路徑 | 遞歸修改擁有者 |
cp -R 來源 目標 | 遞歸複製目錄樹 |
驗證遷移成功
mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';" 確認路徑指向新位置。
SELECT COUNT(*) FROM 任意表; 驗證資料完整。
SHOW TABLE STATUS; 檢查引擎、列數、大小正常。
適用場景: 磁碟空間不足、將資料移至專用儲存裝置 (SSD/RAID)、多實例隔離資料目錄。現代系統建議直接修改 my.cnf datadir 參數並配合 SELinux/AppArmor 策略調整,而非依賴符號連結。