Hướng dẫn how do i restore a deleted file in mysql? - làm cách nào để khôi phục tệp đã xóa trong mysql?

Thứ Năm, ngày 30 tháng 11 năm 2006

Cách khôi phục các tệp cơ sở dữ liệu MySQL vô tình xóa

Gần đây, tôi tình cờ thấy một bài đăng trên diễn đàn MySQL của Đức từ người dùng vô tình xóa tất cả các tệp bảng khỏi thư mục dữ liệu của máy chủ MySQL với tập lệnh shell sai. Anh ấy đã rất ngạc nhiên khi phát hiện ra rằng máy chủ vui vẻ tiếp tục phục vụ các yêu cầu và trang web của anh ấy vẫn hoạt động đầy đủ, mặc dù

/var/lib/mysql/

hoàn toàn là emtpy! Lý do cho điều này một cách ngắn gọn:

RM

Lệnh chỉ xóa tham chiếu đến các tệp bảng khỏi thư mục cơ sở dữ liệu, bản thân các tệp không bị xóa khỏi hệ thống tệp

mysqld

Quá trình vẫn có các tập tin được mở. Vì vậy, miễn là một quá trình giữ một tệp mở, kernel sẽ không giải phóng không gian đĩa bị chiếm bởi tệp và nó sẽ vẫn còn nguyên, mặc dù không còn hiển thị.

Tất nhiên, người dùng hiện đang tuyệt vọng để khôi phục các tệp bảng bị xóa và đã yêu cầu trợ giúp. May mắn thay, việc phục hồi trong trường hợp này là khá đơn giản. Trước tiên, bạn nên tắt ứng dụng của mình để tránh hoạt động tiếp theo trên cơ sở dữ liệu bị ảnh hưởng. Quan trọng: Bạn không được tắt máy chủ MySQL, vì điều này sẽ đóng tham chiếu mở cuối cùng vào các tệp bảng! Bây giờ bạn chỉ có thể sử dụngImportant: you must not shut down the MySQL Server, as this would close the last open reference to the table files! Now you can simply use

mysqldump --opt> cơ sở dữ liệu.sql

Để thực hiện một kết xuất SQL của các bảng đã xóa. Vì máy chủ MySQL vẫn có thể truy cập các tệp bảng mở, kết xuất sẽ chứa toàn bộ nội dung và sau đó có thể được sử dụng để khôi phục lại cơ sở dữ liệu. Bây giờ bạn nên khởi động lại máy chủ MySQL để nó đóng các mô tả tệp vẫn mở của các tệp bảng bị xóa. Ngoài ra, bạn có thể sử dụng

Bàn thả

hoặc

Thả cơ sở dữ liệu

Để xóa đúng các tài liệu tham khảo, trong trường hợp bạn không muốn tắt toàn bộ máy chủ. Bây giờ bạn có thể khôi phục các bảng bị thiếu của mình từ bãi rác SQL như bình thường và có thể khởi động lại ứng dụng của bạn!

Lưu ý rằng thủ thuật này chỉ hoạt động trên các tệp bảng đã bị xóa ở cấp hệ thống tệp, không phải sau khi bạn sử dụng

BẢNG/Cơ sở dữ liệu thả

, vì vậy, đó không phải là một hàm hoàn tác ma thuật cho các lệnh này - chỉ khôi phục từ bản sao lưu gần đây [ví dụ: được thực hiện với mylvmbackup, gợi ý, gợi ý] sẽ giúp trong trường hợp này. Ngoài ra, máy chủ MySQL phải đã mở các bảng trước đó. Máy chủ MySQL mới bắt đầu chưa mở bất kỳ tệp bảng nào ngoài các tệp trong

mysql

Cơ sở dữ liệu hệ thống.

Nhân tiện, có một bài viết liên quan "Mang lại các tệp đã xóa bằng LSOF" trên Linux.com bao gồm chủ đề khôi phục các tệp đã xóa [nhưng vẫn mở] ở cấp độ chung hơn và cũng cung cấp thêm một số thông tin cơ bản về Linux Internals . Đáng đọc!

38

Làm cách nào để khôi phục tệp .sql trong mysql?
Learn more.

Có thể khôi phục bảng về lần trước với dữ liệu nếu tất cả dữ liệu bị xóa một cách tình cờ.

Hỏi ngày 3 tháng 8 năm 2011 lúc 10:10Aug 3, 2011 at 10:10

2

Có một giải pháp khác, nếu bạn có nhật ký nhị phân hoạt động trên máy chủ của mình, bạn có thể sử dụng mysqlbinlog

tạo tệp SQL với nó

