2013-06-06 19 views
5

Tôi đang tìm cách khôi phục DB từ bản sao lưu trước. Tuy nhiên, sao lưu không chỉ đơn giản là ghi đè tất cả các bản ghi hiện có mà thay vào đó chỉ thêm sự khác biệt giữa DB hiện tại và tệp sao lưu. Nếu không có bản ghi "không tồn tại" được lưu trữ trong bản sao lưu, không có gì xảy ra. Các bản sao lưu được thực hiện với mysqldump. Bất kì manh mối nào? Cảm ơn trướcnhập mysql chỉ thiếu hàng

Trả lời

5

Xóa câu lệnh DROP TABLECREATE TABLE khỏi tệp kết xuất. Thay đổi các tuyên bố INSERT thành INSERT IGNORE. Sau đó tải tệp sao lưu và không nên cập nhật bất kỳ hàng trùng lặp nào.

+0

Cảm ơn, đã thử nhưng sau đó nó chỉ dừng cập nhật DB ở tất cả – z3po

+0

Sơ đồ có thay đổi kể từ khi sao lưu không? – Barmar

+0

Không, không có gì thay đổi. Đã thử với các bản sao lưu mới được thực hiện cũng như – z3po

8

Đây là một câu trả lời ít thủ công:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database > database.sql

Đó lệnh xuất khẩu với -t --insert-ignore --skip-opt tùy chọn này sẽ cung cấp cho bạn một file sql bãi không có DROP TABLE hoặc CREATE TABLE lệnh và mỗi INSERT hiện nay là một INSERT IGNORE.

BONUS:

này sẽ đổ một bảng duy nhất trong cùng một cách:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database table_name > table_name.sql

tôi cần ngày hôm nay và không thể giúp đỡ, nhưng để chia sẻ nó!