SQL Anywhere 11: Wiederherstellen der inkrementellen Sicherung fehlgeschlagen

16

Wir möchten nach einer vollständigen Sicherung inkrementelle Remote-Sicherungen erstellen. Auf diese Weise können wir im Falle eines Ausfalls eine Wiederherstellung durchführen und einen anderen Computer mit Echtzeitsicherungen starten, die mit SQL Anywhere-Netzwerkservern möglich sind.

Wir machen eine vollständige Sicherung wie folgt:

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

Dadurch werden die Datenbank- und Protokolldateien gesichert und können wie erwartet wiederhergestellt werden. Bei inkrementellen Sicherungen habe ich sowohl Live- als auch inkrementelle Transaktionsprotokolle mit einem Umbenennungsschema versucht, wenn mehrere inkrementelle Sicherungen vorhanden sind:

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

Beim Anwenden der Transaktionsprotokolle bei der Wiederherstellung erhalte ich jedoch immer eine Fehlermeldung, wenn die Transaktionsprotokolle auf die Datenbank angewendet werden:

10092: Die Tabellendefinition für die im Transaktionsprotokoll angegebene Tabelle konnte nicht gefunden werden

Der Befehl zum Wiederherstellen des Transaktionsprotokolls lautet:

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

Der Fehler gibt nicht an, welche Tabelle nicht gefunden werden kann. Dies ist jedoch ein kontrollierter Test, und es werden keine Tabellen erstellt oder gelöscht. Ich füge ein paar Zeilen ein und starte dann ein inkrementelles Backup, bevor ich versuche, es wiederherzustellen.

Kennt jemand die richtige Methode für inkrementelle Sicherungen und Wiederherstellungen in Sql Anywhere 11?

UPDATE: Da ich glaube, dass dies mit der Komplexität der Zieldatenbank zusammenhängt, habe ich eine neue leere Datenbank und einen neuen Netzwerkdienst erstellt. Dann fügte man eine Tabelle mit zwei Spalten hinzu und fügte ein paar Zeilen ein. Erstellte eine vollständige Sicherung, fügte ein paar weitere Zeilen ein und löschte sie und übermittelte Transaktionen. Anschließend erstellte er eine Teilsicherung. Dies schlug mit demselben Fehler auch fehl, wenn versucht wurde, die inkrementellen Sicherungen von Transaktionsprotokollen anzuwenden, nachdem die vollständige Sicherung wiederhergestellt wurde.

Bearbeiten:

Sie können diesem Link folgen, um dieselbe Frage mit etwas mehr Feedback zu SA zu sehen: http://sqlanywhere-forum.sybase.com/questions/4760/restoring-incrementallive-backup-failure

Kin Shah
quelle
Sie können sqlanywhere-forum.sybase com, eine Q & A-Site speziell für SQL Anywhere, besuchen.
Graeme Perrow
Danke und wow, diese Seite kommt mir unglaublich bekannt vor ... ist SO angeschlossen, obwohl sie sich unter einer Sybase-Domain befindet oder denken Sie, dass es ihnen zu viel ausmachen würde?

Antworten:

2

Zusammenfassen der Informationen, auf die im obigen Beitrag verwiesen wird ....

Der Befehl, den Sie verwendet haben, ist für ein Live-Backup gedacht, aber Sie möchten ein inkrementelles Backup. Der Ansatz, den Sie (in diesem Blog ) verwenden möchten, verwendet etwas andere Schalter. Sie möchten die -n -t -xSchalter und das -o verwenden, um eine Protokolldatei anzugeben. So endet der Befehl in etwa wie folgt:

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