Wiki

Outils pour utilisateurs

Outils du site


database_backup_and_restore

Sauvegarde et restauration de la base de données

ceci est une traduction de la documentation officielle Database Backup and Restore disponible sur lesite de mythtv.org

Script pour sauvegarder et restaurer la base de données

MythTV 0.22 ajoute une nouvelle approche pour effectuer les sauvegardes et les restaurations sous forme de script. Ces scripts sont totalement intégrés dans les sources des distributions, mais ils pourront être remplacés ou modifiés par les « packageurs » pour les rendre plus conforme aux usages de leur distribution. Le présent document concerne l'utilisation des scripts originaux distribués avec les sources de MythTV. Bien que ces scripts ne sont inclus que dans les versions supérieures à 0.21, ils ont été écrit pour être compatible avec toutes les versions de MythTV. Pour les versions qui ne contiennent pas les scripts, ils sont téléchargeable à partir des sources (backup etrestore restore). Après les avoir téléchargés, sauvegardez-les dans un endroit facile à trouver et rendez-les exécutable:

  chmod a+x mythconverg_backup.pl mythconverg_restore.pl

En sauvegardant les scripts dans le répertoire du PATH de l'utilisateur courant, vous pourrez les exécuter sans préciser tout le chemin d'accès. Voir l'aide détaillée en utilisant l'argument –help.

Démarrage rapide

Chaque script utilisent les informations contenues dans le fichier de configuration de MythTV (~/.mythtv/config.xml). Cependant vous devez spécifié le répertoire de stockage des sauvegardes avec l'argument –directory. Puisqu'il est raisonnable de penser que ce répertoire est toujours le même, vous pouvez le mettre dans le fichier de configuration suivant (~/.mythtv/backuprc). Par exemple vous pouvez décidé de mettre vos fichiers de sauvegarde dans /home/mythtv avec la commande suivante:

  echo "DBBackupDirectory=/home/mythtv" > ~/.mythtv/backuprc

A partir de là, vous pouvez facilement créer une sauvegarde en tapant dans une console:

  ./mythconverg_backup.pl

