Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để khắc phục các sự cố thường gặp với cơ sở dữ liệu MySQL?

Tóm tắt: Bài viết này liệt kê một số lỗi phổ biến mà bạn có thể gặp phải khi bảng MySQL bị hỏng. Nó cũng chỉ ra những lý do có thể đằng sau việc bảng cơ sở dữ liệu MySQL bị hỏng. Bài viết cũng giải thích những gì bạn có thể làm để sửa các bảng bị hỏng và cách phần mềm sửa chữa cơ sở dữ liệu MySQL có thể hữu ích để khôi phục dữ liệu trong bảng và tất cả các đối tượng cơ sở dữ liệu khác.

Là người dùng cơ sở dữ liệu MySQL, bạn có thể gặp bất kỳ lỗi nào sau đây:

  • “Bảng được đánh dấu là bị hỏng và cần được sửa chữa”
  • “Bảng bị lỗi và lần sửa chữa cuối cùng không thành công"
  • “Bảng tbl_name không tồn tại”
  • “Tệp khóa không chính xác cho bảng:‘… ’. Cố gắng sửa chữa nó ”, v.v.

Đây là những dấu hiệu cảnh báo rằng bảng MySQL của bạn bị hỏng.

Nguyên nhân nào gây ra lỗi trong bảng cơ sở dữ liệu MySQL?

Sau đây là những lý do có thể dẫn đến bảng cơ sở dữ liệu MySQL bị hỏng:

  • Sự cố trong nền tảng cơ bản được MySQL sử dụng, bao gồm hệ thống con đĩa, trình điều khiển, bộ điều khiển, v.v.
  • Hệ thống tắt đột ngột hoặc sự cố máy chủ
  • Quy trình MySQL bị ngắt khi đang ghi vào cơ sở dữ liệu
  • Lỗi phần mềm hoặc lỗi phần cứng

Gặp phải bất kỳ lỗi tham nhũng MySQL nào có thể làm cho dữ liệu trong các bảng không thể truy cập được. Hãy thảo luận về các giải pháp để sửa các bảng bị hỏng.

Cách sửa lỗi cơ sở dữ liệu MySQL bị lỗi?

Nếu bạn có bản sao lưu cập nhật cơ sở dữ liệu của mình, hãy khôi phục cơ sở dữ liệu từ bản sao lưu để khôi phục dữ liệu bảng không thể truy cập được. Nếu không có bản sao lưu, hãy thực hiện các bước theo trình tự bên dưới để sửa các bảng MySQL bị hỏng và khôi phục dữ liệu:

Lưu ý: Sao lưu cơ sở dữ liệu MySQL và các bảng của bạn để ngăn chặn thiệt hại thêm trong quá trình sửa chữa và phục hồi.

Bước 1:Kiểm tra bảng để tìm lỗi

Đầu tiên, bạn phải kiểm tra bảng cơ sở dữ liệu để tìm lỗi tham nhũng. Bạn có thể sử dụng BẢNG KIỂM TRA lệnh chẩn đoán bảng InnoDB và MyISAM bị hỏng:

BẢNG KIỂM TRA tùy chọn tbl_name;

Tại đây, thay thế ‘tbl_name’ bằng tên của bảng cơ sở dữ liệu bị hỏng. Và thay thế 'option' bằng bất kỳ tùy chọn nào sau đây:NHANH, NHANH CHÓNG, TRUNG BÌNH, GIA HẠN và THAY ĐỔI.

Tùy chọn Mô tả
NHANH Thực hiện sửa chữa bảng InnoDB và MyISAM nhanh hơn. Bỏ qua khi quét các hàng để tìm các liên kết không chính xác
NHANH CHÓNG Chỉ kiểm tra các bảng MyISAM chưa được đóng đúng cách. Không áp dụng cho bảng InnoDB.
ĐÃ THAY ĐỔI Chỉ kiểm tra các bảng MyISAM chưa bị đóng kể từ lần kiểm tra cuối cùng được thực hiện. Không áp dụng cho bảng InnoDB.
TRUNG BÌNH Xác minh xem các liên kết đã xóa có hợp lệ hay không bằng cách quét các hàng. Chỉ áp dụng cho các bảng MyISAM.
ĐÃ MỞ RỘNG Thực hiện tra cứu khóa đầy đủ cho tất cả các khóa cho mỗi hàng của bảng MyISAM. Phải mất nhiều thời gian để thực thi.

Để kiểm tra nhiều hơn một bảng để tìm lỗi, hãy sử dụng lệnh sau:

BẢNG KIỂM TRA tbl_name1, tbl_name2, tbl_name 3 option;

Lưu ý: Lệnh CHECK TABLE chỉ có thể được sử dụng khi quá trình MySQL đang chạy. Tuy nhiên, nếu quá trình / máy chủ không chạy, bạn có thể sử dụng lệnh ‘myisamchk’ sau để kiểm tra bảng MyISAM xem có bị hỏng không:

myisamchk [options] tbl_name…

Lệnh này kiểm tra một bảng.

Thực thi lệnh sau để kiểm tra tất cả các bảng trong cơ sở dữ liệu MySQL xem có bị hỏng không:

myisamchk /path/to/datadir/*/*.MYI

Tiện ích myisamchk không hoạt động với các bảng InnoDB.

Bước 2:Bảng sửa chữa lỗi

Lưu ý: Lệnh myisamchk chỉ áp dụng cho các bảng MyISAM và không hoạt động cho các bảng InnoDB. Để sửa chữa và khôi phục bảng Innodb, hãy chuyển sang Bước 3.

Tiện ích myisamchk cũng có thể giúp sửa chữa bảng MyISAM bị hỏng (bị hỏng). Để sử dụng tiện ích sửa chữa bảng bị hỏng, hãy làm như sau:

  1. Dừng dịch vụ MySQL bằng cách nhập:
dừng dịch vụ mysqld

cd / var / lib / mysql

  1. Thay đổi thư mục chứa cơ sở dữ liệu.
cd / var / lib / mysql / table_name

myisamchk

  1. Để sửa một bảng bị hỏng, hãy chạy lệnh sau bằng cách thay thế TABLE bằng tên của bảng bạn muốn sửa:
myisamchk –recover
  1. Khởi động lại dịch vụ MySQL của bạn.
dịch vụ mysqld start

Bước 3:Buộc khôi phục InnoDB

Để khắc phục lỗi trong bảng InnoDB, hãy sử dụng ‘innodb_force_recovery’ lựa chọn. Tùy chọn này buộc công cụ cơ sở dữ liệu InnoDB khởi động mà không có bất kỳ hoạt động nền nào, điều này cho phép bạn kết xuất các bảng của mình.

  1. Mở tệp cấu hình MySQL của bạn (my.cnf) và thêm phần sau vào phần [mysqld]:
[mysqld]

innodb_force_recovery =1

khởi động lại mysql dịch vụ

Bạn có thể bắt đầu innodb_force_recovery với giá trị 1 và tăng giá trị này nếu cần. Khi bạn đã bắt đầu khôi phục innodb, hãy khởi động lại máy chủ MySQL và sau đó kết xuất các bảng của bạn. Tuy nhiên, trong một số trường hợp, bạn có thể cần đặt giá trị từ 4 đến 6, điều này có thể làm hỏng dữ liệu.

Thận trọng! Nếu bạn có thể kết xuất các bảng có giá trị innodb_force_recovery =3 trở xuống thì bạn có thể thực hiện quá trình khôi phục một cách an toàn. Tuy nhiên, việc đặt innodb_force_recovery thành giá trị lớn hơn 4 có nguy cơ mất dữ liệu.

  1. Nếu bạn có thể khởi động cơ sở dữ liệu của mình, hãy chạy lệnh mysqldump sau để xuất tất cả cơ sở dữ liệu sang tệp SQL (tức là tệp sao lưu chứa tất cả các câu lệnh để khôi phục cơ sở dữ liệu):
mysqldump –all-databases –add-drop-database –add-drop-table> mydump.sql
  1. Khởi động dịch vụ MySQL, sau đó cố gắng loại bỏ cơ sở dữ liệu có chứa các bảng bị ảnh hưởng bằng cách sử dụng lệnh DROP DATABASE. Nếu bạn không thể xóa cơ sở dữ liệu, hãy thử xóa cơ sở dữ liệu đó theo cách thủ công bằng cách thực hiện các bước dưới đây sau khi dừng máy chủ MySQL.
cd / var / lib / mysql

rm -rf

  1. Sau khi thực hiện lệnh trên, hãy nhận xét dòng bên dưới trong [mysqld] để tắt khôi phục InnoDB:
# innodb_force_recovery =…
  1. Lưu tất cả các thay đổi bạn đã thực hiện vào tệp my.cnf, sau đó khởi động máy chủ của bạn.
dịch vụ mysqld start
  1. Ty khôi phục cơ sở dữ liệu và bảng từ MySQL dump (tệp sao lưu) mà bạn đã tạo ở Bước 2:
mysql -u user -p

Thực hiện các bước này sẽ khôi phục cơ sở dữ liệu MySQL và các bảng của nó. Nếu dữ liệu vẫn bị thiếu, bạn sẽ cần sử dụng phần mềm sửa chữa cơ sở dữ liệu MySQL chuyên nghiệp, chẳng hạn như Stellar Repair cho MySQL để khôi phục cơ sở dữ liệu của bạn và khôi phục dữ liệu của nó. Phần mềm có thể sửa chữa cả hai bảng InnoDB và MyISAM giữ cho dữ liệu nguyên vẹn. Nó hỗ trợ sửa chữa các bảng MySQL trên Windows cũng như các hệ thống Linux.

Kết luận

Bảng cơ sở dữ liệu MySQL có thể bị hỏng do hệ thống tắt đột ngột, sự cố máy chủ, lỗi phần cứng, lỗi trong mã MySQL, v.v. Sự cố trong bảng MySQL dẫn đến các lỗi được liệt kê trong bài viết này. Bạn có thể cố gắng sửa chữa các bảng MyISAM bị hỏng bằng cách sử dụng tiện ích ‘myisamchk’ hoặc buộc khôi phục InnoDB. Tuy nhiên, có thể mất đáng kể thời gian để sửa chữa bảng MyISAM và thực hiện khôi phục InnoDB theo cách thủ công. Ngoài ra, quá trình khôi phục thủ công có thể dẫn đến mất dữ liệu. Một giải pháp thay thế tốt hơn là sử dụng phần mềm Stellar Repair cho MySQL. Phần mềm cho phép sửa chữa cả hai bảng cơ sở dữ liệu MyISAM và InnoDB mà không thực hiện bất kỳ thay đổi nào đối với dữ liệu gốc.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL giữa mệnh đề không bao gồm?

  2. giới hạn truy vấn con mySQL

  3. Lỗi PHP (MySQL):Cảnh báo:mysql_num_rows () mong muốn tham số 1 là tài nguyên

  4. Sự cố với các ký tự UTF-8; những gì tôi thấy không phải là những gì tôi đã lưu trữ

  5. chọn các giá trị duy nhất từ ​​một cột