Maison > base de données > tutoriel mysql > le corps du texte

Apprenez à restaurer une seule table dans MySQL via des méthodes physiques

藏色散人
Libérer: 2023-01-22 08:30:02
avant
1844 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur MySQL. Il présente principalement comment utiliser des méthodes physiques pour restaurer rapidement une seule table dans MySQL et vous apprend étape par étape ! Jetons-y un coup d'œil ensemble, j'espère que cela sera utile à tout le monde.

Apprenez à restaurer une seule table dans MySQL via des méthodes physiques

Utilisation

1. Créez d'abord une table de test test1 et insérez plusieurs éléments de données :

mysql> create table test1 (id int auto_increment primary key,name varchar(20));
Query OK, 0 rows affected (0.05 sec)

mysql> insert into test1 (name) values ('张三'),('李四'),('王二');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test1;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王二   |
+----+--------+
3 rows in set (0.00 sec)
Copier après la connexion

2 Créez la table cible test2 :

mysql> create table test2 like test1;
Query OK, 0 rows affected (0.10 sec)
查看数据目录里面的ibd文件(test2.ibd、test1.ibd):
-rw-r-----. 1 * * 114688 Nov  2 16:20 test1.ibd
-rw-r-----. 1 * * 114688 Nov  2 16:23 test2.ibd
Copier après la connexion

3. Supprimez l'IDB de la table test2 via la modification de la table. method File (pour préparer la prochaine étape de copie des données de test1) :

mysql> alter table test2 discard tablespace;   
Query OK, 0 rows affected (0.02 sec)

查看ibd文件情况,发现test2的ibd文件已经被删除

-rw-r----- 1 * * 114688 Nov  2 16:20 test1.ibd
Copier après la connexion

4 Exécutez la commande suivante pour générer un fichier cfg de test1, comme suit :

mysql> flush table test1 for export; 
Query OK, 0 rows affected (0.00 sec)

生成了一个test1.cfg的cfg文件

-rw-r----- 1 * *    655 Nov  2 16:25 test1.cfg
-rw-r----- 1 * * 114688 Nov  2 16:20 test1.ibd
Copier après la connexion

5. la table source test1 vers la table cible test2 et modifiez les autorisations du fichier :

cp test1.cfg test2.cfg
cp test1.ibd test2.ibd
chown -R mysql.mysql test2.*
Copier après la connexion

6 Une fois la copie terminée, exécutez la commande select et recherchez l'erreur suivante :

mysql> select * from test2;
ERROR 1100 (HY000): Table 'test2' was not locked with LOCK TABLES
Copier après la connexion

7. cfg de la table source, puis importez le fichier ibd :

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

并用alter table的方法为目标表test2导入这个ibd文件:

mysql> alter table test2 import tablespace; 
Query OK, 0 rows affected (0.03 sec)
1 row in set (0.00 sec)
Copier après la connexion

8. Exécutez à nouveau select et constatez que les données ont été importées :

mysql> select * from test2;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王二   |
+----+--------+
3 rows in set (0.00 sec)
Copier après la connexion

Introduction à la méthode de copie physique

Le cœur de la copie physique de table unique ci-dessus. La méthode réside dans la commande cp. Comme il s'agit d'une copie physique, si la table copiée est très volumineuse, la copie physique pass sera beaucoup plus rapide que l'écriture SQL logique, comme l'insertion dans l'instruction select.

简单总结一下上述物理复制过程:
Copier après la connexion
  • 1. Créez une syntaxe de type table pour créer une table cible vide avec la même structure de table
  • 2. Exécutez alter table waste sur la table cible et supprimez le fichier ibd
  • 3. table source pour générer le fichier .cfg et verrouiller la table
  • 4. Utilisez la commande cp pour copier le fichier cfg et le fichier ibd de la table source vers la table cible
  • 5. Le déverrouillage des tables libère le fichier cfg et le verrouillage de la table source. source table
  • 6. La commande alter table import importe l'ibd des fichiers de données de la table cible.

alter table pour l'introduction de la syntaxe d'exportation :

  • 1 Cette commande consiste à actualiser les données sur cette table dans la mémoire sur le disque pour garantir que les données peuvent être enregistrées par binlog
  • 2. table Ou autorisation de rechargement ;
  • 3. Cette opération maintiendra le verrou MDL partagé de la table actuelle, empêchant d'autres sessions de modifier la structure de la table. Lorsque l'opération FOR EXPORT sera terminée, le verrou MDL précédemment acquis ne sera pas libéré et n'aura pas besoin d'être libéré. à libérer manuellement. 4. InnoDB Un fichier nommé table_name.cfg sera généré dans le même répertoire de base de données que la table 5. Après avoir traité la copie de la table, vous devez utiliser UNLOCK tables pour libérer le verrou MDL de la table source ou. déconnecter.
  • Remarque :
  • Étant donné que la modification de la table pour l'exportation verrouille la table, cette méthode est plus appropriée pour arrêter la relation de réplication sur la base de données esclave, puis effectuer l'opération de réplication de la table. S'il existe une opération commerciale sur la table source actuelle, un examen attentif est nécessaire.

Apprentissage recommandé : "

Tutoriel vidéo MySQL

"

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!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal