Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sauvegardez vos bases de données MySQL

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 avec mysqldump 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 rapide mysqlhotcopy .

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.

  1. Avant de commencer, nous vous recommandons d'effectuer un LOCK TABLES sur les tables que vous avez l'intention de sauvegarder, suivi de FLUSH 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 de LOCK TABLES ressemble à ceci :

    1
    
    LOCK TABLES tableName READ;

    Pour effectuer un LOCK TABLES sur la order table du customer 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 le customer base de données (la fin ; est requis pour les commandes MySQL) :

    1
    2
    3
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
  2. 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 du customer 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, le OUTFILE 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
    
  3. 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.

  1. 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/*
    
  2. 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
    
  3. 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'utilisateur mysql avec le groupe mysql . Pour modifier les autorisations sur le répertoire de données, exécutez la commande suivante :

    chown -R mysql:mysql /var/lib/mysql
    
  4. 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 nouveau debian-sys-maint mot de passe de l'utilisateur. Vous pouvez voir l'ancien mot de passe en utilisant cat :

    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;
  5. 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.

  1. 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
    
  2. 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;
  3. 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]';
  4. Dans l'exemple suivant, nous allons créer un utilisateur nommé customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  5. Maintenant, nous allons donner customeradmin privilèges d'accès au customer 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]'
  6. Pour les besoins de l'exemple suivant, nous donnerons customeradmin accès complet au customer base de données. Exécutez la commande suivante dans le client MySQL :

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  7. 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
    
  8. 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

  1. 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
    
  2. 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
    
  3. Pour l'exemple suivant, nous allons restaurer la order table dans le customer 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

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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;
  5. 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 la order table du customer base de données. Il y a 2 champs dans la order table, custNum avec le type de données INT et orderName avec le type de données VARCHAR(20); la structure de votre tableau sera différente :

    1
    2
    
    USE customer;
    CREATE TABLE order (custNum INT, orderName VARCHAR(20));
  6. 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]';
  7. Dans l'exemple suivant, nous allons créer un utilisateur nommé customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  8. Maintenant, nous allons donner customeradmin privilèges d'accès au customer 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 au customer base de données. Exécutez la commande suivante dans le client MySQL :

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  9. 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ès INFILE , il recherche ce fichier dans le répertoire de données MySQL. Si le nom de fichier customerOrderBackup.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ère File not found erreurs.

  10. 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