REPAIR TABLE ทำงานได้เฉพาะ MyISAM Engine เท่านั้น InnoDB ไม่รองรับ (มี Crash Recovery เอง)
ขั้นตอน
1. สร้างตาราง MyISAM
CREATE TABLE RepairTableDemo (
id INT,
name VARCHAR(100)
) ENGINE = MyISAM;
2. Insert ข้อมูล
INSERT INTO RepairTableDemo VALUES (1, 'John'), (2, 'Carol'), (3, 'Johnson');
3. รัน REPAIR TABLE
REPAIR TABLE RepairTableDemo;
ผลลัพธ์
+--------------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+--------+----------+----------+
| business.repairtabledemo | repair | status | OK |
+--------------------------+--------+----------+----------+
REPAIR TABLE Options
REPAIR TABLE tbl_name [QUICK] [EXTENDED] [USE_FRM]
-- QUICK: เร็ว แค่ Index Tree (ไม่ Check Data)
-- EXTENDED: ช้า ตรวจสอบทุก Row (Recover Data มากที่สุด)
-- USE_FRM: ใช้ .frm File Recreate Index (Last Resort)
MyISAM Repair Tools (Command Line)
# myisamchk - Offline Repair (MySQL ต้อง Stop)
myisamchk -r /var/lib/mysql/db/table.MYI # Recover (Default)
myisamchk -r -q /var/lib/mysql/db/table.MYI # Quick Recover
myisamchk --safe-recover /var/lib/mysql/db/table.MYI # Safe Recover (ช้า แต่น่าเชื่อถือ)
myisamchk -f /var/lib/mysql/db/table.MYI # Force Overwrite
InnoDB: ไม่ต้อง REPAIR
- InnoDB มี Crash Recovery อัตโนมัติผ่าน Redo/Undo Logs
- ถ้า Corrupt: Restore จาก Backup หรือ
innodb_force_recovery innodb_force_recovery = 1..6ใน my.cnf (Start ได้แต่ Read-only)
ตรวจสอบ Corruption
-- MyISAM
CHECK TABLE table_name;
-- MyISAM/InnoDB
CHECK TABLE table_name EXTENDED;
Output ของ CHECK TABLE
+--------------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+-------+----------+----------+
| business.repairtabledemo | check | status | OK |
| business.corrupt_table | check | error | Corrupt |
+--------------------------+-------+----------+----------+
Best Practice
- ✅ ใช้ InnoDB (ไม่ต้อง Repair, Auto Recovery)
- ✅ Backup เป็นประจำ (
mysqldump,Percona XtraBackup) - ✅ Monitor
Innodb_buffer_pool_pages_dirty,Innodb_data_pending_fsyncs - ⚠️ MyISAM: รัน
CHECK TABLEเป็นประจำ,myisamchkOffline - ❌ อย่า REPAIR ใน Production Peak Hours (Lock Table)