Tôi chỉ khôi phục bảng từ .frm
và .idb
tệp.
Nhận truy vấn SQL để tạo bảng
Nếu bạn đã biết lược đồ các bảng của mình, bạn có thể bỏ qua bước này.
-
Trước tiên, hãy cài đặt MySQL Utilities .Sau đó, bạn có thể sử dụng
mysqlfrm
lệnh trong dấu nhắc lệnh (cmd). -
Thứ hai, lấy các truy vấn SQL từ
.frm
các tệp sử dụngmysqlfrm
lệnh:mysqlfrm --diagnostic <path>/example_table.frm
Sau đó, bạn có thể nhận được truy vấn SQL để tạo bảng có cấu trúc giống như thế này:
CREATE TABLE `example_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(150) NOT NULL,
`photo_url` varchar(150) NOT NULL,
`password` varchar(600) NOT NULL,
`active` smallint(6) NOT NULL,
`plan` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;
Tạo bảng
Tạo (các) bảng bằng cách sử dụng truy vấn SQL ở trên.
Nếu dữ liệu cũ vẫn tồn tại, trước tiên bạn có thể phải loại bỏ cơ sở dữ liệu và bảng tương ứng. Đảm bảo rằng bạn có bản sao lưu các tệp dữ liệu.
Khôi phục dữ liệu
Chạy truy vấn này để xóa dữ liệu bảng mới:
ALTER TABLE example_table DISCARD TABLESPACE;
Thao tác này sẽ xóa các kết nối giữa .frm
mới và (mới, trống) .idb
tập tin. Ngoài ra, hãy xóa .idb
tệp trong thư mục.
Sau đó, đặt .idb
cũ tập tin vào thư mục mới, ví dụ:
cp backup/example_table.ibd <path>/example_table.idb
Đảm bảo rằng .ibd
các tệp có thể được đọc bởi mysql
người dùng, ví dụ:bằng cách chạy chown -R mysql:mysql *.ibd
trong thư mục.
Chạy truy vấn này để nhập dữ liệu cũ:
ALTER TABLE example_table IMPORT TABLESPACE;
Thao tác này nhập dữ liệu từ .idb
và sẽ khôi phục dữ liệu.