Khi công cụ lưu trữ InnoDB được sử dụng, một. Tệp FRM được Máy chủ MySQL sử dụng để lưu trữ lược đồ bảng và. Tệp IBD được sử dụng để lưu trữ dữ liệu và chỉ mục của cơ sở dữ liệu MySQL. Trong trường hợp vô tình xóa dữ liệu hoặc hỏng cơ sở dữ liệu MySQL, bạn có thể khôi phục dữ liệu từ. FRM và. tệp IBD
Nếu bạn có bản sao lưu lược đồ, bạn có thể sử dụng tiện ích có sẵn trực tuyến để trích xuất lược đồ từ. tập tin FRM
Các bước để khôi phục dữ liệu từ. FRM và. Tệp IBD
Bước 1 – Tạo cơ sở dữ liệu MySQL và tạo lại bảng
Ghi chú. Ở đây chúng ta sẽ sử dụng phpMyAdmin để tạo cơ sở dữ liệu MySQL
- Đăng nhập vào phpMyAdmin
- Nhập tên cơ sở dữ liệu [ví dụ: nhân viên] và nhấp vào Tạo. Điều này sẽ tạo ra một cơ sở dữ liệu có tên nhân viên
- Điều hướng đến đường dẫn chứa cơ sở dữ liệu MySQL của bạn và bạn có thể thấy cơ sở dữ liệu mới được thêm vào. Tuy nhiên, cơ sở dữ liệu sẽ không có bất kỳ. FRM và. tệp IBD. Trong trường hợp của chúng tôi, cơ sở dữ liệu có thể được tìm thấy trong C. \xampp\mysql\data nhưng đường dẫn có thể khác nhau dựa trên công cụ web bạn đang sử dụng để truy cập cơ sở dữ liệu MySQL
- Mở cơ sở dữ liệu 'nhân viên' và bạn có thể thấy không có bảng nào trong đó
Bước 2 – Tìm lược đồ bảng
Ghi chú. Nếu lược đồ bảng có sẵn, hãy chuyển sang bước tiếp theo
Nếu bạn không có lược đồ bảng, hãy tải xuống Tiện ích MySQL. Được phát hành bởi Oracle, MySQL Utilities bao gồm một tập lệnh để thực hiện một số tác vụ DBA phổ biến một cách dễ dàng. Mysqlfrm là một trong những công cụ trong bộ tiện ích, bạn có thể sử dụng để khôi phục cấu trúc bảng
Sau khi tải xuống công cụ, hãy chạy lệnh sau để tìm lược đồ cơ sở dữ liệu
mysql. FRM --tên tệp đường dẫn chẩn đoán. đường dẫn từ
Lệnh này đọc tất cả thông tin từ. tệp frm theo từng byte mà không cần phiên bản MySQL
Ghi chú. Mặc dù phương pháp này rất hữu ích để truy xuất dữ liệu từ một. FRM, nó có thể không khôi phục được tất cả dữ liệu. Để khôi phục đối chiếu hoặc bộ ký tự, bạn cần chạy lệnh sau để khôi phục thông tin từ. tập tin FRM
mysqlfrm --server=root@127. 0. 0. 1 --cổng 3307. /tên tệp. frm
Bước 3 – Tạo lại bảng cơ sở dữ liệu
Trong cơ sở dữ liệu mới tạo [i. e. nhân viên trong trường hợp của chúng tôi], hãy tạo một bảng mới bằng cách sử dụng tập lệnh được tạo ở bước 2. Thực thi tập lệnh sẽ tạo một tập lệnh mới. FRM và. Tệp IBD trong thư mục dữ liệu cơ sở dữ liệu
Bước 4 – Xóa cái mới. Tệp IBD
Chạy lệnh sau để xóa cái mới. tệp IBD
THAY ĐỔI BẢNG_tên_bảng HỦY BỎ TABLESPACE;
Lệnh này phá vỡ liên kết giữa MySQL và vùng bảng để loại bỏ. tệp IBD
Bước 5 – Sao chép cái cũ. tệp IBD
Bây giờ, sao chép bản gốc. Tệp IBD trong cơ sở dữ liệu mới
Bước 6 – Nhập Tablespace
Khôi phục liên kết giữa bảng MySQL và vùng bảng bằng cách thực hiện lệnh bên dưới
THAY ĐỔI TABLE table_name NHẬP KHẨU TABLESPACE;
Các bước này sẽ giúp bạn khôi phục dữ liệu từ. FRM và. tệp IBD. Nhưng, nó có những nhược điểm nhất định
- Bạn sẽ cần thực hiện thủ công tất cả các bước cho từng bảng để khôi phục cơ sở dữ liệu MySQL;
- Sử dụng mysqlfrm để trích xuất định nghĩa CREATE TABLE có thể dẫn đến lược đồ không khớp
- Mysqlfrm không thể truy xuất chuỗi số AI và các ràng buộc FK
Một giải pháp thay thế tốt hơn để khôi phục dữ liệu từ. FRM và. Tệp IBD
Sử dụng một công cụ sửa chữa MySQL chuyên dụng như Stellar Repair for MySQL cung cấp một giải pháp thay thế dễ dàng hơn để khôi phục cơ sở dữ liệu của bạn và tất cả dữ liệu của nó với thời gian ngừng hoạt động tối thiểu. Ngoài ra, phần mềm có thể phục hồi dữ liệu. FRM và. Các tệp IBD mà không sửa đổi lược đồ bảng. Bạn có thể xác minh dữ liệu trước khi lưu bằng cách tải xuống phiên bản demo của phần mềm
Câu hỏi thường gặp
Q. Khi cố gắng loại bỏ. IBD tôi gặp lỗi “Không thể hoàn thành tác vụ này vì tệp đang mở trong. ” Xin hãy giúp tôi sửa nó
A. Bạn sẽ gặp lỗi như vậy nếu. Tệp IBD bạn đang cố xóa đã được sử dụng. Để khắc phục lỗi, hãy đóng dịch vụ MySQL của bạn, xóa tệp rồi khởi động lại dịch vụ MySQL
Q. Tôi đã sử dụng tiện ích mysqlfrm để khôi phục câu lệnh CREATE TABLE cho một bảng. Tôi đã có thể tạo lại cấu trúc bảng bằng cách thực hiện câu lệnh CREATE, đã xóa. IBD và sao chép tệp cũ. tệp IBD. Tuy nhiên, khi cố gắng nhập không gian bảng, lược đồ bảng không khớp. Tôi có thể làm gì để giải quyết vấn đề này?