GNU/Linux >> Tutoriels Linux >  >> Linux

Sauvegarder et restaurer la base de données MySQL à l'aide de mysqlhotcopy


mysqlhotcopy est un script perl fourni avec l'installation de MySQL. Cela verrouille la table, vide la table, puis effectue une copie de la base de données. Vous pouvez également utiliser mysqlhotcopy pour copier automatiquement la sauvegarde directement sur un autre serveur à l'aide de scp
.

1. Commande mysqlhotcopy :

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold

L'exemple ci-dessus effectue une sauvegarde de sugarcrm, une base de données MySQL dans le répertoire /home/backup/database.

  • –allowold :cette option renomme l'ancienne sauvegarde en {nom de la base de données}_old avant d'effectuer une nouvelle sauvegarde. Dans cet exemple, si la sauvegarde sugarcrm existe déjà sous /home/backup/database, elle déplacera l'ancienne sauvegarde vers /home/backup/database/sugarcrm_old avant de créer /home/backup/database/sugarcrm.
  • –keepold :cette option indique à mysqlhotcopy de conserver l'ancienne sauvegarde (c'est-à-dire la _old renommée) une fois la sauvegarde terminée.

Consultez la documentation mysqlhotcopy en utilisant perldoc comme indiqué ci-dessous.

[local-host]# perldoc mysqlhotcopy

Voici les options disponibles qui peuvent être transmises à la commande mysqlhotcopy.

Option

Description

–addtodest Ne renommez pas le répertoire cible (s'il existe) ; il suffit d'y ajouter des fichiers
–allowold Ne pas abandonner si une cible existe ; renommez-le en ajoutant un suffixe _old
–checkpoint=db_name.tbl_name Insérer des entrées de point de contrôle
–chroot=chemin Répertoire de base de la prison chroot dans laquelle mysqld opère
–débogage Écrire un journal de débogage
–dryrun Signaler des actions sans les exécuter
–flushlogs Vider les journaux une fois toutes les tables verrouillées
–aide Afficher le message d'aide et quitter
–host=nom_hôte Se connecter au serveur MySQL sur l'hôte donné
–à garder Ne supprimez pas la cible précédente (renommée) lorsque vous avez terminé
–noindices Ne pas inclure les fichiers d'index complets dans la sauvegarde
–password[=password] Le mot de passe à utiliser lors de la connexion au serveur
–port=num_port Le numéro de port TCP/IP à utiliser pour la connexion
–silencieux Soyez silencieux sauf pour les erreurs
–expression régulière Copier toutes les bases de données avec des noms qui correspondent à l'expression régulière donnée
–resetmaster Réinitialiser le journal binaire après avoir verrouillé toutes les tables
–resetslave Réinitialiser le fichier master.info après avoir verrouillé toutes les tables
–socket=chemin Pour les connexions à localhost
–tmpdir=chemin Le répertoire temporaire
–user=nom_utilisateur, Le nom d'utilisateur MySQL à utiliser lors de la connexion au serveur
–version Afficher les informations de version et quitter

2. Sortie de la commande mysqlhotcopy :

La commande mysqlhotcopy ci-dessus affichera une sortie similaire à la suivante.

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
Locked 98 tables in 0 seconds.
Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds.
Copying 295 files...
Copying indices for 0 files...
Unlocked tables.
mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).

Par défaut, la base de données MySQL est située sous /var/lib/mysql/{db-name}. mysqlhotcopy effectue une sauvegarde des fichiers de la table à partir de cet emplacement de base de données par défaut vers le répertoire de sauvegarde. Le répertoire de sauvegarde /home/backup/database/sugarcrm contiendra une copie exacte de tous les fichiers du répertoire réel de la base de données MySQL /var/lib/mysql/sugarcrm.

[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l
295
[local-host]# ls -1 /home/backup/database/sugarcrm | wc -l
295

Veuillez noter que chaque table a trois fichiers correspondants avec l'extension *.frm, *.MYD et *.MYI. Le répertoire de la base de données contient également un fichier db.opt qui contient le paramètre lié à la base de données.

Dans l'exemple ci-dessus, vous pouvez voir que mysqlhotcopy prend une sauvegarde de 98 tables de base de données sugarcrm. Ainsi, le nombre total de fichiers dans le répertoire de sauvegarde =98 tables * 3 + 1 fichier de configuration db =296 fichiers.

3. Restaurer depuis mysqlhotcopy

Pour restaurer la sauvegarde à partir de la sauvegarde mysqlhotcopy, copiez simplement les fichiers du répertoire de sauvegarde vers le répertoire /var/lib/mysql/{db-name}. Juste pour être sûr, assurez-vous d'arrêter mysql avant de restaurer (copier) les fichiers. Après avoir copié les fichiers dans /var/lib/mysql/{db-name}, redémarrez mysql.

4. Dépannage de mysqlhotcopy

Comment résoudre le problème Impossible de localiser DBD/mysql.pm ? mysqlhotcopy est un script perl et il nécessite le module perl-DBD. Vous pouvez recevoir l'erreur suivante lors de l'exécution de mysqlhotcopy si le module perl-DBD n'est pas installé.

[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains:
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi
/usr/lib/perl5/5.8.8 .) at (eval 7) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: DBM, ExampleP, File, Proxy, Sponge.
at /usr/bin/mysqlhotcopy line 177

Assurez-vous d'installer le package perl-DBD comme indiqué ci-dessous.

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
Preparing...                ########################################### [100%]
1:perl-DBD-MySQL         ########################################### [100%]

Comment résoudre le problème avec l'installation de perl-DBD ? Lors de l'installation de perl-DBD, vous pouvez obtenir le message d'erreur suivant.

[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
error: cannot open Packages index using db3 -  (-30974)
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
rpmdb: Program version 4.3 doesn't match environment version
error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat
error: Failed dependencies:
libmysqlclient.so.15 is needed by perl-DBD-MySQL-3.0007-1.fc6.i386
libmysqlclient.so.15(libmysqlclient_15) is needed by perl-DBD-MySQL-3.0007-1.fc6.i386

Téléchargez et installez MySQL-shared-compat depuis mysql.com et cela devrait résoudre l'erreur mentionnée ci-dessus lors de l'installation du package perl-DBD.

[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm
Preparing...                ########################################### [100%]
1:MySQL-shared-compat    ########################################### [100%]

Utilisez-vous d'autres méthodes pour sauvegarder ou restaurer votre base de données MySQL ? Veuillez laisser vos commentaires.


Linux
  1. MySQL :comment sauvegarder (vider) et restaurer une base de données à l'aide de mysqldump

  2. Comment sauvegarder et restaurer la base de données MySQL à l'aide de la ligne de commande

  3. Comment sauvegarder et restaurer une base de données dans PostgreSQL

  4. Comment restaurer la base de données MySQL à l'aide de la commande en SSH ?

  5. Bases de l'utilisateur et de la base de données MySQL

Sauvegarder et restaurer les applications Ubuntu à l'aide d'Aptik

Comment effectuer une sauvegarde et restaurer la base de données MSSQL/MySQL dans Plesk

Comment effectuer une sauvegarde de base de données MySQL à l'aide de cPanel cron ?

Comment sauvegarder la base de données MySQL à l'aide de cPanel ?

Comment restaurer la sauvegarde de la base de données à l'aide de JetBackup 5 ?

Comment restaurer une base de données MySQL à partir d'une sauvegarde .SQL