首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 資料目錄遷移輕鬆搞定:符號連結法取代修改 my.cnf,零風險零停機

     編輯:MySQL 資料庫相關知識

傳統遷移 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

原理說明

  • MySQL 讀取 datadir 設定(預設 /var/lib/mysql)。
  • 符號連結 /var/lib/mysql -> /data/sas0/mysql 讓作業系統透明導向新實體路徑。
  • MySQL 進程無感知,權限、SELinux 上下文均由目標目錄繼承。

優勢對比

指標修改 my.cnf 法符號連結法
步驟複雜度高(編輯設定、搬移、改權限、改 SELinux)低(mv + ln -s)
回滾難度高(需改回設定、再搬回)極低(rm 連結、mv 回原位)
權限/SELinux 風險高(易忘記 chcon/restorecon)低(目標目錄原有上下文)
適用場景永久遷移、跨磁碟分區測試、臨時遷移、快速驗證

注意事項

  • 確保目標分區掛載選項支援 MySQL 需求(noatime、exec、無 nosuid)。
  • 目標目錄擁有者/群組必須為 mysql:mysql,權限 750。
  • SELinux 環境下,目標目錄需正確標記: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/

善用符號連結,將資料目錄遷移從「高風險維護作業」轉化為「秒級切換操作」,大幅降低運維負擔與錯誤機率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved