SQL Anywhere 11: restauration de l'échec de la sauvegarde incrémentielle

16

Nous voulons créer des sauvegardes incrémentielles distantes après une sauvegarde complète. Cela nous permettra de restaurer en cas de panne et de mettre en place une autre machine avec des sauvegardes en temps réel aussi proches que possible des serveurs réseau SQL Anywhere.

Nous effectuons une sauvegarde complète comme suit:

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

Cela crée une sauvegarde de la base de données et des fichiers journaux et peut être restauré comme prévu. Pour les sauvegardes incrémentielles, j'ai essayé les journaux de transactions en direct et incrémentiels avec un schéma de changement de nom s'il existe plusieurs sauvegardes incrémentielles:

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

Cependant, lors de l'application des journaux de transactions lors de la restauration, je reçois toujours une erreur lors de l'application des journaux de transactions à la base de données:

10092: Impossible de trouver la définition de table pour la table référencée dans le journal des transactions

La commande de restauration du journal des transactions est:

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

L'erreur ne spécifie pas quelle table il ne peut pas trouver, mais il s'agit d'un test contrôlé et aucune table n'est créée ou supprimée. J'insère quelques lignes, puis lance une sauvegarde incrémentielle avant de tenter de restaurer.

Quelqu'un connaît-il la bonne façon d'effectuer une sauvegarde et une restauration incrémentielle sur Sql Anywhere 11?

MISE À JOUR: Pensant que cela peut être lié à la complexité de la base de données cible, j'ai créé une nouvelle base de données vierge et un service réseau. Puis ajouté un tableau avec deux colonnes et inséré quelques lignes. Effectuez une sauvegarde complète, puis insérez et supprimez quelques lignes et transactions validées supplémentaires, puis effectuez une sauvegarde incrémentielle. Cela a également échoué avec la même erreur lors de la tentative d'application des sauvegardes incrémentielles des journaux de transactions après la restauration de la sauvegarde complète ...

Éditer:

Vous pouvez suivre ce lien pour voir la même question avec un peu plus de commentaires sur SA: http://sqlanywhere-forum.sybase.com/questions/4760/restoring-incrementallive-backup-failure

Kin Shah
la source
Vous voudrez peut-être consulter sqlanywhere-forum.sybase com, un site de questions / réponses spécifiquement pour SQL Anywhere.
Graeme Perrow
Merci et wow, ce site semble incroyablement familier ... est-il SO affilié même s'il appartient à un domaine sybase ou pensez-vous qu'ils en voudraient trop?

Réponses:

2

Résumant les informations liées à dans le post ci-dessus ....

La commande que vous avez utilisée est pour une sauvegarde en direct mais ce que vous voulez est une sauvegarde incrémentielle. L'approche que vous souhaitez utiliser (selon ce blog ) utilise des commutateurs quelque peu différents. Vous souhaitez utiliser les -n -t -xcommutateurs et -o pour spécifier un fichier journal. La commande se termine donc par quelque chose comme:

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