傳統遷移 MySQL 資料目錄需修改 /etc/my.cnf 的 datadir 參數,再手動搬移檔案、調整權限,步驟繁瑣且易出錯。本文介紹利用 Linux 符號連結 的優雅方案,幾條指令完成遷移,且可隨時回滾。
# 1. 停止 MySQL 服務
systemctl stop mysqld
# 2. 移動資料目錄到新位置(例:/data/sas0/)
mv /var/lib/mysql /data/sas0/
# 3. 建立符號連結,指向新位置
cd /var/lib
ln -s /data/sas0/mysql mysql
# 4. 啟動 MySQL 服務
systemctl start mysqld
datadir 設定(預設 /var/lib/mysql)。/var/lib/mysql -> /data/sas0/mysql 讓作業系統透明導向新實體路徑。| 指標 | 修改 my.cnf 法 | 符號連結法 |
|---|---|---|
| 步驟複雜度 | 高(編輯設定、搬移、改權限、改 SELinux) | 低(mv + ln -s) |
| 回滾難度 | 高(需改回設定、再搬回) | 極低(rm 連結、mv 回原位) |
| 權限/SELinux 風險 | 高(易忘記 chcon/restorecon) | 低(目標目錄原有上下文) |
| 適用場景 | 永久遷移、跨磁碟分區 | 測試、臨時遷移、快速驗證 |
noatime、exec、無 nosuid)。mysql:mysql,權限 750。semanage fcontext -a -t mysqld_db_t "/data/sas0/mysql(/.*)?" 並 restorecon -Rv /data/sas0/mysql。mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"
-- 應顯示 /var/lib/mysql/(邏輯路徑),實際資料在 /data/sas0/mysql/
善用符號連結,將資料目錄遷移從「高風險維護作業」轉化為「秒級切換操作」,大幅降低運維負擔與錯誤機率。