建表時預判空間不足
CREATE TABLE t (
id INT PRIMARY KEY,
data VARCHAR(100)
) DATA DIRECTORY = '/mnt/disk2/mysql_data'
INDEX DIRECTORY = '/mnt/disk3/mysql_index';
- 僅支援 MyISAM;InnoDB 使用共用表空間或
innodb_file_per_table 配合符號連結。
- 路徑必須為**絕對路徑**。
既有表遷移:mv + 符號連結
# 1. 停機或鎖表
FLUSH TABLES t WITH READ LOCK;
# 2. 移動檔案到大磁碟
mv /var/lib/mysql/db/t.* /mnt/big_disk/mysql/db/
# 3. 原位置建立符號連結
ln -s /mnt/big_disk/mysql/db/t.frm /var/lib/mysql/db/t.frm
ln -s /mnt/big_disk/mysql/db/t.MYD /var/lib/mysql/db/t.MYD
ln -s /mnt/big_disk/mysql/db/t.MYI /var/lib/mysql/db/t.MYI
# 4. 釋放鎖
UNLOCK TABLES;
- 適用 MyISAM(.frm/.MYD/.MYI 分離)。
- InnoDB
file_per_table 同理操作 .ibd 檔案;共用表空間需調整 innodb_data_file_path 擴充。
- 操作前**必須備份**,驗證連結有效後再釋放鎖。