首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Ubuntu 遷移 MySQL 數據目錄完整教程:掛載雲硬盤實現數據安全

     編輯:MySQL 綜合教學

Ubuntu 遷移 MySQL 數據目錄完整教程:掛載雲硬盤實現數據安全

適用場景

  • 系統盤空間不足,需將數據移至掛載的數據盤/雲硬盤
  • 數據與系統分離,便於備份、遷移、擴容
  • 提高 I/O 性能(掛載高性能 SSD/雲硬盤)

操作步驟

1. 創建新數據目錄
mkdir -p /media/hdb1/db
2. 停止 MySQL 服務
sudo systemctl stop mysql
# 或舊版
sudo /etc/init.d/mysql stop
3. 複製數據(保留屬性、權限、時間戳)
cp -dpR /var/lib/mysql/* /media/hdb1/db/
  • -d:保留符號鏈接
  • -p:保留權限、時間戳、所有者
  • -R:遞歸複製
4. 修改目錄所有者
chown -R mysql:mysql /media/hdb1/db
5. 修改 AppArmor 配置(關鍵步驟,Ubuntu 預設啟用)
sudo vim /etc/apparmor.d/usr.sbin.mysqld

將:

/var/lib/mysql r,
/var/lib/mysql/** rwk,

改為:

/media/hdb1/db r,
/media/hdb1/db/** rwk,
6. 修改 MySQL 配置文件
sudo vim /etc/mysql/my.cnf

找到 [mysqld] 區塊,修改:

datadir = /media/hdb1/db
7. 重啟 AppArmor 與 MySQL
sudo systemctl restart apparmor
sudo systemctl restart mysql

驗證遷移成功

# 登入 MySQL
mysql -u root -p

# 查看數據目錄
SHOW VARIABLES LIKE 'datadir';
-- 應顯示 /media/hdb1/db/

# 測試讀寫
CREATE DATABASE test_migration;
USE test_migration;
CREATE TABLE t (id INT);
INSERT INTO t VALUES (1);
SELECT * FROM t;

常見問題排查

問題原因解決
啟動失敗,日誌顯示 Permission deniedAppArmor 未更新或目錄權限錯誤檢查 apparmor 配置、chown -R mysql:mysql、重啟 apparmor
啟動失敗,PID file not updatedSELinux(CentOS)或目錄權限Ubuntu 通常無 SELinux,檢查目錄權限與 apparmor
舊數據不可見複製未包含隱藏文件或符號鏈接使用 cp -dpR 確保完整複製

回滾方案

# 恢復配置
sudo vim /etc/mysql/my.cnf  # datadir = /var/lib/mysql
sudo vim /etc/apparmor.d/usr.sbin.mysqld  # 恢復 /var/lib/mysql 路徑
sudo systemctl restart apparmor
sudo systemctl restart mysql

生產環境建議

  1. 維護窗口期操作,提前通知業務方
  2. 遷移前做全量備份(mysqldump 或物理備份)
  3. 掛載點配置 /etc/fstab 開機自動掛載,選項 defaults,nofail
  4. 監控磁碟空間、I/O 指標
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved