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

Các phương pháp miễn phí để sửa chữa cơ sở dữ liệu MySQL bị hỏng

Khi cơ sở dữ liệu MySQL bị hỏng, bạn có thể tự hỏi tại sao cơ sở dữ liệu bị hỏng ngay từ đầu. Bài đăng này sẽ nêu ra những lý do có thể có đằng sau việc cơ sở dữ liệu bị hỏng trước khi trả lời câu hỏi:làm thế nào để sửa một cơ sở dữ liệu MySQL bị hỏng?

Những lý do đằng sau việc Cơ sở dữ liệu MySQL bị lỗi

Cơ sở dữ liệu MySQL có thể bị hỏng do bất kỳ lý do nào sau đây:

  • Máy chủ tắt đột ngột
  • Lỗi trong phần cứng được sử dụng để lưu trữ và truy xuất dữ liệu như hệ thống con của đĩa, bộ điều khiển đĩa, trình điều khiển, v.v.
  • Quy trình ‘mysqld’ bị ngừng hoạt động trong khi đang tiến hành cập nhật
  • Lỗi phần mềm

Có thể là một thách thức để xác định nguyên nhân của một cơ sở dữ liệu bị hỏng. Dù nguyên nhân có thể là gì, mối quan tâm bạn nên có là làm thế nào để sửa chữa cơ sở dữ liệu MySQL bị hỏng.

Làm thế nào để sửa chữa cơ sở dữ liệu MySQL bị hỏng?

Điều đầu tiên bạn cần xem là thông báo lỗi mà bạn nhận được. Sau đây là một số thông báo lỗi bạn có thể gặp phải khi cơ sở dữ liệu MySQL bị hỏng:

Lỗi 144: Bảng bị lỗi và lần sửa chữa cuối cùng không thành công

Lỗi 141: Sao chép khóa hoặc ràng buộc duy nhất khi ghi hoặc cập nhật

Lỗi 136: Không còn chỗ trong tệp chỉ mục

Lỗi 134: Bản ghi đã bị xóa

Lỗi 126: Tệp chỉ mục bị lỗi / định dạng tệp sai

Lỗi: Không thể tìm thấy tệp ‘wtlicensemanager.dll’

Nếu bạn muốn sửa chữa miễn phí, bạn có hai lựa chọn:

  1. Làm theo cách thủ công.
  2. Làm điều đó với sự trợ giúp của phần mềm trong thời gian dùng thử.

Phần mềm khôi phục cơ sở dữ liệu có thể thực hiện công việc sửa chữa cơ sở dữ liệu bị hỏng nhanh hơn và tốt hơn.

Đây là một ứng dụng phần mềm mà bạn có thể sử dụng để sửa chữa cơ sở dữ liệu MySQL bị hỏng:

Công cụ sửa chữa cơ sở dữ liệu MySQL này sửa chữa cơ sở dữ liệu được tạo bằng cả công cụ cơ sở dữ liệu InnoDB và MyISAM của MySQL. Bạn có thể tải xuống phiên bản demo của công cụ sửa chữa SQL để xem trước cơ sở dữ liệu có thể khôi phục trước khi lưu chúng.

Các tính năng chính:

  • Có thể khôi phục cơ sở dữ liệu MySQL trên hệ thống Windows và Linux.
  • Khôi phục các tệp InnoDB (.ibdata, .ibd và .frm) và các tệp MyISAM (myd, .myi và .frm)
  • Khôi phục các đối tượng cơ sở dữ liệu như bảng, thuộc tính bảng, kiểu dữ liệu, chế độ xem, trình kích hoạt, v.v.
  • Cho phép khôi phục có chọn lọc các thành phần cơ sở dữ liệu

Làm thế nào để sửa chữa cơ sở dữ liệu MySQL bị hỏng theo cách thủ công?

Có hai loại công cụ lưu trữ trong MySQL:InnoDB và MyISAM. Bảng InnoDB chứa các tệp FRM, IBDATA và IDB, trong khi bảng MyISAM chứa các tệp FRM, MYD và MYI.

Trước khi chúng tôi tiếp tục

Dưới đây là một số điều bạn nên cân nhắc trước khi thử khôi phục thủ công:

  • Không khởi động lại máy chủ

Khi bạn khởi động lại máy chủ, máy chủ có thể đặt cơ sở dữ liệu bị hỏng ở chế độ đáng ngờ. Thao tác này sẽ tắt cơ sở dữ liệu. Nó cũng có thể tạo ra lỗi trong khi kết nối với cơ sở dữ liệu. Bạn nên thử khôi phục mà không cần khởi động lại máy chủ.

  • Sử dụng chế độ Một người dùng

Đảm bảo rằng bạn là người dùng duy nhất được kết nối với cơ sở dữ liệu. Chế độ một người dùng cung cấp cho bạn toàn bộ quyền kiểm soát, loại bỏ sự can thiệp của những người dùng khác.

  • Không nâng cấp MySQL

Bạn có thể nghĩ đến việc cập nhật cơ sở dữ liệu MySQL để sửa các tệp bị hỏng. Nhưng đây không phải là trường hợp. Nâng cấp có thể gây ra mất dữ liệu vĩnh viễn.

  • Sao lưu cơ sở dữ liệu MySQL bị hỏng

Điều quan trọng là phải có một bản sao lưu của tệp bị hỏng vì có thể có lỗi có thể khiến bạn mất dữ liệu. Không có gì đảm bảo rằng các bước thủ công của bạn sẽ không ảnh hưởng đến các tệp lành mạnh. Vì vậy, thật an toàn nếu có một bản sao lưu trước khi thử khôi phục thủ công.

Để sao lưu, hãy sử dụng lệnh sau:

mysqldump db_name> database_name.sql

Chỉ cần nhập tên cơ sở dữ liệu của bạn thay cho database_name.

Nếu cách trên không hoạt động, hãy thử cách sau:

mysqldump –u [tên người dùng] –p [mật khẩu] [database_name]> [dump_file] .sql

Có một cách khác để sao lưu cơ sở dữ liệu:

ngừng dịch vụ mysqld

cp -r / var / lib / mysql / var / lib / mysql_bkp

Bây giờ chúng tôi đã có bản sao lưu, chúng tôi có thể cố gắng sửa chữa cơ sở dữ liệu MySQL bị hỏng.

Cách khôi phục cơ sở dữ liệu MySQL theo cách thủ công?

Sửa chữa cơ sở dữ liệu MyISAM

Nếu bạn đang sử dụng công cụ lưu trữ cơ sở dữ liệu MyISAM cho bảng cơ sở dữ liệu của mình, bạn có thể sử dụng các lệnh sau để sửa chữa bảng:

Mysqlcheck

Nếu máy chủ MySQL của bạn đang chạy, hãy chạy lệnh mysqlcheck sau để sửa chữa bảng của bạn:

mysqlcheck -r [database_name]

Đảm bảo thay thế 'database_name' bằng tên cơ sở dữ liệu của bạn.

Myisamchk

Nếu máy chủ không chạy, hãy thử sửa chữa bảng cơ sở dữ liệu bằng cách sử dụng lệnh myisamchk:

Lưu ý: Trước khi chạy lệnh này, hãy đảm bảo rằng máy chủ không có bất kỳ bảng nào đang mở.

myisamchk table_name

Sửa chữa tên bảng bằng tên bảng trong trường hợp của bạn. Lệnh này tự động sửa bảng của bạn.

Để khởi động lại máy chủ, hãy nhập như sau:

bắt đầu dịch vụ mysqld

Buộc khôi phục InnoDB

Bạn sẽ cần thực hiện khôi phục buộc InnoDB để trích xuất dữ liệu từ bảng cơ sở dữ liệu InnoDB bị hỏng.

Bước 1: Trước tiên, bạn cần mở tệp my.cnf.

Trong tệp này, tìm phần [mysqld].

Thêm dòng sau vào phần này:

innodb_force_recovery =1

Bây giờ lưu tệp cấu hình và khởi động lại máy chủ MySQL. Bạn có thể đặt giá trị của innodb_force_recovery từ 1 đến 6. Tuy nhiên, giá trị vượt quá 4 không được khuyến nghị vì nó có thể làm hỏng dữ liệu.

Bước 2: Đưa dữ liệu bảng vào một tệp mới.

Để làm như vậy, hãy sử dụng lệnh sau:

mysqldump –u người dùng –p db_name table_name> single_dbtable_dump.sql

Bước 3: Bỏ bảng bị hỏng khỏi cơ sở dữ liệu.

mysql –u user –p –execute =”DROP TABLE db_name.table_name”

Bước 4: Khôi phục bảng từ tệp kết xuất.

mysql –u người dùng –p

Bước 5: Sau khi các tệp được sửa chữa, hãy tắt chế độ khôi phục cưỡng bức bằng lệnh sau:

# innodb_force_recovery =…

Bây giờ bạn có thể khởi động lại dịch vụ MySQL ở chế độ bình thường.

Chúng tôi hy vọng rằng các phương pháp trên sẽ giúp bạn sửa cơ sở dữ liệu MySQL bị hỏng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa khóa chính trong MySQL

  2. Sự khác biệt giữa FIELD () và FIND_IN_SET () trong MySQL

  3. Thủ tục lưu trữ thay thế MySQL

  4. Truy vấn SQL để tạo bảng trong MySQL

  5. Cột số lượng cao hơn đầu tiên trong một chỉ mục khi liên quan đến một phạm vi?