Maison > Article > base de données > Explication détaillée de la sauvegarde et de la récupération des données MySQL
Cet article utilise mysql5.5 centos6.5 64 bits (j'utilise rpm pour installer mysql et le répertoire d'installation de la base de données est le répertoire par défaut)
Problème de verrouillage en lecture : une fois que la base de données (ou une certaine table) effectue une opération de verrouillage en lecture, cela affectera l'opération d'écriture de la base de données, de sorte que la base de données ne peut pas être écrite à cette fois. La raison pour laquelle l'opération de verrouillage en lecture est effectuée pendant la sauvegarde des données est de garantir l'intégrité et la cohérence des données de sauvegarde, et elles seront automatiquement déverrouillées une fois la sauvegarde des données terminée.
Problème de journal de mise à jour : un nouveau fichier journal est généré à chaque fois que les données sont sauvegardées. De cette façon, si la base de données plante soudainement après une période de sauvegarde, les données pendant cette période. La période peut être restaurée via le journal bin-log. Étapes de récupération des données : restaurer les données sauvegardées + restaurer les données dans le dernier journal bin-log
mysqldump : commande pour sauvegarder les données de la base de données dans un fichier texte. La structure du tableau et les données du tableau seront stockées dans le fichier texte généré.
Comment fonctionne la commande mysqldump : elle découvre d'abord la structure de la table qui doit être sauvegardée, puis génère une instruction CREATE dans le fichier texte. Ensuite, convertissez tous les enregistrements de la table en une instruction INSERT. Ensuite, grâce à ces instructions, vous pouvez créer des tableaux et insérer des données.
Sauvegardez la base de données de test dans le répertoire /tmp/mysql_back/
[root@localhost tmp]# mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';
Interprétation des paramètres :
1.
2. -uroot -p111111 Nom d'utilisateur et mot de passe
3. test : nom de la base de données à sauvegarder
4. 🎜 >5. -F : Générer un nouveau fichier journal
Après avoir exécuté cette instruction, vous constaterez qu'un nouveau journal bin-log mysql-bin.000002
6. /tmp/mysql_back/test.sql : L'emplacement et le nom du fichier de sauvegarde généré3. . Récupération des données de sauvegarde :
[root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql
Tous les enregistrements dans le journal mysql-bin.000002 sous /var/lib/mysql
[ root@ localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 |mysql -uroot -p111111 test;
3. Restaurer les données à l'emplacement spécifié dans le journal bin-log
Données de restauration de position transmises
Restaurer les données dans le journal bin-log à la position 172, 473 (end_log_pos)[root@localhost mysql]# mysqlbinlog --no- defaults mysql-bin.000002 --start-position="175" --stop-position="473"|mysql -uroot -p111111 test;4. Restaurez la période spécifiée dans le journal bin-log. Format des donnéesBEGIN /*!*/; # at 175 #170206 22:55:48 server id 1 end_log_pos 263 Query thread_id=17 exec_time=0 error_code=0 use `test`/*!*/; SET TIMESTAMP=1486392948/*!*/; insert into t1 values(10) /*!*/; # at 263 #170206 22:55:48 server id 1 end_log_pos 290 Xid = 178 COMMIT/*!*/; # at 290 #170206 22:55:54 server id 1 end_log_pos 358 Query thread_id=17 exec_time=0 error_code=0 SET TIMESTAMP=1486392954/*!*/; BEGIN /*!*/; # at 358 #170206 22:55:54 server id 1 end_log_pos 446 Query thread_id=17 exec_time=0 error_code=0 SET TIMESTAMP=1486392954/*!*/; insert into t1 values(12) /*!*/; # at 446 #170206 22:55:54 server id 1 end_log_pos 473 Xid = 179 COMMIT/*!*/; # at 473 #170206 22:56:42 server id 1 end_log_pos 547 Query thread_id=17 exec_time=0 error_code=0 SET TIMESTAMP=1486393002/*!*/; truncate t1
: Remplacez 3
--start-position="175" par --start-date="2016-12-30 21:30:34"
--stop-position="473" est remplacé par --stop-date="2016-12-30 23:30:34"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!