Firebird Documentation Index → Outil Firebird nbackup → Sauvegarder et restaurer |
Pour commencer : nbackup.exe
est dans le
sous-répertoire bin
de votre
répertoire Firebird. Par défaut : C:\Program
Files\Firebird\Firebird_2_0\bin
(Windows) ou /opt/firebird/bin
(Linux). Comme les autres
outils livrés avec Firebird, nbackup n'a pas d'interface graphique; vous
devez le lancer depuis l'invite de commande (ou depuis un fichier batch,
un script shell ou une application).
Pour faire une sauvegarde complète d'une base, la syntaxe est:
nbackup [-U<user>
-P<password>
] -B 0<database>
[<backupfile>
]
Par exemple:
C:\Databases> nbackup -B 0 inventory.fdb inventory_1-Mar-2006.nbk
Le paramètre -B
signifie backup
(sauvegarde) . Le niveau de sauvegarde 0
indique une sauvegarde complète. Les niveaux de sauvegarde plus
grands que 0 sont utilisés pour les sauvegardes incrémentales;
nous en parlerons plus loin.
Vous pouvez aussi utiliser un alias à la place du nom du fichier de base de données.
Au lieu d'un fichier de sauvegarde vous pouvez aussi
utiliser stdout
. Cela va envoyer la
sauvegarde vers la sortie standard, ainsi vous pourrez rediriger
ce flux vers un outil de sauvegarde sur bande ou un outil de
compression.
Les paramètres -U
(utilisateur) et
-P
(mot de passe) ne sont pas obligatoires
si :
vous êtes connecté en tant qu'administreur de la machine
(root
, Administrator
...), ou
si les variables d'environnement ISC_USER
et ISC_PASSWORD
sont renseignées.
Par soucis de clarté et de simplification, ces paramètres ne sont pas utilisés dans les examples.
Les différents paramètres (-B
,
-U
et -P
) peuvent
être utilisé dans n'importe quel ordre. Bien sûr, ils doivent être
suivis immédiatement par leur propre(s) argument(s). Dans le cas
de -B
il y en a trois : le niveau de
sauvegarde, la base de données, et le fichier de sauvegarde - dans
cet ordre !
Si le paramètre -B
est le dernier,
vous pouvez ne pas renseigner le nom du
fichier de sauvegarde. Dans ce cas nbackup créera un nom de
fichier à partir du nom de la base de données , du niveau de
sauvegarde, et de la date et l'heure courante. Cela peut créer un
conflit de nom (et une erreur de sauvegarde) si deux sauvegardes
de même niveau de la même base sont lancées dans la même
minute.
N'utilisez pas nbackup pour les bases multifichiers . Cela peut créer des corruptions et des pertes de données, en dépit du fait que nbackup ne vous enverra aucun message d'avertissement.
Note: les connaissances suivantes ne sont pas nécessaires pour
utiliser nbackup. Cela vous donne juste un aperçu de ce qui ce passe
pendant le travail de nbackup -B
:
En premier lieu, le fichier principal de la base de données est verrouillé par un changement d'état d'un drapeau interne. A partir de ce moment, toutes les modifications de la base de données sont écrites dans un fichier temporaire - le fichier des différences ou le fichier delta.
Ensuite la sauvegarde est faite. Ce n'est pas une simple copie de fichier; la restauration doit aussi être faite par nbackup.
Quand la sauvegarde est terminée, le contenu du fichier delta est intégré au fichier principal de la base de données. Ensuite, la base de données est dévérouillée (le drapeau revient au statut « normal ») et le fichier delta est effacé.
Les fonctionnalités des étapes 1 et 3 sont disponibles par deux nouvelles instructions SQL : ALTER DATABASE BEGIN BACKUP et ALTER DATABASE END BACKUP. Contrairement à ce que le nom suggère, ces deux instructions ne réalisent pas la sauvegarde; en fait, elles créent les conditions dans lesquelles le fichier principal de la base de données peut être effectivement sauvegardé. Et pour être clair : vous n'avez pas besoin d'utiliser ces commandes vous même; nbackup le fera pour vous, au bon moment.
Une sauvegarde complète est restaurée comme suit :
nbackup [-U<user>
-P<password>
] -R<database>
[<backupfile>
]
Par exemple:
C:\Databases> nbackup -R inventory.fdb inventory_1-Mar-2006.nbk
On ne spécifie pas un niveau de restauration.
Quand on restaure, le paramètre -R
doit être le dernier, pour des raisons qui
deviendront claires plus loin.
Si la base spécifiée existe déjà et qu'il n'y a pas de connections actives, elle sera remplacée sans aucun avertissement ! Si des utilisateurs sont connectés, la restauration échoue et vous obtiendrez un message d'erreur.
Ici aussi, vous pouvez oublier de mentionner le nom du fichier de sauvegarde. Si vous le faites, nbackup vous le demandera ensuite. Toutefois, à ce point dans le developement de Firebird 2 - l'étape alpha 3 - cela provoque une erreur (au moins sous Windows) et la restauration échoue.
Pour faire des sauvegardes incrémentales
(« différentielles ») nous spécifions un niveau de
sauvegarde plus grand que 0. Une sauvegarde incrémentale de niveau
N
contient toujours les modifications
depuis le niveau N-1
de sauvegarde le plus
récent.
Exemples:
Un jour après la sauvegarde complète (niveau 0), vous faites une sauvegarde avec le niveau 1:
C:\Databases> nbackup -B 1 inventory.fdb inventory_2-Mar-2006.nbk
Cette sauvegarde contiendra seulement les changements du dernier jour.
Un jour plus tard, vous faites une autre sauvegarde de niveau 1:
C:\Databases> nbackup -B 1 inventory.fdb inventory_3-Mar-2006.nbk
Cette sauvegarde contiendra les changements des deux derniers jours, depuis la sauvegarde complète, et non pas seulement ceux intervenus depuis la précédente sauvegarde de niveau 1.
Quelques heures plus tard nous faisons une sauvegarde de niveau 2 :
C:\Databases> nbackup -B 2 inventory.fdb inventory_3-Mar-2006_2.nbk
Cette sauvegarde la plus récente contiendra alors que les changements intervenus depuis la dernière sauvegarde de niveau 1, c'est dire depuis quelques heures.
Toutes les remarques qui ont été faites au sujets des sauvegardes complètes s'appliquent aux sauvegardes incrémentales.
Encore une fois: n'utilisez pas nbackup pour une base multi-fichiers.
Quand vous restaurez des sauvegardes incrémentales vous devez spécifier l'ensemble de la chaîne des fichiers de sauvegarde, depuis le niveau 0 jusqu'au point de restauration que vous voulez atteindre. La base est toujours recontruite depuis le point de départ, pas à pas. (c'est de ce processus que vient le nom de sauvegarde incrémentale).
La syntaxe est:
nbackup [-U<user>
-P<password>
] -R<database>
[<backup0>
[<backup1>
[...
] ] ]
Donc restaurer la sauvegarde de niveau 2 de l'exemple précédent se fait de la manière suivante :
C:\Databases> nbackup -R inventory.fdb inventory_1-Mar-2006.nbk inventory_3-Mar-2006.nbk inventory_3-Mar-2006_2.nbk
Bien sûr cette commande est affichée ici sur plusieures lignes seulement pour de raisons de mise en page - dans la réalité il faut entrer le commande complète et faire Entrer seulement à la fin.
Commentaires (en plus des commentaires ) sur la sauvegarde complète :
Parce que l'on ne connait pas à l'avance combien de noms de
fichiers vont suivre l'interrupteur -R
(puisque l'on ne spécifie pas de niveau quand on restaure),
nbackup considère tous les arguments après
-R
comme des noms de fichiers de
sauvegarde. C'est pour cela qu'aucun autre paramètre
(-U
ou -P
) ne peut
être placé après la liste des noms de fichiers.
Il n'y a pas de limite formelle au nombre de niveau de sauvegarde, mais en pratique il est raisonnable de ne pas dépasser 3 ou 4.
Qu'arrive-t-il si accidentellement vous oubliez un fichier, ou
indiquez une série de fichiers qui n'appartiennent pas à la même
chaîne ? Imaginons que vous indiquiez
inventory_2-Mar-2006.nbk
par erreur à la place
de inventory_3-Mar-2006.nbk
dans l'exemple
précédent. Les deux sont des sauvegardes de niveau 1, donc dans les
deux cas vous avez une belle série de niveaux « 0, 1,
2 ». Mais votre fichier de niveau 2 est le complément de la
sauvegarde de niveau 1 du 3 Mars, pas de celle du 2 Mars.
Heureusement une telle erreur ne générera pas une base incorrecte. Chaque fichier de sauvegarde a un ID unique. De plus, chaque fichier de sauvegarde de niveau 1 ou plus contient l'ID du fichier de sauvegarde de référence. A la restauration, nbackup vérifie ces ID; si dans la chaîne un des liens est incorrect, l' opération est abandonnée et vous obtenez un message d'erreur.
Une organisation de sauvegarde incrémentale peut être définie ainsi :
Chaque mois une sauvegarde complète (niveau 0) est faite;
chaque semaine une sauvegarde de niveau 1;
un sauvegarde quotidienne de niveau 2;
une sauvegarde par heure de niveau 3.
Tant que toutes les sauvegardes sont préservées, vous pouvez restaurer la base de données dans l'état où elle était dans l'heure précédente. Pour chaque action de restauration, un maximum de quatre fichiers de sauvegarde sont nécéssaires. Bien sûr, vous programmerez les choses de telle manière que la sauvegarde la plus importante, celle qui demande le plus de temps soit effectuée pendant les heures creuses. Dans ce cas, les sauvegardes de niveau 0 et 1 peuvent être effecuées les week-end, et celles de niveau 2 la nuit.
Si vous ne voulez pas tout garder pour l'éternité, vous pouvez utiliser ce calendrier de suppression :
Les sauvegardes de niveau 3 sont supprimées après 8 jours;
celles de niveau 2 après un mois;
celles de niveau 1 après six mois;
Les sauvegardes complètes après deux ans, mais la première de chaque année est conservée.
Ce n'est qu'un exemple bien sûr. Tout dépend de l'application, la taille de la base de données, son activité, etc.
Maintenant vous avez toutes les connaissances nécessaires pour faire et restaurer des sauvegardes complètes et/ou incrementales avec nbackup. Vous avez besoin de continuer la lecture plus loin seulement si vous voulez utiliser l'outil de sauvegarde de votre choix pour vos bases de données Firebird.
Si vous n'en avez pas besoin : bonne chance pour votre travail avec nbackup !
Firebird Documentation Index → Outil Firebird nbackup → Sauvegarder et restaurer |