ต้องการทราบว่า MySQL เก็บไฟล์ข้อมูลตาราง (Data Files) ไว้ที่ไหนใน Windows ให้ใช้ Variable datadir หรือคำสั่ง SHOW VARIABLES
วิธีที่ 1: SELECT @@datadir
mysql> select @@datadir;
ผลลัพธ์
+---------------------------------------------+ | @@datadir | +---------------------------------------------+ | C:\ProgramData\MySQL\MySQL Server 8.0\Data\ | +---------------------------------------------+
วิธีที่ 2: SHOW VARIABLES
mysql> show variables where Variable_name = 'datadir';
ผลลัพธ์
+---------------+---------------------------------------------+ | Variable_name | Value | +---------------+---------------------------------------------+ | datadir | C:\ProgramData\MySQL\MySQL Server 8.0\Data\ | +---------------+---------------------------------------------+
โครงสร้างโฟลเดอร์ Data
C:\ProgramData\MySQL\MySQL Server 8.0\Data\- Root Data Directory- แต่ละ Database = 1 โฟลเดอร์ (เช่น
mysql\,test\,mydb\) - ในโฟลเดอร์ Database จะมีไฟล์:
.frm- Table Definition (เก่า, MySQL 8.0 ลบแล้ว).ibd- InnoDB Tablespace (Data + Index).MYD,.MYI- MyISAM Data/Index.sdi- Serialized Dictionary Information (MySQL 8.0+)
ค้นหาตารางเฉพาะ
-- หาไฟล์ของตาราง table_name
SELECT TABLE_SCHEMA, TABLE_NAME,
CONCAT(@@datadir, TABLE_SCHEMA, '/', TABLE_NAME, '.ibd') AS file_path
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'your_table' AND ENGINE = 'InnoDB';
ข้อควรระวัง
- ProgramData เป็น Hidden Folder - ต้องเปิด Show Hidden Files ใน Explorer
- ไม่ควร Copy/Paste ไฟล์ .ibd โดยตรงระหว่าง Instance (ต้องใช้ Transportable Tablespace)
- Backup ควรใช้
mysqldumpหรือMySQL Enterprise BackupหรือPercona XtraBackup - ย้าย datadir: แก้ my.ini → Stop Service → ย้ายโฟลเดอร์ → Start Service
Linux/macOS
mysql> select @@datadir; -- ปกติ: /var/lib/mysql/ หรือ /usr/local/mysql/data/