MySQL est un système de gestion de base de données relationnelle (SGBD) open source qui est fréquemment déployé dans un large éventail de contextes. Le plus souvent, il est déployé dans le cadre de la pile LAMP. Le système de base de données est également facile à utiliser et hautement portable et est, dans le contexte de nombreuses applications, extrêmement efficace. Comme MySQL est souvent un magasin de données centralisé pour de grandes quantités de données critiques, effectuer des sauvegardes régulières de votre base de données MySQL est l'une des tâches de reprise après sinistre les plus importantes qu'un administrateur système puisse effectuer. Ce guide aborde un certain nombre de méthodes distinctes pour créer des sauvegardes de votre base de données ainsi que pour restaurer des bases de données à partir de sauvegardes.
Avant de commencer le processus d'installation, nous supposons que vous avez suivi les étapes décrites dans notre Configuration et sécurisation d'une instance de calcul. De plus, vous devrez installer la base de données MySQL. Toute la configuration sera effectuée dans une session de terminal ; assurez-vous que vous êtes connecté à votre Linode en tant que root via SSH. Si vous débutez dans l'administration de serveur Linux, vous serez peut-être intéressé par notre guide d'introduction aux concepts Linux, notre guide du débutant et notre guide des bases de l'administration.
Méthodologie de sauvegarde
La plupart des sauvegardes de bases de données MySQL dans ce guide sont effectuées à l'aide de mysqldump
tool, qui est distribué avec l'installation du serveur MySQL par défaut. Nous vous recommandons d'utiliser mysqldump
chaque fois que possible, car c'est souvent le moyen le plus simple et le plus efficace d'effectuer des sauvegardes de base de données. D'autres méthodes détaillées dans ce guide sont fournies pour les situations où vous n'avez pas accès à mysqldump
outil, comme dans un environnement de récupération comme Finnix ou dans des situations où l'instance locale du serveur MySQL ne démarre pas.
Néanmoins, ce guide fournit un simple aperçu de mysqldump
outil, car il existe de nombreuses options et utilisations de mysqldump
qui sortent du cadre de ce document. Nous vous encourageons à vous familiariser avec toutes les procédures couvertes dans ce document et à poursuivre votre exploration de mysqldump
au-delà des cas décrits ici. Assurez-vous de noter ce qui suit :
- Le
*.sql
fichiers créés avecmysqldump
peut être restauré à tout moment. Vous pouvez même modifier la base de données.sql
fichiers manuellement (avec beaucoup de soin !) à l'aide de votre éditeur de texte préféré. - Si vos bases de données n'utilisent que le moteur de stockage MyISAM, vous pouvez remplacer le
mysqldump
commande avec le plus rapidemysqlhotcopy
.
Création de sauvegardes de l'ensemble du système de gestion de base de données (SGBD)
Il est souvent nécessaire d'effectuer une sauvegarde (ou "vidage") de l'ensemble d'un système de gestion de base de données ainsi que de toutes les bases de données et tables, y compris les bases de données système qui contiennent les utilisateurs, les autorisations et les mots de passe.
Option 1 :créer des sauvegardes d'un système de gestion de base de données complet à l'aide de l'utilitaire mysqldump
La méthode la plus simple pour créer une seule sauvegarde cohérente de l'ensemble du système de gestion de base de données MySQL utilise le mysqldump
utilitaire depuis la ligne de commande. La syntaxe de création d'un vidage de base de données avec un horodatage actuel est la suivante :
mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p
Cette commande vous demandera un mot de passe avant de commencer la sauvegarde de la base de données dans le répertoire courant. Ce processus peut prendre de quelques secondes à quelques heures selon la taille de vos bases de données.
Automatisez ce processus en ajoutant une ligne à crontab
:
0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD
Pour l'exemple ci-dessus, utilisez which mysqldump
pour confirmer le chemin d'accès correct à la commande et remplacer root
avec l'utilisateur mysql sous lequel vous souhaitez exécuter les sauvegardes et PASSWORD
avec le mot de passe correct pour cet utilisateur.
Remarque Dans l'exemple crontab, assurez-vous qu'il n'y a pas d'espace entre l'indicateur -P et votre mot de passe.
Option 2 :Créer des sauvegardes d'un SGBD entier à l'aide de copies du répertoire de données MySQL
Alors que le mysqldump
est la méthode de sauvegarde préférée, il existe quelques cas qui nécessitent une approche différente. mysqldump
ne fonctionne que lorsque le serveur de base de données est accessible et en cours d'exécution. Si la base de données ne peut pas être démarrée ou si le système hôte est inaccessible, nous pouvons copier directement la base de données de MySQL. Cette méthode est souvent nécessaire dans les situations où vous n'avez accès qu'à un environnement de récupération comme Finnix avec les disques de votre système montés dans ce système de fichiers. Si vous essayez cette méthode sur votre système lui-même, assurez-vous que la base de données n'est pas course. Exécutez une commande semblable à la suivante :
/etc/init.d/mysqld stop
Sur la plupart des versions de distribution de MySQL, le répertoire de données se trouve dans /var/lib/mysql/
annuaire. Si ce répertoire n'existe pas, examinez le /etc/mysql/my.cnf
fichier pour un chemin vers le répertoire de données. Vous pouvez également rechercher le répertoire de données dans votre système de fichiers en exécutant la commande suivante :
find / -name mysql
Une fois que vous avez localisé votre répertoire de données MySQL, vous pouvez le copier dans un emplacement de sauvegarde. L'exemple suivant suppose que le répertoire de données MySQL est situé dans /var/lib/mysql/
:
cp -R /var/lib/mysql/* /opt/database/backup-1266871069/
Dans ce cas, nous avons copié récursivement le contenu du répertoire de données (par exemple /var/lib/mysql/
) dans un répertoire dans /opt/
hiérarchie (par exemple /opt/database/backup-1266871069/
). Ce répertoire doit exister avant de lancer l'opération de copie. Considérez la séquence d'opérations suivante :
/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/
Ces commandes commencent par arrêter le démon du serveur MySQL, puis créent un répertoire nommé /opt/database/backup-1266872202/
, et effectuer une copie récursive du répertoire de données. Notez que nous avons choisi d'utiliser le backup-[time_t]
convention de nommage pour nos exemples. Remplacez les chemins ci-dessus par votre organisation et votre schéma de nommage préférés. Le cp
La commande ne produit pas de sortie et peut prendre un certain temps en fonction de la taille de votre base de données. Ne vous inquiétez pas si cela prend du temps. Lorsque l'opération de copie est terminée, vous souhaiterez peut-être archiver le répertoire de données dans une archive "tar" pour faciliter la gestion et le déplacement entre les machines. Exécutez les commandes suivantes pour créer l'archive :
cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz
Une fois l'archive créée, vous pouvez facilement transférer le fichier de la manière qui vous convient le mieux. N'oubliez pas de redémarrer le démon du serveur MySQL si nécessaire :
/etc/init.d/mysql start
Création de sauvegardes d'une seule base de données
Dans de nombreux cas, la création d'une sauvegarde de l'intégralité du serveur de base de données n'est pas nécessaire. Dans certains cas, comme la mise à niveau d'une application Web, le programme d'installation peut recommander d'effectuer une sauvegarde de la base de données au cas où la mise à niveau affecterait négativement la base de données. De même, si vous souhaitez créer un "vidage" d'une base de données spécifique pour déplacer cette base de données vers un autre serveur, vous pouvez envisager la méthode suivante.
Lorsque cela est possible, utilisez le mysqldump
outil pour exporter un "vidage" d'une seule base de données. Cette commande ressemblera à ce qui suit :
mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql
L'exemple ci-dessus est comme l'exemple de la section précédente, sauf que plutôt que d'utiliser le --all-databases
, cet exemple spécifie un nom de base de données particulier. Dans ce cas, nous créons une sauvegarde des danceLeaders
base de données. La forme de cette commande, dans une notation plus simple, est la suivante :
mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql
Pour un exemple supplémentaire, nous allons sauvegarder la base de données nommée customer
en utilisant le compte racine de la base de données en exécutant la commande suivante :
mysqldump -u root -p -h localhost customer > customerBackup.sql
Vous serez invité à entrer un mot de passe avant mysqldump
commence son processus de sauvegarde. Comme toujours le fichier de sauvegarde, dans ce cas customerBackup.sql
, est créé dans le répertoire où vous exécutez cette commande. Le mysqldump
La commande peut se terminer en quelques secondes ou quelques heures selon la taille de la base de données et la charge sur l'hôte lors de l'exécution de la sauvegarde.
Création de sauvegardes d'une seule table
Option 1 :créer des sauvegardes d'une seule table à l'aide de l'utilitaire mysqldump
Cette opération, comme les utilisations précédentes du mysqldump
de ce document, vous permet de créer une sauvegarde d'une seule table de base de données. Poursuivant nos exemples précédents, l'exemple suivant vous permet de sauvegarder la table usernameRecords
dans les danceLeaders
base de données.
mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql
L'exemple ci-dessus ressemble à l'exemple de la section précédente, sauf que nous avons ajouté une spécification de nom de table à la commande pour spécifier le nom de la table que nous voulons sauvegarder. La forme de cette commande dans une notation plus simple est la suivante :
mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql
Pour un exemple supplémentaire, nous allons sauvegarder la table nommée "commande" de la base de données nommée customer
en utilisant le compte racine de la base de données en exécutant la commande suivante :
mysqldump -u root -p -h localhost customer order > customerBackup-order.sql
Vous serez invité à entrer un mot de passe avant mysqldump
commence son processus de sauvegarde. Comme toujours, le fichier de sauvegarde (dans ce cas customerBackup.sql
) est créé dans le répertoire où vous exécutez cette commande. Le mysqldump
La commande peut se terminer en quelques secondes ou quelques heures selon la taille de la base de données et la charge sur l'hôte lors de l'exécution de la sauvegarde.
Option 2 :Créer des sauvegardes d'une seule table à l'aide du client MySQL et une instruction OUTFILE
Le client MySQL lui-même a une capacité de sauvegarde. Il est utile lorsque vous êtes déjà connecté et que vous ne souhaitez pas quitter la session en cours. Si vous utilisez un système en direct et que vous ne pouvez pas vous permettre de temps d'arrêt, vous devriez envisager de verrouiller temporairement la table que vous sauvegardez.
Sachez que lors de la sauvegarde d'une seule table à l'aide du client MySQL, la structure de cette table n'est pas conservée dans la sauvegarde. Seules les données elles-mêmes sont enregistrées lors de l'utilisation de cette méthode.
-
Avant de commencer, nous vous recommandons d'effectuer un
LOCK TABLES
sur les tables que vous avez l'intention de sauvegarder, suivi deFLUSH TABLES
pour s'assurer que la base de données se trouve dans un espace cohérent pendant l'opération de sauvegarde. Vous n'avez besoin que d'un verrou de lecture. Cela permet aux autres clients de continuer à interroger les tables pendant que vous faites une copie des fichiers dans le répertoire de données MySQL. Pour un verrou en "lecture", la syntaxe deLOCK TABLES
ressemble à ceci :1
LOCK TABLES tableName READ;
Pour effectuer un
LOCK TABLES
sur laorder
table ducustomer
base de données, lancez la commande suivante :mysql -u root -p -h localhost
Vous serez alors invité à entrer le mot de passe root. Une fois que vous avez entré les informations d'identification de la base de données, vous arriverez à l'invite du client mysql. Exécutez la commande suivante pour verrouiller la
order
table dans lecustomer
base de données (la fin;
est requis pour les commandes MySQL) :1 2 3
USE customer; LOCK TABLES order READ; FLUSH TABLES;
-
Nous pouvons maintenant commencer l'opération de sauvegarde. Pour créer une sauvegarde d'une seule table à l'aide du client MySQL, vous devez être connecté à votre SGBD MySQL. Si vous n'êtes pas connecté actuellement, vous pouvez vous connecter avec la commande suivante :
mysql -u root -p -h localhost
Un mot de passe vous sera demandé. Une fois que vous avez entré le mot de passe correct et que vous êtes à l'invite du client MySQL, vous pouvez utiliser un
SELECT * INTO OUTFILE
déclaration. La syntaxe de cette instruction ressemble à ceci :1
SELECT * INTO OUTFILE 'file_name' FROM tbl_name;
Dans cet exemple, nous allons créer une sauvegarde des données de la
order
table ducustomer
base de données. Exécutez la commande suivante pour commencer la procédure de sauvegarde (le;
de fin est requis pour les commandes MySQL) :1 2 3 4 5
USE customer; LOCK TABLES order READ; FLUSH TABLES; SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order; UNLOCK TABLES;
Le
customerOrderBackup.sql
Le fichier sera créé dans le sous-répertoire de données approprié dans le répertoire de données de MySQL. Le répertoire de données MySQL est généralement/var/lib/mysql/
. Dans cet exemple, leOUTFILE
sera/var/lib/mysql/customer/customerOrderBackup.sql
. L'emplacement de ce répertoire et de ce fichier peut cependant varier d'une distribution Linux à l'autre. Si vous ne trouvez pas votre fichier de sauvegarde, vous pouvez le rechercher avec la commande suivante :find / -name customerOrderBackup.sql
-
Une fois l'opération de sauvegarde terminée, vous souhaiterez déverrouiller les tables à l'aide de la commande suivante dans le client MySQL. Cela ramènera votre base de données à son fonctionnement normal. Connectez-vous au client MySQL avec la première commande si vous n'êtes pas actuellement connecté, puis lancez la deuxième commande :
mysql -uroot -p -h localhost
1
UNLOCK TABLES;
Vous pouvez continuer à utiliser votre base de données normalement à partir de ce moment.
Considérations pour une stratégie de sauvegarde efficace
La création de sauvegardes de votre base de données MySQL doit être une tâche régulière et planifiée. Vous pourriez envisager de planifier des sauvegardes périodiques à l'aide de cron
, mysqldump
et/ou mail
. Consultez notre documentation pour plus d'informations sur cron. La mise en œuvre d'une solution de sauvegarde automatisée peut aider à minimiser les temps d'arrêt dans une situation de reprise après sinistre.
Vous n'avez pas besoin de vous connecter en tant que root lors de la sauvegarde de bases de données. Un utilisateur MySQL avec lecture (par exemple SELECT
) la permission est capable d'utiliser à la fois le mysqldump
et mysql
(par exemple, le client MySQL) pour effectuer des sauvegardes, comme décrit ci-dessous. Comme pratique courante, nous vous recommandons de ne pas utiliser la root
MySQL l'utilisateur chaque fois que possible afin de minimiser les risques de sécurité.
Vous pouvez envisager des sauvegardes incrémentielles dans le cadre d'un plan de sauvegarde de base de données à long terme. Bien que ce processus ne soit pas couvert ici, nous vous recommandons de consulter la ressource Méthodes de sauvegarde de la base de données MySQL pour plus d'informations.
Restauration d'un SGBD entier à partir d'une sauvegarde
Une sauvegarde qui ne peut pas être restaurée a une valeur minimale. Nous vous recommandons de tester régulièrement vos sauvegardes pour vous assurer qu'elles peuvent être restaurées au cas où vous auriez besoin de restaurer à partir de sauvegardes. Lorsque vous utilisez la restauration de sauvegardes de votre base de données MySQL, la méthode que vous utilisez dépend de la méthode que vous avez utilisée pour créer la sauvegarde en question.
Option 1 :Restauration d'un SGBD entier à l'aide du client MySQL et des sauvegardes créées par mysqldump
Avant de commencer le processus de restauration, cette section suppose que votre système exécute une version nouvellement installée de MySQL sans bases de données ou tables existantes. Si vous avez déjà des bases de données et des tables dans votre SGBD MySQL, veuillez effectuer une sauvegarde avant de continuer car ce processus écrasera les données MySQL actuelles.
Vous pouvez facilement restaurer l'intégralité de votre SGBD à l'aide de mysql
commande. La syntaxe de ceci ressemblera à ce qui suit :
mysql -u [username] -p [password] < backupFile.sql
Dans ce cas, nous restaurons simplement l'intégralité du SGBD. La commande ressemblera à ceci :
mysql -u root -p < 1266861650-backup-all.sql
Vous serez invité à entrer le mot de passe de l'utilisateur root MySQL. Une fois les informations d'identification correctes fournies, le processus de restauration commencera. Étant donné que ce processus restaure un SGBD entier, cela peut prendre de quelques secondes à plusieurs heures.
Option 2 :Restauration d'un SGBD entier à l'aide de fichiers de données MySQL copiés directement à partir de Répertoire de données de MySQL
Avant de commencer le processus de restauration, cette section suppose que votre système exécute une version nouvellement installée de MySQL sans bases de données ou tables existantes. Si vous avez déjà des bases de données et des tables dans votre SGBD MySQL, veuillez effectuer une sauvegarde avant de continuer car ce processus écrasera les données MySQL actuelles.
-
Si vous avez une sauvegarde complète de votre répertoire de données MySQL (généralement
/var/lib/mysql
), vous pouvez le restaurer à partir de la ligne de commande. Pour garantir une restauration réussie, vous devez d'abord arrêter le démon du serveur MySQL et supprimer les données actuelles dans le répertoire de données MySQL./etc/init.d/mysql stop rm -R /var/lib/mysql/*
-
Dans l'exemple suivant, la sauvegarde du répertoire de données MySQL se trouve dans le répertoire
/opt/database/backup-1266872202
annuaire. Si vous avez créé une archive du répertoire de données lorsque vous avez sauvegardé le répertoire de données de votre SGBD, vous devrez extraire les fichiers de l'archive avant de les copier avec les commandes suivantes :cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/ cd /var/lib/mysql tar xzvf mysqlBackup-1266872202.tar.gz
-
Avant de pouvoir redémarrer le processus de la base de données MySQL, nous devons nous assurer que les autorisations sont correctement définies sur le
/var/lib/mysql/
annuaire. Pour cet exemple, nous supposons que le démon du serveur MySQL s'exécute en tant qu'utilisateurmysql
avec le groupemysql
. Pour modifier les autorisations sur le répertoire de données, exécutez la commande suivante :chown -R mysql:mysql /var/lib/mysql
-
Modifiez le
mysql:mysql
partie de cette commande si votre instance MySQL s'exécute avec des autorisations d'utilisateur et de groupe différentes. La forme de cet argument est[user]:[group]
. Enfin, nous pouvons démarrer le démon du serveur MySQL avec la commande suivante :/etc/init.d/mysql start
Si vous recevez une erreur semblable à la suivante :
/usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Vous devrez trouver l'ancien
debian-sys-maint
le mot de passe de l'utilisateur dans/etc/mysql/debian.cnf
puis changez le nouveaudebian-sys-maint
mot de passe de l'utilisateur. Vous pouvez voir l'ancien mot de passe en utilisantcat
:cat /etc/mysql/debian.cnf | grep password
Copiez (ou mémorisez) le mot de passe. Ensuite, vous devrez modifier le nouveau
debian-sys-maint
mot de passe de l'utilisateur. Vous pouvez le faire en vous connectant en tant qu'utilisateur root MySQL et en lançant la commande suivante (oùest le mot de passe de l'ancien debian-sys-maint
utilisateur):1
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
-
Vous devrez ensuite redémarrer MySQL avec la commande suivante :
/etc/init.d/mysql restart
Une fois le serveur MySQL démarré avec succès, vous souhaiterez tester votre SGBD MySQL et vous assurer que toutes les bases de données et tables ont été restaurées correctement. Nous vous recommandons également d'auditer vos journaux pour détecter les erreurs potentielles. Dans certains cas, MySQL peut démarrer avec succès malgré des erreurs de base de données.
Restauration d'une seule base de données à partir d'une sauvegarde
Dans les cas où vous n'avez créé une sauvegarde que pour une seule base de données ou n'avez besoin de restaurer qu'une seule base de données, le processus de restauration est quelque peu différent.
Avant de commencer le processus de restauration, cette section suppose que votre système exécute une version nouvellement installée de MySQL sans bases de données ou tables existantes. Si vous avez déjà des bases de données et des tables dans votre SGBD MySQL, veuillez effectuer une sauvegarde avant de continuer car ce processus écrasera les données MySQL actuelles.
-
Pour restaurer une seule base de données à l'aide de
mysql
commande, préparez d'abord la base de données de destination. Connectez-vous à votre (nouveau) serveur de base de données MySQL à l'aide du client MySQL :mysql -u root -p -h localhost
-
Vous serez invité à entrer le mot de passe de l'utilisateur root MySQL. Après avoir fourni les informations d'identification correctes, vous devez créer la base de données de destination. Dans ce cas, le
customer
la base de données sera restaurée :1
CREATE DATABASE customer;
-
Comme pour toutes les instructions MySQL, n'omettez pas le point-virgule final (par exemple,
;
) à la fin de chaque commande. En fonction de votre déploiement, vous devrez peut-être créer un nouvel utilisateur MySQL ou recréer un utilisateur précédent avec accès à la base de données nouvellement créée. La commande de création d'un nouvel utilisateur MySQL prend la forme suivante :1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
Dans l'exemple suivant, nous allons créer un utilisateur nommé
customeradmin
:1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Maintenant, nous allons donner
customeradmin
privilèges d'accès aucustomer
base de données. La commande permettant d'accorder des privilèges à une base de données pour un utilisateur spécifique prend la forme suivante :1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
-
Pour les besoins de l'exemple suivant, nous donnerons
customeradmin
accès complet aucustomer
base de données. Exécutez la commande suivante dans le client MySQL :1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Vous devrez peut-être spécifier différents octrois d'accès en fonction des exigences de votre déploiement. Consultez la documentation officielle de l'instruction GRANT de MySQL. Une fois la base de données de destination et l'utilisateur MySQL créés, vous pouvez fermer le client MySQL avec la commande suivante :
quit
-
Vous pouvez maintenant utiliser le
mysql
commande pour restaurer votre fichier SQL. La forme de cette commande ressemble à ce qui suit :mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
Dans l'exemple suivant, nous allons restaurer le customer
base de données à partir d'un fichier de sauvegarde SQL nommé customerBackup.sql
(faites particulièrement attention au <
symbole dans cette commande) :
mysql -u root -p -h localhost customer < customerBackup.sql
Vous serez invité à entrer le mot de passe de l'utilisateur root MySQL. Une fois les informations d'identification correctes fournies, le processus de restauration commencera. La durée de cette opération dépend de la charge de votre système et de la taille de la base de données que vous restaurez. Cela peut prendre quelques secondes ou plusieurs heures.
Restauration d'une seule table à partir d'une sauvegarde
Option 1 :Restauration d'une seule table à l'aide de MySQL et des sauvegardes créées par mysqldump
-
Avant de commencer le processus de restauration, nous supposons que votre instance MySQL possède déjà une base de données existante pouvant recevoir la table que vous souhaitez restaurer. Si votre instance MySQL ne dispose pas de la base de données requise, nous devrons la créer avant de continuer. Tout d'abord, connectez-vous à votre instance MySQL avec la commande suivante :
mysql -u root -p -h localhost
-
Vous serez invité à entrer le mot de passe de l'utilisateur root MySQL. Après avoir fourni les informations d'identification correctes, vous devez créer la base de données de destination. Pour les besoins de cet exemple, nous allons créer le
customer
base de données.1
CREATE DATABASE customer;
Puis quittez le
mysql
invite :quit
Si vous disposez déjà de la base de données requise, vous pouvez ignorer l'étape ci-dessus en toute sécurité. Pour poursuivre la restauration de la table, lancez une commande sous la forme suivante :
mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
-
Pour l'exemple suivant, nous allons restaurer la
order
table dans lecustomer
existant base de données à partir d'un fichier de sauvegarde SQL nommécustomerOrderBackup.sql
. Soyez très prudent d'utiliser le<
opérateur dans la commande suivante :mysql -u root -p -h localhost customer < customerOrderBackup.sql
Vous serez invité à entrer le mot de passe de l'utilisateur root MySQL. Une fois les informations d'identification correctes fournies, le processus de restauration commencera. La durée de cette opération dépend de la charge de votre système et de la taille de la table que vous restaurez. Cela peut prendre quelques secondes ou plusieurs heures.
Option 2 :Restauration d'une seule table à l'aide le client MySQL et une instruction INFILE pour les sauvegardes créées avec OUTFILE
-
Avant de commencer le processus de restauration, nous supposons que votre instance MySQL possède déjà une base de données existante pouvant recevoir la table que vous souhaitez restaurer. Si votre instance MySQL ne dispose pas de la base de données requise, nous devrons la créer avant de continuer. Tout d'abord, connectez-vous à votre instance MySQL avec la commande suivante :
mysql -u root -p -h localhost
-
Vous serez invité à entrer le mot de passe de l'utilisateur root MySQL. Après avoir fourni les informations d'identification correctes, vous devez créer la base de données de destination. Pour les besoins de cet exemple, nous allons créer le
customer
base de données.1
CREATE DATABASE customer;
Puis quittez le
mysql
invite :quit
-
La sauvegarde de données utilisée dans ce cas a été créée à l'aide de
SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName
commande. Ce type de sauvegarde ne conserve que les données elles-mêmes, la structure de la table doit donc être recréée. Pour restaurer une seule table à partir du client MySQL, vous devez d'abord préparer la base de données et la table de destination. Connectez-vous à votre (nouvelle) instance MySQL à l'aide du client MySQL :mysql -u root -p -h localhost
-
Vous serez invité à entrer le mot de passe de l'utilisateur root MySQL. Une fois les informations d'identification correctes fournies, vous devez créer la base de données de destination. Dans ce cas, nous allons créer le
customer
base de données. Émettez la déclaration suivante :1
CREATE DATABASE customer;
-
N'oubliez pas que les points-virgules (par exemple
;
) après chaque instruction sont obligatoires. Vous devez maintenant créer la table de destination avec la structure correcte. Les types de données des champs de la table doivent refléter ceux de la table d'où provient la sauvegarde. Dans cet exemple, nous allons restaurer laorder
table ducustomer
base de données. Il y a 2 champs dans laorder
table,custNum
avec le type de donnéesINT
etorderName
avec le type de donnéesVARCHAR(20)
; la structure de votre tableau sera différente :1 2
USE customer; CREATE TABLE order (custNum INT, orderName VARCHAR(20));
-
En fonction de votre déploiement, vous devrez peut-être créer un nouvel utilisateur MySQL ou recréer un utilisateur précédent avec accès à la base de données nouvellement créée. La commande de création d'un nouvel utilisateur MySQL prend la forme suivante :
1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
Dans l'exemple suivant, nous allons créer un utilisateur nommé
customeradmin
:1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Maintenant, nous allons donner
customeradmin
privilèges d'accès aucustomer
base de données. La commande permettant d'accorder des privilèges à une base de données pour un utilisateur spécifique prend la forme suivante :1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
Pour les besoins de l'exemple suivant, nous donnerons
customeradmin
accès complet aucustomer
base de données. Exécutez la commande suivante dans le client MySQL :1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Vous devrez peut-être spécifier différents octrois d'accès en fonction des exigences de votre déploiement. Consultez la documentation officielle de l'instruction GRANT de MySQL. Une fois la table et l'utilisateur créés, nous pouvons importer les données de sauvegarde à partir du fichier de sauvegarde en utilisant le
LOAD DATA
commande. La syntaxe ressemble à ce qui suit :1
LOAD DATA INFILE '[filename]' INTO TABLE [tableName];
Dans l'exemple suivant, nous allons restaurer les données d'une table à partir d'un fichier nommé
customerOrderBackup.sql
. Lorsque le client MySQL reçoit le chemin et le nom du fichier aprèsINFILE
, il recherche ce fichier dans le répertoire de données MySQL. Si le nom de fichiercustomerOrderBackup.sql
a été donné, le chemin serait/var/lib/mysql/customerOrderBackup.sql
. Assurez-vous que le fichier à partir duquel vous essayez de restaurer existe, en particulier si MySQL génèreFile not found
erreurs. -
Pour importer les données depuis le
customerOrderBackup.sql
fichier situé dans/var/lib/mysql/
, lancez la commande suivante :1
LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;
This process can take anywhere from a few seconds to many hours depending on the size of your table. The duration of this operation depends on your system’s load and the size of the table that you are restoring. It may complete in a few seconds, or it may take many hours. After you have verified that your data was imported successfully, you can log out:
quit
Plus d'informations
Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.
- The Official MySQL Web Site
- Page Méthodes de sauvegarde de la base de données MySQL
- mysqldump Manual Page
- Schedule Tasks With Cron
- MySQL’s Grant Statement, Official Documentation