一、準備工作
1. 確認新硬盤掛載狀態(tài)
# 查看掛載點是否正常
df -h | grep /opt/mysql
# 預(yù)期輸出示例:
/dev/sdb1 13T 0% /opt/mysql
2. 確保MySQL配置允許符號鏈接
編輯 /etc/my.cnf,確認以下參數(shù)已啟用:
[mysqld]
symbolic-links = 1 # 允許符號鏈接
innodb_file_per_table = 1 # 必須開啟(每個表獨立存儲)
3. 創(chuàng)建子目錄并設(shè)置權(quán)限
sudo mkdir -p /opt/mysql/tables
sudo chown -R mysql:mysql /opt/mysql
二、手動遷移單表到機械硬盤
1. 停止MySQL服務(wù)
sudo systemctl stop mysqld
2. 遷移指定表文件(以 big_table 為例)
# 進入MySQL數(shù)據(jù)目錄
cd /home/mysql
# 假設(shè)數(shù)據(jù)庫名為 `mydb`,表名為 `big_table`
# 移動表文件到機械硬盤(保留權(quán)限)
sudo rsync -av ./mydb/big_table.* /opt/mysql/tables/
沒有rsync命令也可以使用cp -rf
# 刪除原文件(確保rsync成功后再操作)
sudo rm -f ./mydb/big_table.ibd ./mydb/big_table.frm
3. 創(chuàng)建符號鏈接
# 在MySQL數(shù)據(jù)目錄中創(chuàng)建軟鏈接
sudo ln -s /opt/mysql/tables/big_table.ibd /home/mysql/mydb/
sudo ln -s /opt/mysql/tables/big_table.frm /home/mysql/mydb/
# 驗證鏈接
ls -l /home/mysql/mydb/big_table.*
# 正確輸出應(yīng)顯示箭頭指向目標文件:
lrwxrwxrwx 1 mysql mysql 25 Aug 10 10:00 big_table.ibd -> /opt/mysql/tables/big_table.ibd
4. 修復(fù)權(quán)限(關(guān)鍵步驟)
sudo chown -R mysql:mysql /home/mysql/mydb
sudo chown -R mysql:mysql /opt/mysql/tables
5. 啟動MySQL并驗證
sudo systemctl start mysqld
# 登錄MySQL檢查表狀態(tài)
mysql -u root -p -e "USE mydb; CHECK TABLE big_table;"
# 預(yù)期輸出:
# Table Op Msg_type Msg_text
# mydb.big_table check status OK