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

MySQL 資料目錄磁碟空間不足應對:建表指定 DATA/INDEX DIRECTORY、符號連結遷移

     編輯:MySQL 資料庫相關知識

建表時預判空間不足


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 擴充。
  • 操作前**必須備份**,驗證連結有效後再釋放鎖。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved