Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หาตำแหน่งเก็บข้อมูลตาราง MySQL ใน Windows ด้วย datadir

ต้องการทราบว่า 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/