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

Tutoriel sur la sauvegarde et la restauration (exportation et importation) des bases de données MySQL

phpMyAdmin peut être utilisé pour exporter ou sauvegarder facilement des bases de données MySQL ou MariaDB. Cependant, si la taille de la base de données est très grande, ce ne sera probablement pas une bonne idée. phpMyAdmin permet aux utilisateurs d'enregistrer le vidage de la base de données sous forme de fichier ou de l'afficher à l'écran, ce qui implique d'exporter des instructions SQL à partir du serveur et de transmettre les données via une connexion réseau plus lente ou Internet à l'ordinateur de l'utilisateur. Ce processus ralentit le processus d'exportation, augmente le temps de verrouillage de la base de données et donc l'indisponibilité de MySQL ou de MariaDB, ralentit le serveur et peut simplement planter le serveur Apache HTTPD si trop de connexions Web entrantes monopolisent les ressources du système.

La meilleure façon de sauvegarder et d'exporter la base de données MySQL ou MariaDB consiste à effectuer la tâche localement sur le serveur, afin que les données des tables puissent être instantanément déversées sur le disque local sans délai. Ainsi, la vitesse d'exportation sera plus rapide et réduira le temps de verrouillage de la base de données ou de la table MySQL ou MariaDB pour l'accès. Ce tutoriel est le guide sur la façon de sauvegarder (exporter) et de restaurer (importer) la ou les bases de données MySQL ou MariaDB sur le serveur de base de données lui-même en utilisant mysqldump et mysql utilitaires. Il existe essentiellement deux méthodes pour sauvegarder MySQL ou MariaDB , l'une consiste à copier tous les fichiers de table (fichiers *.frm, *.MYD et *.MYI) ou à utiliser mysqlhotcopy utilitaire, mais cela ne fonctionne que pour les tables MyISAM. Le didacticiel ci-dessous se concentrera sur mysqldump qui fonctionne à la fois pour les tables MyISAM et InnoDB.

Comment exporter ou sauvegarder ou vider une base de données MySQL ou MariaDB

Pour exporter une base de données MySQL ou MariaDB dans un fichier de vidage, tapez simplement la syntaxe de commande suivante dans le shell. Vous pouvez utiliser Telnet ou SSH pour vous connecter à distance à la machine si vous n'avez pas accès à la boîte physique.

mysqldump -u username -ppassword database_name > dump.sql

Remplacer nom d'utilisateur avec un ID utilisateur MySQL ou MariaDB valide, mot de passe avec le mot de passe valide pour l'utilisateur (IMPORTANT :pas d'espace après -p et le mot de passe, sinon mysqldump vous demandera le mot de passe mais traitera le mot de passe comme nom de la base de données, donc la sauvegarde échouera) et database_name avec le nom réel de la base de données que vous souhaitez exporter. Enfin, vous pouvez mettre le nom que vous voulez pour le fichier de vidage SQL de sortie, ici dump.sql .

L'ensemble des données, tables, structures et base de données de database_name sera sauvegardé dans un fichier texte SQL nommé dump.sql avec la commande ci-dessus.

Comment exporter une structure de base de données MySQL ou MariaDB uniquement

Si vous n'avez plus besoin des données dans les tables de la base de données (peu probable), ajoutez simplement –no-data basculez pour exporter uniquement les structures des tables. Par exemple, la syntaxe est :

mysqldump -u username -ppassword --no-data database_name > dump.sql

Comment sauvegarder uniquement les données d'une base de données MySQL ou MariaDB

Si vous souhaitez uniquement sauvegarder les données, utilisez –no-create-info option. Avec ce paramètre, le vidage ne recréera pas la base de données, les tables, les champs et les autres structures lors de l'importation. N'utilisez cette option que si vous êtes à peu près sûr d'avoir des bases de données en double avec la même structure, où vous n'avez qu'à actualiser les données.

mysqldump -u username -ppassword --no-create-info database_name > dump.sql

Comment vider plusieurs bases de données MySQL ou MariaDB dans un fichier texte

–bases de données L'option vous permet de spécifier plus d'une base de données. Exemple de syntaxe :

mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql

Comment vider toutes les bases de données dans MySQL ou MariaDB Server

Pour vider toutes les bases de données, utilisez la commande –all-databases option, et aucun nom de base de données n'a plus besoin d'être spécifié.

mysqldump -u username -ppassword --all-databases > dump.sql

Comment sauvegarder en ligne les tables InnoDB

La sauvegarde de la base de données rend inévitable le serveur MySQL ou MariaDB indisponible pour les applications car lors de l'exportation, toutes les tables ont acquis un verrou de lecture global à l'aide de FLUSH TABLES WITH READ LOCK au début du vidage jusqu'à la fin. Ainsi, bien que les instructions READ puissent continuer, toutes les instructions INSERT, UPDATE et DELETE devront être mises en file d'attente en raison de tables verrouillées, comme si MySQL ou MariaDB était en panne ou bloqué. Si vous utilisez InnoDB, –single-transaction est le moyen de minimiser cette durée de temps de verrouillage à presque inexistante comme si vous effectuiez une sauvegarde en ligne. Cela fonctionne en lisant les coordonnées du journal binaire dès que le verrou a été acquis, et le verrou est alors immédiatement libéré.

Syntaxe :

mysqldump -u username -ppassword  --all-databases --single-transaction > dump.sql

Comment restaurer et importer une base de données MySQL ou MariaDB

Vous pouvez restaurer à partir de phpMyAdmin, en utilisant l'onglet Importer. Pour un moyen plus rapide, téléchargez le fichier de vidage sur le serveur MySQL ou MariaDB et utilisez la commande suivante pour réimporter les bases de données dans le serveur MySQL ou MariaDB.

mysql -u username -ppassword database_name < dump.sql
Si vous souhaitez vous connecter à distance aux serveurs MySQL ou MariaDB sur un autre serveur, ajoutez -h server-name-or-IP-address à la commande.

L'importation et l'exportation de la base de données MySQL ou MariaDB sont non seulement importantes pour récupérer les données en cas de catastrophe, mais offrent également un moyen simple de migrer ou de passer à un autre serveur, par exemple lors du changement de fournisseur d'hébergement Web. Cependant, notez qu'un problème commun - l'encodage du jeu de caractères. La version plus récente de mysqldump utilise UTF8 comme jeu de caractères par défaut si rien n'est spécifié, tandis que les versions plus anciennes (généralement antérieures à 4.1) utilisent Latin1 comme jeu de caractères par défaut. Si le jeu de caractères de votre base de données est Latin1 et que vous le videz dans le classement UTF8, les données peuvent finir par devenir simplement des ordures, brouillées ou illisibles (ce qui arrive fréquemment avec le blog WordPress). Dans ce cas, utilisez –default-character-set=charset_name option pour spécifier le jeu de caractères ou convertir la base de données en UTF8.