Tests de restauration
phil/backupBackups::verify($set, $scratch = null) prouve ce qui peut être prouvé d'un jeu sans toucher à la base de données, et
retourne une Verification.
Ce que fait un test
- Chaque fichier chiffré est déchiffré dans un fichier temporaire, ce qui l'authentifie en entier.
- La base de données est restaurée dans une copie et vérifiée à cet endroit :
- SQLite : dans un fichier temporaire du répertoire de sauvegarde, puis
PRAGMA integrity_check; la copie est supprimée ; - MySQL, MariaDB, PostgreSQL : dans la base de travail
$scratch, sur le même serveur et avec les mêmes identifiants ; la réussite de l'outil de restauration tient lieu de vérification. Sans base de travail, la base de données n'est pas restaurée, etrestoredIntoest null.
- SQLite : dans un fichier temporaire du répertoire de sauvegarde, puis
- L'archive des médias est lue en entier, chaque en-tête et chaque chemin vérifiés ;
mediaFilesest son nombre de fichiers, null si le jeu n'en a pas.
Un échec à n'importe quelle étape est un BackupFailed qui nomme le fichier et la cause.
La base de travail
La base de travail est une base que l'application abandonne aux tests : chaque test remplace son contenu. Créez-la une
fois, vide, avec les droits dont ont besoin les objets de la sauvegarde — pour PostgreSQL, appartenant au rôle sous
lequel le client se connecte. Une base de travail du même nom que la base de données elle-même est refusée :
The restore test would replace the postgresql database shop itself: give it a scratch database of its own.
À quelle fréquence
Un test de restauration du jeu le plus récent après chaque sauvegarde coûte une restauration. Planifiez-le après la sauvegarde. Une alerte sur son échec signale qu'il existe une sauvegarde qui ne se serait pas restaurée — le jour où on le découvre plutôt que le jour où on en a besoin.