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
5
A
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.
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ć!
Dzięki, wypróbowałeś to, ale potem po prostu przestajesz aktualizować DB w ogóle – z3po
Czy schemat został zmieniony od czasu utworzenia kopii zapasowej? – Barmar
Nie, nic się nie zmieniło. Próbowałem także ze świeżo utworzonymi kopiami zapasowymi. – z3po