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

CentOS 7 MySQL 資料目錄遷移完整操作:/var/lib/mysql → /home/mysql_data/mysql

     編輯:MySQL 資料庫相關知識

MySQL datadir 遷移標準流程 (CentOS/RHEL 7/8 通用)

磁碟空間不足、IO 隔離、備份掛載等場景需將 MySQL 資料目錄遷移至新分區/掛載點。核心原則:服務停止 → 資料同步 (保留屬性/權限/SELinux) → 修改配置 → 更新 Socket/啟動腳本 → 驗證啟動。

1. 停止服務

systemctl stop mysqld
# 或 service mysqld stop

2. 同步資料 (保留屬性、SELinux 上下文)

# 掛載新分區至 /home/mysql_data (假設已完成)
# 使用 rsync 保留權限、擁有者、時間戳、SELinux 標籤
rsync -avXS /var/lib/mysql/ /home/mysql_data/mysql/

# 驗證
ls -ld /var/lib/mysql /home/mysql_data/mysql
# 應同屬 mysql:mysql,目錄 700,檔案 660

3. 修改配置文件 (三處)

檔案修改項目備註
/etc/my.cnfdatadir=/home/mysql_data/mysql
socket=/home/mysql_data/mysql/mysql.sock
主配置,[mysqld] 區段
/etc/init.d/mysqlddatadir=/home/mysql_data/mysqlSysV 啟動腳本變量
/usr/bin/mysqld_safeDATADIR=/home/mysql_data/mysqlmysqld_safe 腳本內變量

建議:修改前備份 cp file file.bak。

4. Socket 檔案軟連結 (相容舊客戶端)

mkdir -p /var/lib/mysql  # 確保目錄存在
ln -sf /home/mysql_data/mysql/mysql.sock /var/lib/mysql/mysql.sock

5. SELinux 上下文修正 (關鍵步驟,CentOS/RHEL 必做)

# 安裝工具
yum install -y policycoreutils-python-utils

# 為新目錄套用 mysqld_db_t 標籤
semanage fcontext -a -t mysqld_db_t "/home/mysql_data/mysql(/.*)?"
restorecon -Rv /home/mysql_data/mysql

# 或者暫時設為 Permissive 驗證 (生產不可取)
# setenforce 0

6. 啟動驗證

systemctl start mysqld
systemctl status mysqld

# 連線測試
mysql -uroot -p -e "SHOW VARIABLES LIKE 'datadir'; SELECT @@datadir;"
# 應顯示 /home/mysql_data/mysql/

7. 常見失敗排查

現象原因解決
啟動失敗,日誌 Permission denied目錄/檔案擁有者非 mysql:mysql 或權限錯誤chown -R mysql:mysql /home/mysql_data/mysql; chmod 700 /home/mysql_data/mysql; find /home/mysql_data/mysql -type f -exec chmod 660 {} \;
啟動失敗,SELinux 拒絕新目錄缺少 mysqld_db_t 標籤執行步驟 5 restorecon
客戶端連線失敗 Can't connect to socketSocket 路徑不一致檢查 my.cnf socket 路徑與軟連結;客戶端指定 --socket=/home/mysql_data/mysql/mysql.sock 或 --protocol=tcp
AppArmor 拒絕Ubuntu/Debian AppArmor 設定檔限制修改 /etc/apparmor.d/usr.sbin.mysqld 加入新路徑,重載 apparmor

遷移後驗證清單

  • ✅ 服務正常啟動、系統日誌無錯誤。
  • ✅ SHOW VARIABLES LIKE 'datadir' 指向新路徑。
  • ✅ 建表/寫入/讀取/備份/主從同步功能正常。
  • ✅ 磁碟空間釋放:df -h /var 確認空間釋放。
  • ✅ 監控告警更新:修改巡檢腳本、Prometheus exporter 的 datadir 參數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved