Các phương pháp sửa chữa cơ sở dữ liệu MySQL bị hỏng

Tác giả NetworkEngineer, T.Mười 28, 2021, 02:14:51 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Các phương pháp 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 hỏng cơ sở dữ liệu trước khi trả lời câu hỏi làm thế nào để sửa chữa một cơ sở dữ liệu MySQL bị hỏng.

1. Những lý do gây ra 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 đĩa, bộ điều khiển đĩa, trình điều khiển, v.v.
  • Tiến trình 'mysqld' bị hủy trong khi đang trong quá trì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.

2. 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:

  • Error 144: Table is crashed, and the last repair failed
  • Error 141: Duplicate unique key or constraint on write or update
  • Error 136: No more room in the index file
  • Error 134: Record was already deleted
  • Error 126: Index file is crashed/ wrong file format
  • Error: Could not find file 'wtlicensemanager.dll'

Nếu bạn muốn sửa chữa, bạn có hai lựa chọn sau đây:

  • Sửa chữa cơ sở dữ liệu MySQL bị hỏng theo cách thủ công.
  • sửa chữa cơ sở dữ liệu MySQL bị hỏng sự trợ giúp của phần mềm.

3. 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 tin FRM, IBDATAIDB, trong khi bảng MyISAM chứa các tập tin FRM, MYDMYI.

3.1. Trước khi chúng ta sửa chữa cơ sở dữ liệu MySQL bị hỏng.

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ế độ nghi 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ế độ Single User:

Đả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 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 tin bị hỏng. Nhưng đây không phải là trường hợp. Nâng cấp có thể gây 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 tin 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 tin đang ổn định. Vì vậy, có thể an toàn để có một bản sao lưu trước khi cố gắng khôi phục thủ công.

Để sao lưu cơ sở dữ liệu MySQL bị hỏng hiện tại, hãy sử dụng lệnh sau:

Mã nguồn [Chọn]
$ 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:

Mã nguồn [Chọn]
$ mysqldump –u [username] –p [password] [database_name]> [dump_file] .sql
Có một cách khác để sao lưu cơ sở dữ liệu:

Mã nguồn [Chọn]
$ service mysqld stop
Mã nguồn [Chọn]
$ cp -r /var/lib/mysql /var/lib/mysql_bkp
Bây giờ chúng ta đã có bản sao lưu, chúng ta có thể bắt đầu cố gắng sửa chữa cơ sở dữ liệu MySQL bị hỏng.

3.2. Sửa chữa cơ sở dữ liệu MySQL bị hỏng 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:

Mã nguồn [Chọn]
$ mysqlcheck -r [database_name]
Đảm bảo thay thế 'database_name' bằng tên của 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ở.

Mã nguồn [Chọn]
$ myisamchk table_name
Sử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:

Mã nguồn [Chọn]
$ service mysqld start
Sửa chữa cơ sở dữ liệu InnoDB:

Bạn sẽ cần thực hiện InnoDB force recovery để trích xuất dữ liệu từ bảng cơ sở dữ liệu InnoDB bị hỏng.

Đầu tiên, bạn cần mở tập tin my.cnf. Trong tập tin này, tìm phần [mysqld]. Thêm dòng sau vào phần này:

Mã nguồn [Chọn]
innodb_force_recovery = 1
Bây giờ lưu tập tin 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 khích vì nó có thể làm hỏng dữ liệu.

Mã nguồn [Chọn]
$ service mysqld restart
Xuất dữ liệu bảng vào một tập tin mới với lệnh mysqldump. Để làm như vậy, hãy sử dụng lệnh sau:

Mã nguồn [Chọn]
$ mysqldump –u user –p db_name table_name > single_dbtable_dump.sql
Xóa bảng bị hỏng khỏi cơ sở dữ liệu.

Mã nguồn [Chọn]
$ mysql –u user –p –execute="DROP TABLE db_name.table_name"
Khôi phục bảng từ tập tin dump .sql.

Mã nguồn [Chọn]
$ mysql –u user –p < single_dbtable_dump.sql
Sau khi các tập tin được sửa chữa, hãy tắt chế độ khôi phục như sau:

Mã nguồn [Chọn]
# innodb_force_recovery = 1
Bây giờ bạn có thể khởi động lại dịch vụ MySQL ở chế độ bình thường.

Mã nguồn [Chọn]
$ service mysqld start
4. Sửa chửa cơ sở dữ liệu MySQL bị hỏng với sự trợ giúp của phần mềm.

Chúng ta có thể sửa chửa cơ sở dữ liệu MySQL bị hỏng với sự trợ giúp của phần mềm bằng cách sử dụng 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 tốt hơn và nhanh hơn trong việc sửa chữa cơ sở dữ liệu bị hỏng bằng phương pháp thủ công.

Đâ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: https://www.stellarinfo.com/mysql-repair.php

Công cụ sửa chữa cơ sở dữ liệu MySQL này sửa chữa 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 tập tin InnoDB (.ibdata, .ibd và .frm) và tập tin 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, dạng 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.

Mình hy vọng rằng các phương pháp trên sẽ giúp bạn sửa chữa được cơ sở dữ liệu MySQL bị hỏng.