2013-06-06 15 views
5

Szukam sposobu przywrócenia mojego DB z wcześniejszej kopii zapasowej. Jednak kopia zapasowa nie powinna po prostu zastąpić wszystkich istniejących rekordów, ale zamiast tego dodać tylko różnicę między bieżącą bazą danych a plikiem kopii zapasowej. Jeśli w kopii zapasowej nie zapisano żadnych "nieistniejących" rekordów, nic nie powinno się wydarzyć. Kopie zapasowe zostały utworzone przy pomocy mysqldump. Jakieś wskazówki? Z góry dziękujęimport mysql tylko brakujące wiersze

Odpowiedz

5

Usunięcie z pliku zrzutu instrukcji DROP TABLE i . Zmień instrukcje INSERT na INSERT IGNORE. Następnie załaduj plik kopii zapasowej i nie powinien on aktualizować żadnych duplikatów wierszy.

+0

Dzięki, wypróbowałeś to, ale potem po prostu przestajesz aktualizować DB w ogóle – z3po

+0

Czy schemat został zmieniony od czasu utworzenia kopii zapasowej? – Barmar

+0

Nie, nic się nie zmieniło. Próbowałem także ze świeżo utworzonymi kopiami zapasowymi. – z3po

8

Oto odpowiedź mniej instrukcja:

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

To polecenie Export z opcjami -t --insert-ignore --skip-opt daje plik zrzutu SQL bez DROP TABLE lub CREATE TABLE poleceń i każdy INSERT jest teraz INSERT IGNORE.

BONUS:

Będzie to zrzucić pojedynczą tabelę w taki sam sposób:

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

Musiałem to dzisiaj i nie mógł pomóc, ale się nią dzielić!

Powiązane problemy