Sql Anywhere 11: Przywracanie przyrostowego niepowodzenia tworzenia kopii zapasowej

16

Chcemy tworzyć zdalne przyrostowe kopie zapasowe po pełnej kopii zapasowej. Pozwoli nam to przywrócić w razie awarii i uruchomić inną maszynę z kopiami zapasowymi możliwie zbliżonymi do czasu rzeczywistego z serwerami sieciowymi SQL Anywhere.

Wykonujemy pełną kopię zapasową w następujący sposób:

dbbackup -y -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)"
    c:\backuppath\full

To tworzy kopię zapasową bazy danych i plików dziennika i można je przywrócić zgodnie z oczekiwaniami. W przypadku przyrostowych kopii zapasowych wypróbowałem zarówno dzienniki transakcji na żywo, jak i przyrostowe, korzystając ze schematu zmiany nazwy, jeśli istnieje wiele przyrostowych kopii zapasowych:

dbbackup -y -t -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)"
    c:\backuppath\inc

dbbackup -y -l -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)" 
    c:\backuppath\live

Jednak po zastosowaniu dzienników transakcji podczas przywracania zawsze pojawia się błąd podczas stosowania dzienników transakcji do bazy danych:

10092: Nie można znaleźć definicji tabeli dla tabeli, do której odwołuje się dziennik transakcji

Polecenie przywracania dziennika transakcji to:

dbeng11 "c:\dbpath\dbname.db" -a "c:\backuppath\dbname.log"

Błąd nie określa, której tabeli nie można znaleźć, ale jest to kontrolowany test i żadne tabele nie są tworzone ani usuwane. Wstawiam kilka wierszy, a następnie próbuję przywrócić przyrostową kopię zapasową.

Czy ktoś zna prawidłowy sposób wykonywania przyrostowej kopii zapasowej i przywracania w Sql Anywhere 11?

AKTUALIZACJA: Myśląc, że może to być związane ze złożonością docelowej bazy danych, stworzyłem nową pustą bazę danych i usługę sieciową. Następnie dodano jedną tabelę z dwiema kolumnami i wstawiono kilka wierszy. Wykonałem pełną kopię zapasową, następnie wstawiłem i usunąłem kilka kolejnych wierszy i zatwierdzonych transakcji, a następnie wykonałem przyrostową kopię zapasową. Ten sam błąd również nie powiódł się przy próbie zastosowania przyrostowych kopii zapasowych dzienników transakcji po przywróceniu pełnej kopii zapasowej ...

Edytować:

Możesz użyć tego linku, aby zobaczyć to samo pytanie z nieco większą ilością opinii na temat SA: http://sqlanywhere-forum.sybase.com/questions/4760/restoring-incrementallive-backup-failure

Kin Shah
źródło
Możesz sprawdzić stronę sqlanywhere-forum.sybase, witrynę pytań i odpowiedzi specjalnie dla SQL Anywhere.
Graeme Perrow,
Dzięki i wow, ta strona wygląda niesamowicie znajomo ... jest stowarzyszona z SO, mimo że znajduje się w domenie sybase, czy uważasz, że mieliby zbyt wiele do roboty?

Odpowiedzi:

2

Podsumowanie informacji podanych w powyższym poście ....

Polecenie, którego użyłeś, służy do tworzenia kopii zapasowej na żywo, ale potrzebujesz przyrostowej kopii zapasowej. Podejście, które chcesz zastosować (w tym blogu ) używa nieco innych przełączników. Chcesz użyć -n -t -xprzełączników i -o, aby określić plik dziennika. Tak więc polecenie kończy się następująco:

dbbackup -n -t -x -c "eng=ServerName.DbName;uid=dba;pwd=sql;links=tcpip(host=ServerName)" -o "c:\backup\backup_log.txt"
Chris Travers
źródło