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

Linux 下 MySQL 資料目錄遷移完整操作手冊(CentOS 6 / MySQL 5.6 RPM 版)

     編輯:MySQL 資料庫相關知識

生產環境常需將 MySQL 預設資料目錄 /var/lib/mysql 遷移至掛載大容量磁碟的路徑(如 /var/lib/mysql2)。本文記錄基於 CentOS 6.4 + MySQL 5.6.13 (RPM 安裝) 的標準化遷移步驟,含配置檔、啟動腳本、權限、SELinux 等關鍵細節。

環境資訊

  • OS:CentOS 6.4 x86_64
  • MySQL:5.6.13 (RPM 包安裝)
  • 遷移路徑:/var/lib/mysql → /var/lib/mysql2

遷移步驟

1. 停止 MySQL 服務

service mysql stop
# 或
/etc/init.d/mysql stop

2. 複製/重命名資料目錄

cd /var/lib
# 方案 A:複製(保留原目錄回滾)
cp -R mysql mysql2

# 方案 B:重命名(節省空間,無回滾)
# mv mysql mysql2

3. 修正目錄擁有權與權限

chown -R mysql:mysql mysql2
chmod 750 mysql2  # 確保目錄權限正確

4. 修改主配置檔 /etc/my.cnf

[mysqld]
# 原有 socket, datadir 註解或修改
socket = /var/lib/mysql2/mysql.sock
datadir = /var/lib/mysql2

# 若有 pid-file 路徑同步修改
pid-file = /var/lib/mysql2/mysqld.pid

5. 修改啟動腳本 /etc/init.d/mysql

# 找到 datadir 變數定義行
# datadir=/var/lib/mysql    ← 註解掉
datadir=/var/lib/mysql2     ← 新增此行

# 同步修改 socket 變數(如腳本中有定義)
# socket=/var/lib/mysql/mysql.sock
socket=/var/lib/mysql2/mysql.sock

6. SELinux 檢查(關鍵,常被忽略)

# 檢查當前標籤
ls -Z /var/lib/mysql2
# 應為 system_u:object_r:mysqld_db_t:s0

# 若標籤不正確,恢復預設標籤
restorecon -Rv /var/lib/mysql2

# 或永久允許(不推薦生產)
# setsebool -P mysql_connect_any 1

7. 啟動驗證

service mysql start
# 或
/etc/init.d/mysql start

# 檢查錯誤日誌
tail -f /var/log/mysqld.log
# 或
tail -f /var/lib/mysql2/$(hostname).err

8. 連線測試

mysql -uroot -p -e "SHOW VARIABLES LIKE 'datadir';"
# 輸出應為 /var/lib/mysql2/

常見坑點與解決

現象原因解決
啟動失敗,錯誤日誌顯示 Can't create test file目錄權限/擁有者錯誤chown -R mysql:mysql /var/lib/mysql2 && chmod 750 /var/lib/mysql2
啟動失敗,Permission denied 或 SELinux 拒絕SELinux 標籤缺失restorecon -Rv /var/lib/mysql2
Socket 連線失敗client 端 my.cnf 未同步 socket 路徑編輯 /etc/my.cnf [client] 區段 socket=/var/lib/mysql2/mysql.sock
啟動後資料為空遷移前未停止服務導致資料不一致務必 完全停止 服務後再複製/移動

生產環境建議清單

  • 遷移前對原目錄做 tar 完整備份
  • 維護窗口期執行,掛上「維護中」頁面
  • 遷移後執行 ANALYZE TABLE 更新統計資訊
  • 監控 df -h 確認新磁碟空間充足
  • 記錄變更單,更新 CMDB/CI 資產資料

遵循標準化流程、重視 SELinux 與權限細節,MySQL 資料目錄遷移可在十分鐘內平滑完成,零資料損失、零配置遺漏。

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