Maison  >  Article  >  base de données  >  Explication détaillée de la sauvegarde et de la récupération des données MySQL

Explication détaillée de la sauvegarde et de la récupération des données MySQL

迷茫
迷茫original
2017-03-26 13:31:421166parcourir

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)

1. précautions de sauvegarde

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

2. Utilisez mysqldump pour la sauvegarde du livre

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 :

-v : Afficher les informations détaillées de l'importation

-f : Si une erreur survient lors du processus d'importation, vous pouvez l'ignorer et continuer. en exécutant les instructions suivantes.

2. Restaurez les données dans le journal bin-log :
 [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ées
BEGIN
/*!*/;
# 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn