Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Kiểm tra bảng bị hỏng (crashed) trong MySQL bằng SHOW TABLE STATUS

Trong MySQL, một bảng bị hỏng (crashed) thường biểu hiện bằng cột Engine hiển thị NULL hoặc rỗng khi chạy SHOW TABLE STATUS.

Cú pháp kiểm tra

SHOW TABLE STATUS FROM tên_database;

Ví dụ minh họa

Kiểm tra database test3 với 19 bảng:

mysql> SHOW TABLE STATUS FROM test3;

Kết quả (rút gọn các cột quan trọng):

+------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+
| Name                         | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation          | Checksum | Create_options | Comment |
+------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+
| bestdateformatdemo           | InnoDB | 10      | Dynamic    | 4    | 4096           | 16384       | 0               | 0            | 0         | 5              | 2019-02-22 22:49:43 | NULL        | NULL       | utf8mb4_0900_ai_ci | NULL     |                |         |
| countdemo                    | InnoDB | 10      | Dynamic    | 4    | 4096           | 16384       | 0               | 0            | 0         | 4              | 2019-02-26 15:21:12 | NULL        | NULL       | utf8mb4_0900_ai_ci | NULL     |                |         |
| deletedemo                   | InnoDB | 10      | Dynamic    | 6    | 2730           | 16384       | 0               | 0            | 0         | NULL           | 2019-02-13 19:20:04 | NULL        | NULL       | utf8mb4_0900_ai_ci | NULL     |                |         |
| ... (các bảng khác đều Engine = InnoDB) ...
| posts                        | InnoDB | 10      | Dynamic    | 0    | 0              | 16384       | 0               | 0            | 32768     | NULL           | 2019-02-13 18:19:06 | NULL        | NULL       | utf8mb4_0900_ai_ci | NULL     |                |         |
+------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+

Phân tích kết quả

Tất cả 19 bảng đều có Engine = InnoDB → Không có bảng nào bị hỏng.

Nếu có bảng bị hỏng, cột Engine sẽ hiển thị NULL hoặc rỗng:

| ten_bang_hong | NULL | ... |

Cách sửa bảng bị hỏng

  1. REPAIR TABLE (chỉ hoạt động với MyISAM, ARIA, CSV):
    REPAIR TABLE tên_bảng;
  2. InnoDB (engine mặc định hiện nay) tự phục hồi qua crash recovery khi khởi động MySQL. Nếu InnoDB bị hỏng dữ liệu, thường do lỗi phần cứng/ổ cứng, cần restore từ backup.
  3. CHECK TABLE để kiểm tra tính toàn vẹn:
    CHECK TABLE tên_bảng;

Khuyến nghị

  • Luôn dùng InnoDB (mặc định từ MySQL 5.5+)
  • Backup định kỳ với mysqldump hoặc Percona XtraBackup
  • Giám sát error log MySQL để phát hiện sớm sự cố