(dans la mesure,ou votre script se trouve dans le répertoire de l'utilisateur courant ). Si vous souhaitez voir ce qui se passe,vos pouvez utiliser l'argument –verbose comme ceci:

  ./mythconverg_backup.pl --verbose

Note : toutes les options de commande disponibles sont accessibles en utilisant l'argument –help.

Sauvegarde automatique de votre base

Une fois que vous aurez vérifié que votre script fonctionne correctement, vous allez pouvoir automatiser vos sauvegardes en configurant la planification de ce script (tache cron).

Pour minimiser les chances de perte de données, vous devez choisir une période d'exécution pendant laquelle aucun enregistrement n'est programmé.

Vous pouvez également choisir de lancer le script à chaque démarrage ou arrêt du serveur (mythbackend) (à insérer dans le « init script »). Dans ce cas, il est à noter que l'exécution du script dépend du script démarrage et non de mythconverg_backup.pl.

Si vous avez un système avec plusieurs mythfrontend et/ou plusieurs mythbackend, le script devra être lancé uniquement sur le master backend.

Si vous utilisez mythwelcome, vous pouvez créer un script autobackup.sh qui fera une sauvegarde journalière lors de la dernière cloture du backend et lorsque celui-ci est non-utilisé.

Sauvegarde de la base de données

Le script mythconverg.pl crée une sauvegarde, la compresse en utilisant les algorithmes de compression gzip et incrémente la sauvegarde (garde les 5 dernières sauvegardes)

Sauvegarde incrémentale sur 10 jours de la base

./mythconverg_backup.pl --rotate 10

Sauvegarde avec compression bzip2 de la base

Attention, la compression des fichiers MySQL avec l'option bzip2, utilise beaucoup plus de ressources système qu'avec l'option gzip (cela prend environ 7 minutes au lieu de 19 seconds sur un AthlonXP 2400+ pour un fichier de 200 Mb avant compression) mais la taille du fichier de sauvegarde est plus réduite: 33% environ (20 Mb contre 30 Mb après compression). Toutefois il faut être extrèment prudent avec l'emploi de bzip pour qu'il n'interfère pas avec les périodes d'enregistrement, d'autant que le gain de place est équivalent à environ 1 minute d'enregistrement en MPEG2 qualité standard.

./mythconverg_backup.pl --compress bzip2

Sauvegarde avec mysqldump hors du path utilisateur standard

Il est possible de préciser la localisation de l'exécutable mysqldump, mais il est peut-être plus facile de créer un répertoire qui contient mysqldump dans le répertoire de l'utilisateur standard ou de placer un lien vers mysqldump dans celui-ci.

./mythconverg_backup.pl --mysqldump /path/to/mysqldump

Sauvegarde des données xmltvid (avant de faire un scan complet des fréquences)

Plutôt que de faire une sauvegarde complète de la base de données, le script de sauvegarde peut créer une sauvegarde uniquement des données xmltvid. La sauvegarde contient un certain nombre de d'information sur l'état des mises à jour qui permet de restaurer au même état les données xmltvid avant et après un scan des fréquences. Il est à noter que le fichier de sauvegarde contient des informations complémentaires sur les chaînes qui permettront de les identifier si les « callsign » changent

./mythconverg_backup.pl --backup_xmltvids

l'utilité de la sauvegarde automatique lors du changement de version de mythtv

Quand mythtv change de version ( par exemple de 0.26 à 0.27), il change aussi le schéma de la base de données. Avant de faire cela, mythtv fait une sauvegarde de mythconverg avec mythconverg_backup.pl (ou mysql_dump si mythconverg_backup.pl n'est pas disponible) pour permettre à ceux qui souhaite revenir à la version (et schémé) précédente de pouvoir le faire sans difficulté.

Cette sauvegarde est enregistrée dans le répertoire qui dispose du maximun de place, spécifié dans le groupe de stockage des sauvegardes ou le répertoire défini dans le fichier de configuration, si le groupe de stockage des sauvegardes n'est pas défini ou /tmp si ces répertoires ne sont pas utilisable ( accès refusé).

Les utilisateurs prudents vérifieront que ce processus de sauvegarde fonctionne avant de changer de versions de MythTV. Car des discussions sur la liste de diffusion des utilisateurs MythTV confirment que, parfois, la sauvegarde de base de données automatique ne peut pas être trouvé. Les causes probables sont des problèmes d'autorisation d'écriture ou, si / tmp est utilisé et que la machine est redémarrée avant que l'utilisateur réalise que la sauvegarde est nécessaire, celle-ci n'est plus disponible.

Note: Enregistrer votre sauvegarde en bonne place sur un support externe exemple une clé USB ou un NAS

Restauration de la base de données

Le script mythconverg_restore.pl restaure la base de données MythTV (avec le fichier créé avec le script mythconverg_backup.pl) . Si le fichier de sauvegarde n'est pas précisé, le plus récent est automatiquement sélectionné pour effectuer la restauration (la date et heure de sauvegarde sont retenues et non la version du la structure de la base).Le script détermine automatiquement si il est besoin de décompresser le fichier de sauvegarde.Si necessaire créer la base de données avant la restauration.

Restauration compléte de la plus récente sauvegarde

Le script détermine la plus récente sauvegarde en se basant sur la date et l'heure des fichiers et ignore les informations sur la structure de la base de données.

mythconverg_restore.pl         # restaurer la base de données

NOTA: Le script n'écrase pas une base existante. Il est nécessaire d'effacer préalablement la base de données avant de la restaurer.

Restauration complète d'une sauvegarde spécifique

Changez l'option « filename » avec le fichier de restauration à utiliser:

mythconverg_restore.pl –filename mythconverg-1214-20080626150513.sql.gz

Note: il n'est pas nécessaire de préciser le répertoire de stockage des sauvegardes. Si le fichier n'est pas trouvé dans le répertoire de stockage contenu dans le fichier de configuration (~/.mythtv/backuprc), spécifiez l'emplacement avec l'argument –directory.

mythconverg_restore.pl –directory /home/mythtv –filename mythconverg-1214-20080626150513.sql.gz

Remplacement d'une base existante

Si vous remplacez une base de données existante avec une sauvegarde correcte en utilisant une restauration complète - par exemple, parce que votre base de données a été corrompue ou une mise à niveau du schéma de base de données défaillante ou vous remplacez une base de données fourni avec votre package après réinstallation de votre distribution - vous aurez besoin de supprimer la base existante. Vous pouvez le faire en ajoutant les arguments –drop_database –create_database à la ligne de commande.

mythconverg_restore.pl --drop_database --create_database --filename mythconverg-1214-20080626150513.sql.gz

Restauration partielle d'une sauvegarde

Une restauration partielle restaure uniquement les données concernant les enregistrements existants et les enregistrements à venir. Ce type de restauration est généralement utilisé lorsque l'on installe MythTV sur une nouvelle machine. Dans ce cas, il peut être préférable de démarrer avec la nouvelle configuration hardware plutôt que de restaurer l'ancienne configuration et de l'adapter à la nouvelle configuration.

Lorsque vous effectuez une restauration partielle, vous devrez complètement re-configurer MythTV (y compris tous les hôtes MythTV - tous frontend et backend ) et tous les plugins que vous souhaitez utiliser après la restauration de la base de données. Même si vous désinstallez certains plugins que vous aviez utilisés dans la version précédente de MythTV, l'espace de stockage utilisé par les anciennes données du plugin est négligeable par rapport à la taille globale de la base de données, il n'y aura pas d'impact sur les performances en supprimant les anciennes données du plugin. Et comme MythTV nettoye automatiquement la base de données, une restauration complète d'une base de données vielle de plusieurs annnées sera tout aussi propre qu'une nouvelle base de données dans laquelle vous avez fait une restauration partielle.

Une restauration partielle est déconseillée car elle est beaucoup plus difficile et chronophage qu'une restauration complète, laisse beaucoup plus de possibilités pour les erreurs, et ne procure aucun avantage pour l'utilisateur ou le système. Notez également que si les données dans les tables qui stockent des informations sur les enregistrements et les règles d'enregistrement sont corrompues, elles seront également corrompues après la restauration - une restauration partielle n'est pas une solution magique pour les données cassés.

Notez, qu'une restauration partielle ne fonctionnera que si la version du schéma de sauvegarde est identique à la version du schéma utilisé par le mythbackend actuellement installé. Si vous devez effectuer une restauration partielle lors de la mise à jour de MythTV, il y a plusieurs étapes supplémentaires à effectuer - encore une autre bonne raison de faire une restauration complète.

Avant d'effectuer une restauration partielle, la base de données doit exister et doit avoir des tables (surtout vide). Tout d'abord, effacer la base de données existante. Vous pouvez le faire à partir de la ligne de commande avec la commande:

mysql-u root-p-e 'DROP DATABASE IF EXISTS mythconverg;'

puis créer une nouvelle base de données (et notez que cela peut changer les mots de passe / permissions de MySQL, cela pourrait causer des problèmes d'authentification). Ensuite, démarrez mythtv-setup pour créer le schéma de base de données. Enfin, quitter mythtv-setup, puis restaurer la base de données:

mythconverg_restore.pl --partial_restore

Restauration partielle lors de la mise MythTV

Encore une fois, une restauration partielle est surtout utile comme un dernier recours lorsque certaines données dans la base de données sont corrompues. En règle générale, ne pas faire restaurer une partielle - à la place faire une restauration complète. Voir ci-dessus les raisons pour lesquelles la restauration partielle n'est pas nécessaire et n'est pas recommandée.

Si vous essayez de faire une restauration partielle en même temps que la mise à niveau, vous devez vous assurer que la sauvegarde de la base de données contenant vos données est de la même version du schéma de base de données comme la version du schéma de base de données en cours d'exécution. Vous ne pouvez pas utiliser une restauration partielle pour contourner le processus de mise à niveau de base de données. Cela rend la restauration beaucoup plus compliqué que d'une restauration complète, et là encore, vous devriez probablement juste faire une restauration complète.

Pour effectuer une restauration partielle lors de la mise à jour votre version de MythTV, d'abord (avant la mise à niveau MythTV) faire une sauvegarde complète de votre base de données à l'ancienne version de schéma, puis effacez la base de données et créer une nouvelle base de données vide, puis lancez (l'ancienne version de ) mythtv-setup pour créer un nouveau schéma vide (ancienne version), puis quitter mythtv-setup. Puis faire une restauration partielle de la base de données avec l'ancien schéma dans la nouvelle base de données (que vous venez de créer). Ensuite, faites une sauvegarde complète de la nouvelle base de données à l'ancien schéma “partielle”.

Une fois que vous aurez mis à niveau Mythtv, plutôt que de faire une restauration partielle de l'ancien schéma de base de données, vous aurez une restauration complète de la base de données “partielle” avec l'ancien schéma (celle la plus récemment créée ). En outre, si la mise à niveau implique de changer le nom d'hôte (hostname), vérifiez que vous modifiez le nom d'hôte avant de lancer toutes les applications MythTV. Enfin, effectuez la mise à niveau MythTV, puis lancez mythtv-setup pour mettre à jour la base de données «partielle», puis configurez les backends, frontends, et les plugins.

Si vous avez déjà mis à niveau MythTV et vous n'avez pas de créer une sauvegarde de base de données avec l'ancienne schéma “vide”, vous aurez besoin de faire une restauration complète de votre sauvegarde à l'ancienne version. Ensuite, démarrez mythtv-setup pour mettre à niveau le schéma. Si cela a fonctionné, il n'y a aucune raison de faire une restauration partielle. Si vous souhaitez toujours le faire, vous pouvez alors faire une sauvegarde complète de votre base de données au nouveau schéma et ensuite faire une restauration partielle (voir plus haut - vous êtes maintenant prêt à commencer le processus de restauration partielle).

Change le « hostname » du frontend ou backend

Note: le changement de « hostname » modifie la base existante mais ne la restaure pas. Bien sûr, pour changer le « hostname », il faut que la base existe (restaurer une ancienne base si nécessaire) et exécutez la commande suivante en remplaçant XXXX et YYYY avec les valeurs de l'ancien et du nouveau « hostname »:

mythconverg_restore.pl --change_hostname --old_hostname="XXXX" --new_hostname="YYYY"
database_backup_and_restore.txt · Dernière modification: 25/05/2013 par gilles74