2010-09-23 12 views
18

Có điều gì tốt hơn (nhanh hơn hoặc nhỏ hơn) so với các trang văn bản thuần túy CREATE TABLE và câu lệnh INSERT để bán các cơ sở dữ liệu MySql không? Nó có vẻ vô cùng hiệu quả đối với một lượng lớn dữ liệu.Có định dạng kết xuất nhị phân MySql không? Hoặc bất cứ điều gì tốt hơn so với các câu lệnh INSERT văn bản thuần túy?

Tôi nhận ra rằng các tệp cơ sở dữ liệu cơ bản có thể được sao chép, nhưng tôi cho rằng chúng sẽ chỉ hoạt động trong cùng một phiên bản MySql mà chúng đến từ đó.

Có công cụ nào mà tôi không biết hoặc lý do thiếu này không?

+0

Tôi bị sốc vì điều này không được cung cấp bởi mysql. Một bãi chứa nhị phân sẽ nhanh hơn nhiều. –

Trả lời

10

Không chắc chắn nếu đây là những gì bạn đang sau, nhưng tôi thường ống đầu ra của mysqldump trực tiếp đến gzip hoặc bzip2 (v.v ...). Nó có xu hướng nhanh hơn đáng kể so với bán phá giá hoặc một cái gì đó như thế, và các tệp đầu ra nhỏ hơn nhiều nhờ nén.

mysqldump --all-databases (other options) | gzip > mysql_dump-2010-09-23.sql.gz 

Cũng có thể để đổ vào XML với các tùy chọn --xml nếu bạn đang tìm kiếm "tính di động" tại các chi phí tiêu thụ không gian đĩa (nhiều) hơn so với SQL gzipped ...

+1

Tôi thích nó, và tôi cũng nén các tệp .sql của mình, nhưng tôi tự hỏi tại sao MySql không thể xuất dưới định dạng nhị phân. –

+0

vâng ... Tôi đã không xem xét kỹ lưỡng dự án này, nhưng có lẽ nó sẽ được bạn quan tâm: http://2ze.us/ym Tôi nghi ngờ nó vẫn đang sử dụng mysqldump thông thường dưới mui xe. – codekoala

+0

Rõ ràng nếu bảng của bạn là tất cả MyISAM, bạn có thể sử dụng mysqlhotcopy: http://2ze.us/hm – codekoala

1

Đó là đáng chú ý là MySQL có một cú pháp đặc biệt để thực hiện chèn số lượng lớn. Từ the manual:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 

Sẽ chèn 3 hàng vào một thao tác. Vì vậy, tải theo cách này không phải là không hiệu quả vì nó có thể khác với một tuyên bố mỗi hàng, và thay vì 129 byte trong 3 câu lệnh INSERT, đây là 59 byte, và lợi thế đó chỉ lớn hơn các hàng bạn có.

5

Xin lỗi, không có kết xuất nhị phân nào cho MySQL. Tuy nhiên các bản ghi nhị phân của MySQL đặc biệt cho mục đích sao lưu và sao lưu cơ sở dữ liệu http://dev.mysql.com/doc/refman/5.5/en/binary-log.html. Chúng không khó cấu hình. Chỉ những thay đổi như cập nhật và xóa mới được ghi lại, do đó, mỗi tệp nhật ký (được tạo tự động bởi MySQL) cũng là bản sao lưu gia tăng của các thay đổi trong DB. Bằng cách này, bạn có thể lưu lại toàn bộ ảnh chụp nhanh của db (một lần trong một tháng?), Và sau đó chỉ lưu trữ các tệp nhật ký và trong trường hợp bị lỗi, hãy khôi phục ảnh chụp mới nhất và chạy qua nhật ký.

0

Tôi chưa bao giờ thử điều này, nhưng bảng mysql chỉ là các tệp nhị phân trên ổ cứng? Bạn không thể tự sao chép các tệp bảng? Có lẽ đó là cơ bản những gì bạn đang yêu cầu.

Tôi không biết cách ghép lại với nhau, nhưng có vẻ như với tôi một bản sao của/var/lib/mysql sẽ làm thủ thuật

Các vấn đề liên quan