mysqlbinlog binary_log_file > query_log.sql

Sau đó tìm kiếm các hàng bị thiếu của bạn. Nếu bạn không có nó hoạt động, không có giải pháp nào khác. Thực hiện sao lưu lần sau.

Đã trả lời ngày 3 tháng 8 năm 2011 lúc 10:15Aug 3, 2011 at 10:15

Mihai Iorgamihai IorgaMihai Iorga

38.7K15 Huy hiệu vàng107 Huy hiệu bạc106 Huy hiệu đồng15 gold badges107 silver badges106 bronze badges

5

Loại của. Sử dụng phpmyadmin, tôi chỉ xóa một hàng quá nhiều. Nhưng tôi đã bắt được nó trước khi tôi tiến hành và có hầu hết dữ liệu từ thông báo XÓA XÓA. Tôi đã có thể xây dựng lại hồ sơ. Nhưng thông điệp xác nhận đã cắt ngắn một số bình luận văn bản.

Ai đó hiểu biết hơn tôi về phpmyadmin có thể biết về một cài đặt để bạn có thể nhận được tiếng vang hoàn chỉnh hơn về thông báo Xóa Xóa. Với một thông báo xóa hoàn toàn có sẵn, nếu bạn chậm lại và bắt lỗi, bạn có thể khôi phục toàn bộ bản ghi.

.

Đã trả lời ngày 6 tháng 11 năm 2012 lúc 14:58Nov 6, 2012 at 14:58

Aardvark27Aardvark27Aardvark27

511 Huy hiệu bạc1 Huy hiệu đồng1 silver badge1 bronze badge

Như Mitch đã đề cập, việc sao lưu dữ liệu lên là phương pháp tốt nhất.

Tuy nhiên, có thể trích xuất dữ liệu bị mất một phần tùy thuộc vào tình huống hoặc máy chủ DB được sử dụng. Đối với hầu hết các phần, bạn không gặp may nếu bạn không có bất kỳ bản sao lưu nào.

Đã trả lời ngày 3 tháng 8 năm 2011 lúc 10:14Aug 3, 2011 at 10:14

Tôi xin lỗi, BU không thể thực hiện được, trừ khi bạn tạo tệp sao lưu trước đó.

EDIT: Thật ra điều đó là có thể, nhưng nó rất khó khăn và bạn không nên nghĩ về nó nếu dữ liệu không thực sự, thực sự quan trọng. Bạn thấy: Khi dữ liệu bị xóa khỏi máy tính, nó vẫn ở cùng một vị trí trên đĩa, chỉ có các lĩnh vực của nó được đánh dấu là trống. Vì vậy, dữ liệu vẫn còn nguyên vẹn, ngoại trừ nếu nó bị ghi đè bởi dữ liệu mới. Có một số chương trình được thiết kế cho mục đích này và có những công ty chuyên phục hồi dữ liệu, mặc dù chúng khá đắt.

Đã trả lời ngày 3 tháng 8 năm 2011 lúc 10:14Aug 3, 2011 at 10:14

Tôi xin lỗi, BU không thể thực hiện được, trừ khi bạn tạo tệp sao lưu trước đó.JanLikar

EDIT: Thật ra điều đó là có thể, nhưng nó rất khó khăn và bạn không nên nghĩ về nó nếu dữ liệu không thực sự, thực sự quan trọng. Bạn thấy: Khi dữ liệu bị xóa khỏi máy tính, nó vẫn ở cùng một vị trí trên đĩa, chỉ có các lĩnh vực của nó được đánh dấu là trống. Vì vậy, dữ liệu vẫn còn nguyên vẹn, ngoại trừ nếu nó bị ghi đè bởi dữ liệu mới. Có một số chương trình được thiết kế cho mục đích này và có những công ty chuyên phục hồi dữ liệu, mặc dù chúng khá đắt.8 silver badges20 bronze badges

Janlikarjanlikar

1.2448 Huy hiệu bạc20 Huy hiệu Đồng

Đối với các bảng Innodb, Percona có một công cụ phục hồi có thể giúp ích. Nó không an toàn hoặc hoàn hảo, và bạn dừng máy chủ MySQL của mình nhanh như thế nào sau khi xóa tình cờ có tác động lớn. Nếu bạn đủ nhanh, các thay đổi là bạn có thể khôi phục khá nhiều dữ liệu, nhưng việc khôi phục tất cả dữ liệu là không thể.Sep 17, 2013 at 15:12

