Cách khôi phục một trong các cơ sở dữ liệu MySQL của tôi từ các tệp .myd
, .myi
, .frm
?Cách khôi phục cơ sở dữ liệu MySQL từ các tệp .myd, .myi, .frm
Trả lời
Bạn có thể sao chép tệp vào thư mục thư mục con được đặt tên thích hợp của thư mục dữ liệu miễn là phiên bản chính xác của mySQL và bạn đã giữ lại tất cả các tệp được liên kết trong thư mục đó. Nếu bạn không có tất cả các tệp, tôi chắc chắn bạn sẽ gặp sự cố.
Nếu tôi không có phiên bản MySQL giống CHÍNH XÁC, tôi phải làm gì? –
Nếu đây là các bảng MyISAM, sau đó plopping tệp .FRM, .MYD và .MYI vào thư mục cơ sở dữ liệu (ví dụ: /var/lib/mysql/dbname
) sẽ làm cho bảng đó khả dụng. Nó không phải là cùng một cơ sở dữ liệu như chúng đến từ, cùng một máy chủ, cùng một phiên bản MySQL, hoặc cùng một kiến trúc. Bạn cũng có thể cần thay đổi quyền sở hữu cho thư mục (ví dụ: chown -R mysql:mysql /var/lib/mysql/dbname
)
Lưu ý rằng quyền (GRANT
, v.v.) là một phần của cơ sở dữ liệu mysql
. Vì vậy, chúng sẽ không được khôi phục cùng với các bảng; bạn có thể cần phải chạy GRANT
báo cáo thích hợp để tạo người dùng, cung cấp cho truy cập, vv (Khôi phục cơ sở dữ liệu mysql
là có thể, nhưng bạn cần phải cẩn thận với các phiên bản MySQL và bất kỳ chạy cần thiết của tiện ích mysql_upgrade
.)
Trên thực tế , bạn có thể chỉ cần .RM (cấu trúc bảng) và .MYD (bảng dữ liệu), nhưng bạn sẽ phải sửa chữa bảng để xây dựng lại .MYI (chỉ mục).
Hạn chế duy nhất là nếu bạn hạ cấp, bạn nên kiểm tra ghi chú phát hành (và có thể chạy bảng sửa chữa). Phiên bản MySQL mới hơn có thêm các tính năng, tất nhiên.
[Mặc dù nó phải rõ ràng, nếu bạn trộn và khớp các bảng, tính toàn vẹn của các mối quan hệ giữa các bảng đó là vấn đề của bạn; MySQL sẽ không quan tâm, nhưng ứng dụng của bạn và người dùng của bạn có thể. Ngoài ra, phương pháp này không làm việc ở tất cả cho các bảng InnoDB. Chỉ MyISAM, nhưng xem xét các tệp bạn có, bạn có MyISAM]
Điều này có thực sự hoạt động nếu không thêm các mục thích hợp vào bảng information_schema không? Tôi có nghĩa là MySQL cần phải biết để tìm những tập tin này phải không? – Zenshai
Các bảng information_schema không thực sự tồn tại, chúng chỉ là các khung nhìn vào trạng thái cơ sở dữ liệu nội bộ. Xem http://dev.mysql.com/doc/refman/5.0/en/information-schema.html –
Wow, tôi cảm thấy dơ bẩn, nhưng bỏ toàn bộ thư mục từ những gì tôi nghĩ là một bản cài đặt MySQL4 vào MySQL5.1 của tôi kỳ diệu tái tạo các bảng. Không khởi động lại hoặc bất cứ điều gì (trên cửa sổ). – Dave
Tôi nghĩ rằng .myi bạn có thể sửa chữa từ bên trong mysql.
Nếu bạn thấy các loại thông báo lỗi này từ MySQL: Cơ sở dữ liệu không thực thi được truy vấn (truy vấn) 1016: Không thể mở tệp: 'sometable.MYI'. (errno: 145) Lỗi Msg: 1034: Tệp khóa không chính xác cho bảng: 'sometable'. Cố gắng sửa chữa nó thenb bạn có thể có một bảng bị hỏng hoặc bị hỏng.
Bạn có thể kiểm tra và sửa chữa bàn từ một dấu nhắc mysql như thế này:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
và bây giờ bảng của bạn nên được tốt:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
Một điều cần lưu ý:
Các Tệp .RM có cấu trúc bảng của bạn trong đó và cụ thể cho phiên bản MySQL của bạn.
Tệp .MYD KHÔNG dành riêng cho phiên bản, ít nhất không phải là phiên bản nhỏ.
Tệp .MYI là cụ thể, nhưng có thể được bỏ qua và được tạo lại với REPAIR TABLE
như các câu trả lời khác nói.
Điểm của câu trả lời này là để cho bạn biết rằng nếu bạn có một bảng lược đồ của các bảng, thì bạn có thể sử dụng nó để tạo cấu trúc bảng, sau đó thay thế các tệp .MYD đó bằng bản sao lưu của bạn, xóa các tệp MYI và sửa chữa tất cả. Bằng cách này, bạn có thể khôi phục các bản sao lưu của mình sang một phiên bản MySQL khác hoặc di chuyển toàn bộ cơ sở dữ liệu của bạn mà không cần sử dụng mysqldump
. Tôi đã tìm thấy điều này siêu hữu ích khi di chuyển cơ sở dữ liệu lớn.
Lưu ý rằng nếu bạn muốn xây dựng lại các tập tin MYI sau đó sử dụng đúng SỬA CHỮA TABLE là:
SỬA CHỮA TABLE sometable USE_FRM;
Nếu không, bạn có thể sẽ chỉ gặp lỗi khác.
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
Nó nói để đổi tên các tệp ib_ *. Tôi đã thực hiện nó và nó đã cho tôi trở lại db.
Đơn giản! Tạo cơ sở dữ liệu giả (nói abc)
Sao chép tất cả các tệp .myd, .myi, .frm này vào mysql \ data \ abc trong đó mysql \ data \ là nơi .myd, .myi, .frm cho tất cả cơ sở dữ liệu được cất giữ.
Sau đó truy cập phpMyadmin, truy cập db abc và bạn tìm thấy cơ sở dữ liệu của mình.
câu trả lời ngắn nhất và chính xác –
Đối với những người có Windows XP và đã cài đặt máy chủ MySQL 5.5 - vị trí cho cơ sở dữ liệu là C: \ Documents and Settings \ Tất cả người dùng \ Application Data \ MySQL \ MySQL Server 5.5 \ dữ liệu, trừ khi bạn thay đổi vị trí trong giao diện cài đặt MySql Workbench.
Câu hỏi đặt ra là khôi phục từ các loại tệp cụ thể, không phải nơi các tệp đó có thể được tìm thấy trên Windows XP MySQL 5.5. – Danpe
Tôi vừa phát hiện ra giải pháp cho việc này. Tôi đang sử dụng MySQL 5.1 hoặc 5.6 trên Windows 7.
- Sao chép tập tin .frm và ibdata1 từ tập tin cũ được đặt vào "C: \ Data Chương trình \ MySQL \ MSQLServer5.1 \ Data "
- Ngừng dụ SQL server trong trường hợp SQL hiện
- Chuyển đến datafolder nằm ở "C: Data \ Program \ MySQL \ MSQLServer5.1 \ Data"
- Dán thư mục ibdata1 và của cơ sở dữ liệu chứa s .frm tệp từ tệp bạn muốn khôi phục.
- Bắt đầu phiên bản MySQL.
Không cần phải định vị tệp .MYI và .MYD để khôi phục.
Thực hiện theo các bước sau (sau khi mọi thứ khác không thành công) và sử dụng cấp 'innodb_force_recovery = 4' (không chắc chắn là cần thiết trong trường hợp này). Ơn Chúa! –
FYI: 'ibdata1' là InnoDB, không phải MyISAM. – derobert
Mô tả ở trên không đủ để làm việc cho tôi (có lẽ là dày đặc hoặc lười biếng) vì vậy tôi đã tạo tập lệnh này khi tôi tìm thấy câu trả lời để trợ giúp tôi trong tương lai. Hy vọng nó sẽ giúp những người khác
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
Tôi tìm thấy một giải pháp để chuyển đổi các tập tin vào một tập tin .sql
(sau đó bạn có thể nhập các tập tin .sql
đến một máy chủ và phục hồi cơ sở dữ liệu), mà không cần phải truy cập vào thư mục /var
, do đó bạn không cần phải là quản trị viên máy chủ để thực hiện việc này.
Yêu cầu XAMPP hoặc MAMP được cài đặt trên máy tính của bạn.
- Sau khi bạn đã cài đặt XAMPP, điều hướng đến thư mục cài đặt (thường
C:\XAMPP
), và các thư mục conmysql\data
. Đường dẫn đầy đủ nên làC:\XAMPP\mysql\data
Bên trong, bạn sẽ thấy các thư mục của bất kỳ cơ sở dữ liệu nào khác mà bạn đã tạo. Sao chép & Dán thư mục đầy đủ các tệp
.myd
,.myi
và.frm
vào đó. Đường dẫn đến thư mục đó nênC:\XAMPP\mysql\data\foldername\.mydfiles
Sau đó tham quan
localhost/phpmyadmin
trong trình duyệt. Chọn cơ sở dữ liệu bạn vừa dán vào thư mụcmysql\data
và nhấp vào Xuất trong thanh điều hướng. Chọn xuất tệp dưới dạng tệp.sql
. Sau đó nó sẽ bật lên hỏi nơi lưu tệp
Và đó là nó! Bạn (hiện tại) có tệp .sql
chứa cơ sở dữ liệu ban đầu là các tệp .myd
, .myi
và .frm
. Sau đó bạn có thể nhập nó vào máy chủ khác thông qua phpMyAdmin bằng cách tạo cơ sở dữ liệu mới và nhấn 'Nhập' trong thanh điều hướng, sau đó làm theo các bước để nhập
- 1. Cơ sở dữ liệu MySQL InnoDB khôi phục
- 2. Khôi phục cơ sở dữ liệu mysql từ sao lưu thư mục dữ liệu
- 3. Khôi phục cơ sở dữ liệu MySQL từ các tệp vật lý
- 4. mysql khôi phục cơ sở dữ liệu khác nhau
- 5. Cách khôi phục cơ sở dữ liệu từ C#
- 6. Khôi phục bảng MySQL trở lại cơ sở dữ liệu
- 7. Khôi phục cơ sở dữ liệu Postgresql
- 8. smo khôi phục cơ sở dữ liệu
- 9. Làm cách nào để khôi phục một cơ sở dữ liệu từ mysqldump chứa nhiều cơ sở dữ liệu?
- 10. Cách khôi phục/tạo lại cơ sở dữ liệu 'mysql' mặc định của mysql
- 11. Làm thế nào để khôi phục cơ sở dữ liệu MySQL từ WAMP?
- 12. Quá trình sao lưu/khôi phục cơ sở dữ liệu
- 13. Khôi phục tệp .bak vào cơ sở dữ liệu từ xa
- 14. Khôi phục cần tây từ một cúp cơ sở dữ liệu
- 15. Cách sao lưu và khôi phục cơ sở dữ liệu ORACLE 11g Giống như cơ sở dữ liệu SQL2005
- 16. nơi MySQL lưu trữ tệp cơ sở dữ liệu?
- 17. khôi phục cơ sở dữ liệu .bson MongoDB và tệp .json
- 18. Android sao lưu và khôi phục cơ sở dữ liệu đến và đi từ SD-card
- 19. Khôi phục Cơ sở dữ liệu và thay đổi vị trí cho Tệp MDF
- 20. Cách khôi phục dữ liệu từ bảng cắt bớt
- 21. Cách tốt nhất để tự động khôi phục cơ sở dữ liệu mỗi giờ
- 22. Không thể khôi phục Cơ sở dữ liệu, Cơ sở dữ liệu đang được sử dụng theo phiên
- 23. cách thích hợp để sao lưu/khôi phục cơ sở dữ liệu rủi ro là gì?
- 24. Cách hiệu quả nhất để khôi phục nhiều cơ sở dữ liệu trong SQL 2008
- 25. Lấy tên cơ sở dữ liệu từ tệp bak
- 26. khôi phục tệp MDF gốc từ tệp bak
- 27. Cơ sở dữ liệu MySQL của các từ tiếng Anh?
- 28. cách tạo cơ sở dữ liệu mysql từ vải động
- 29. Tôi cần khôi phục cơ sở dữ liệu (mysql) sau mỗi 30 phút sử dụng lệnh cron
- 30. Khôi phục/sao lưu cơ sở dữ liệu Sql Server từ máy khách từ xa theo lập trình
Mặc dù tôi đã trả lời điều này, nó thực sự thuộc về Serverfault. – derobert
@chandrajeet bạn thực sự nên chấp nhận câu trả lời được bình chọn nhiều nhất. – Tower
Hey chandrajeet, tại sao bạn không chấp nhận câu trả lời của derobert? Tôi xác nhận nó cũng làm việc cho tôi. Nó không phải dành cho bạn? http://stackoverflow.com/help/someone-answers – bostaf