Cấu hình innodb_force_recovery để sửa lỗi MySQL

1. Forcing InnoDB Recovery?

Để kiểm tra lỗi cơ sở dữ liệu, bạn có thể kết xuất các bảng của mình khỏi cơ sở dữ liệu với SELECT … INTO OUTFILE.

Thông thường, hầu hết dữ liệu thu được theo cách này là nguyên vẹn, tuy nhiên những sự cố nghiêm trọng có thể khiến các dịch vụ (MySQL) bị tắt bất ngờ và không thể khởi chạy sau đó. Trong những trường hợp như vậy, bạn có thể sử dụng tùy chọn để buộc công cụ lưu trữ khởi động trong khi ngăn các hoạt động nền chạy, để bạn có thể kết xuất các bảng của mình.

Thông thường innodb_force_recovery là 0 theo mặc định (khởi động bình thường mà không bắt buộc khôi phục). Các giá trị của innodb_force_recovery là từ 1 đến 6. Giá trị lớn hơn bao gồm chức năng của các giá trị nhỏ hơn. Ví dụ: giá trị 3 bao gồm tất cả các chức năng của giá trị 1 và 2.

Tuy nhiên, chỉ đặt thành innodb_force_recovery giá trị lớn hơn 0 trong trường hợp khẩn cấp. Trước khi làm như vậy, hãy đảm bảo rằng bạn có một bản sao lưu cơ sở dữ liệu của mình trong trường hợp bạn cần tạo lại nó. Giá trị từ 4 trở lên có thể làm hỏng tệp dữ liệu vĩnh viễn

2. Cấu hình trong file my.cnf

[mysqld]

innodb_force_recovery = “value”

Tùy chọn này chi áp dụng cho database sử dụng kiến innodb.

– Thiết lập giá trị innodb_force_recovery = 1 (SRV_FORCE_IGNORE_CORRUPT) : sẽ không sửa lại các dữ liệu bị lỗi. Nó sẽ bỏ qua các lỗi này để cho phép sao lưu lại dữ liệu trước khi xây dựng lại database.

– Thiết lập giá trị: innodb_force_recovery = 2 (SRV_FORCE_NO_BACKGROUND) : sẽ ngăn chặn các luồng master đang vận hành . Nếu có lỗi xảy ra khi tiến trình lọc đang hoạt động. Giá trị recovery này sẽ ngăn chặn lại.

– Thiết lập giá trị: innodb_force_recovery = 3 (SRV_FORCE_NO_TRX_UNDO) : Không chạy transaction rollbacks sau khi khôi phục.

– Thiết lập giá trị: innodb_force_recovery = 4 (SRV_FORCE_NO_IBUF_MERGE): Ngăn chặn việc thêm các tác vụ hợp nhất bộ nhớ đệm. Nếu có lỗi xảy ra thì sẽ không thực hiện, không thống kê tính toán các table. Giá trị này có thể làm hỏng file data.

– Thiết lập giá trị: innodb_force_recovery = 5 (SRV_FORCE_NO_UNDO_LOG_SCAN) : Bỏ qua undo logs khi start database, InnoDB xử lý ngay các transaction chưa hoàn tất. Giá trị này có thể làm hỏng data file.

– Thiết lập giá trị: innodb_force_recovery = 6 (SRV_FORCE_NO_LOG_REDO): Không thực hiện log roll-forward trong kết nối với việc khôi phục. Giá trị này có thể làm hỏng data file

– Roll forward là khôi phục tất cả giao dịch đã hoàn thành khi hệ thống xảy ra sự cố.

Leave a Reply