Của Cours, bản sao lưu hàng ngày thích hợp, binlogs và có thể là nô lệ sao chép [không giúp ích cho việc xóa tình cờ nhưng không giúp được gì trong trường hợp lỗi phần cứng] là cách để đi, nhưng công cụ này có thể cho phép bạn lưu nhiều dữ liệu như có thể khi bạn chưa có những thứ đó.Wrikken

Đã trả lời ngày 17 tháng 9 năm 2013 lúc 15:128 gold badges94 silver badges135 bronze badges

1

WrikkenWrikken

Đã trả lời ngày 3 tháng 8 năm 2011 lúc 10:15Aug 3, 2011 at 10:15

Mihai Iorgamihai IorgaTjekkles

38.7K15 Huy hiệu vàng107 Huy hiệu bạc106 Huy hiệu đồng8 gold badges35 silver badges52 bronze badges

Loại của. Sử dụng phpmyadmin, tôi chỉ xóa một hàng quá nhiều. Nhưng tôi đã bắt được nó trước khi tôi tiến hành và có hầu hết dữ liệu từ thông báo XÓA XÓA. Tôi đã có thể xây dựng lại hồ sơ. Nhưng thông điệp xác nhận đã cắt ngắn một số bình luận văn bản.

Ai đó hiểu biết hơn tôi về phpmyadmin có thể biết về một cài đặt để bạn có thể nhận được tiếng vang hoàn chỉnh hơn về thông báo Xóa Xóa. Với một thông báo xóa hoàn toàn có sẵn, nếu bạn chậm lại và bắt lỗi, bạn có thể khôi phục toàn bộ bản ghi.

Đã trả lời ngày 3 tháng 8 năm 2011 lúc 10:15Aug 3, 2011 at 10:15

Mihai Iorgamihai IorgaMyISAM tables, then you can recover any data you deleted, just

38.7K15 Huy hiệu vàng107 Huy hiệu bạc106 Huy hiệu đồngmysql/data/[your_db]/[your_table].MYD

Loại của. Sử dụng phpmyadmin, tôi chỉ xóa một hàng quá nhiều. Nhưng tôi đã bắt được nó trước khi tôi tiến hành và có hầu hết dữ liệu từ thông báo XÓA XÓA. Tôi đã có thể xây dựng lại hồ sơ. Nhưng thông điệp xác nhận đã cắt ngắn một số bình luận văn bản.

Ai đó hiểu biết hơn tôi về phpmyadmin có thể biết về một cài đặt để bạn có thể nhận được tiếng vang hoàn chỉnh hơn về thông báo Xóa Xóa. Với một thông báo xóa hoàn toàn có sẵn, nếu bạn chậm lại và bắt lỗi, bạn có thể khôi phục toàn bộ bản ghi.Apr 8, 2016 at 15:03

.jmp

Đã trả lời ngày 6 tháng 11 năm 2012 lúc 14:583 gold badges28 silver badges45 bronze badges

Bạn có thể hoàn tác xóa trong mysql không?

Bạn có thể hoàn tác xóa trong mysql không? Khi hàng bị xóa, nó đã biến mất. Bạn có thể phải sử dụng sao lưu để khôi phục dữ liệu. Các ngoại lệ cho điều này là nếu bạn đang thực hiện xóa bên trong một giao dịch mở, trong những trường hợp đó, bạn có thể "rollback" giao dịch để hoàn tác mọi thay đổi được thực hiện bên trong giao dịch.You can will have to use a backup to restore the data. The exceptions to this are if you are doing a delete inside an open Transaction, in those cases you can "Rollback" the transaction to undo any changes made inside the transaction.

Làm cách nào để khôi phục một tệp đã xóa trong SQL?

Khôi phục cơ sở dữ liệu SQL đã xóa mà không cần sao lưu bằng cách khôi phục tệp và phần mềm khôi phục MS SQL..
Chọn một vị trí để bắt đầu tìm dữ liệu ..
Quét phân vùng của bạn nơi bạn lưu tệp cơ sở dữ liệu SQL Server ..
Xem trước và khôi phục tệp cơ sở dữ liệu đã xóa ..

Làm cách nào để khôi phục tệp .sql trong mysql?

Cách khôi phục MySQL với mysqldump..
Bước 1: Tạo cơ sở dữ liệu mới.Trên hệ thống lưu trữ cơ sở dữ liệu, sử dụng MySQL để tạo cơ sở dữ liệu mới.Hãy chắc chắn rằng bạn đã đặt tên cho nó giống như cơ sở dữ liệu bạn đã mất.....
Bước 2: Khôi phục kết xuất MySQL.Để khôi phục bản sao lưu MySQL, Enter: MySQL -U [user] -p [database_name]

Bài Viết Liên Quan

Chủ Đề