Maison > Article > base de données > Explication détaillée de la sauvegarde et de la récupération MySQL
Dans MySQL, il existe des sauvegardes logiques et des sauvegardes physiques. Le plus grand avantage de la sauvegarde logique est que la même méthode peut être utilisée pour sauvegarder différents moteurs de stockage. La sauvegarde physique est différente et différents moteurs de stockage ont des méthodes de sauvegarde différentes.
Dans MySQL, la sauvegarde logique utilise mysqldump pour sauvegarder les données de la base de données sous forme de fichier texte. Le fichier sauvegardé peut être visualisé. et édité. Selon l'étendue de la sauvegarde, la sauvegarde peut être divisée en trois types de sauvegarde suivants.
Sauvegarder une base de données spécifiée ou certaines tables de la base de données
mysqldump [options] nom de la base de données [nom de la table] > data.sql
Sauvegarder plusieurs bases de données spécifiées
mysqldump [options] –database > data.sql base de données 1 base de données 2 base de données 3...
Sauvegarder toutes les bases de données
mysqldump [options] –all-database > data.sql
Analyse : [options] Lors de la sauvegarde, informations d'autorisation requises, etc. Mysqldump propose de nombreuses options, qui peuvent être consultées via mysqldump –help. Afin d'assurer la cohérence de la sauvegarde des données, lorsque le moteur de stockage MySQL est au nord, vous devez ajouter le paramètre -l, ce qui signifie ajouter des verrous en lecture à toutes les tables. Pendant la période de sauvegarde, toutes les tables seront uniquement lues. , pas écrit. Mais pour le moteur InnoDB, une transaction unique peut être utilisée. Fichier de données
Paramètres sauvegardés par data.sql :
l : représente le verrouillage de toutes les tables
f : représente la génération d'un nouveau fichier de date
L'instance sera xxpt Toutes les tables de la base de données sont sauvegardées dans la table dequan.sql. La commande est la suivante :
mysqldump -uroot -p xxpt >dequan.sql
Comme je n'ai pas spécifié le chemin de sauvegarde ci-dessus, par défaut, il sera sauvegardé dans le chemin actuel chemin, donc la sauvegarde est vers D:wampbinmysqlmysql5 .6.17bin le chemin est en panne.
La récupération de MySQLdump est également très simple, utilisez simplement la sauvegarde comme entrée. Les résultats sont les suivants :
mysql -uroot -p dbname
La récupération incomplète inclut la récupération basée sur un point dans le temps et la récupération basée sur l'emplacement. Le point temporel et la position correspondent au point temporel et à la position dans le journal binaire (binlog log).
Si la salle de données est configurée comme étant erronée entre 16h00 et 17h00, elle doit être ignorée pendant la récupération . Jetons d'abord un coup d'œil au journal binlog. Par exemple, la mise à jour des données après 16 heures est incorrecte et doit être ignorée lors de la récupération. La suppression des données après 17 heures est correcte et doit être conservée.
1. Via mysql -uroot -p dbname
Lors de l'utilisation de la récupération d'emplacement, nous devons d'abord vérifier le fichier journal binlog pour déterminer le numéro d'emplacement, puis utilisez la commande suivante pour restaurer :
mysqlbinlog D:wampbinmysqlmysql5.6.17datamybinlog.000012 –stop-position=716406|mysql -uroot -p
Restaurer les opérations après 5 points
D : wampbinmysqlmysql5.6.17datamybinlog .000012 –start-position=723613|mysql -uroot -p
La sauvegarde physique est divisée en sauvegarde à froid et sauvegarde à chaud . Par rapport à la sauvegarde logique, son plus grand avantage est la vitesse rapide de sauvegarde et de récupération. Car le principe de la sauvegarde physique repose sur le fichier cp.
La sauvegarde à froid est en fait une méthode d'arrêt du service de base de données et de copie des fichiers de données. Cette méthode convient à la fois à MyISAM et à InnoDB.
Restaurer : arrêtez d'abord le service Mysql, restaurez les fichiers de données MySQL au niveau du système d'exploitation, puis redémarrez le service Mysql et utilisez l'outil Mysqlbinlog pour restaurer tous les binlogs depuis la sauvegarde.
La sauvegarde à chaud des différents moteurs de stockage dans MySQL est différente.
Le principe de sauvegarde du moteur de stockage MyISAM est d'ajouter un verrou en lecture à la table à sauvegarder, puis de cp le fichier de données dans le répertoire de sauvegarde. Méthodes courantes
Méthode 1 : Utiliser mysqlhotcop
mysqlhotcop db_name [répertoire]
Méthode 2 : Verrouiller manuellement la copie de la table
Ajoutez d’abord des verrous en lecture à toutes les tables de la base de données, puis cp les données.
Verrouillez toutes les tables avec verrouillage en lecture
Apprentissage...
Utilisez la commande SELECT …INTO OUTFILE … [options] pour implémenter
Les paramètres des options sont les suivants
Le chemin par défaut est le chemin correspondant aux données :
Utiliser mysqldump
mysqldump - u username -T targetDir dbname tableName[options]
Par exemple :
mysqldump -uroot -p -T D:/wamp/bin/mysql/mysql5.6.17/ xxpt t1
Deux fichiers sont générés, comme indiqué ci-dessous :
Les informations sur les données sont enregistrées dans t1.txt Le contenu du fichier t1.sql est le suivant
-- MySQL dump 10.13 Distrib 5.6.17, for Win32 (x86) ---- Host: localhost Database: xxpt -- ------------------------------------------------------ -- Server version 5.6.17-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; ---- Table structure for table `t1`--DROP TABLE IF EXISTS `t1`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `t1` ( `id1` int(11) NOT NULL DEFAULT '0', `id2` int(3) unsigned zerofill NOT NULL DEFAULT '000') ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2016-04-18 19:30:51
charger le fichier de données
par exemple :
charger le fichier de données 'D:/wamp/bin/mysql/mysql5.6.17/t1.txt' dans la table t1
Méthode 2 : Utiliser mysqlinport