Rumah >pangkalan data >tutorial mysql >Ajar anda cara memulihkan satu jadual dalam MySQL melalui kaedah fizikal

Ajar anda cara memulihkan satu jadual dalam MySQL melalui kaedah fizikal

藏色散人
藏色散人ke hadapan
2023-01-22 08:30:021867semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang MySQL Ia terutamanya memperkenalkan cara menggunakan kaedah fizikal untuk memulihkan satu jadual dalam MySQL dengan cepat dan mengajar anda langkah demi langkah! Mari kita lihat bersama-sama, saya harap ia akan membantu semua orang.

Ajar anda cara memulihkan satu jadual dalam MySQL melalui kaedah fizikal

Penggunaan

1 Mula-mula buat ujian jadual ujian1 dan masukkan beberapa keping data:

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)

2 ujian jadual2:

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

3. Buang fail idb ujian jadual2 melalui kaedah buang jadual alter (untuk bersedia untuk langkah seterusnya menyalin data ujian1):

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

4 . Jalankan arahan berikut untuk menjana fail cfg test1, seperti berikut:

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

5 Salin fail cfg dan fail ibd bagi jadual sumber test1 ke ujian jadual sasaran, dan ubah suai. kebenaran fail:

cp test1.cfg test2.cfg
cp test1.ibd test2.ibd
chown -R mysql.mysql test2.*

6 Selepas salinan selesai, laksanakan arahan pilih dan cari ralat berikut:

mysql> select * from test2;
ERROR 1100 (HY000): Table 'test2' was not locked with LOCK TABLES

7. Jalankan jadual buka kunci, lepaskan ujian1.cfg fail jadual sumber, dan kemudian import fail 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)

8 Jalankan pilih sekali lagi dan ketahui bahawa data telah diimport:

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

Pengenalan kepada salinan fizikal. kaedah

Inti kaedah salinan fizikal jadual tunggal di atas terletak pada arahan cp Kerana ia melalui salinan fizikal, jika jadual yang disalin sangat besar, maka melalui salinan fizikal, ia akan menjadi lebih cepat daripada. penulisan SQL logik, seperti memasukkan ke dalam pernyataan pilih.

简单总结一下上述物理复制过程:
  • 1. Cipta jadual seperti sintaks mencipta jadual sasaran kosong dengan struktur jadual yang sama
  • 2. Jadual sasaran melaksanakan alter table buang dan buang fail ibd
  • 3. Jalankan jadual alter untuk eksport sintaks dalam jadual sumber untuk menjana fail .cfg dan kunci jadual
  • 4. Gunakan arahan cp untuk menyalin fail cfg jadual sumber dan fail ibd ke jadual sasaran
  • 5 , buka kunci jadual melepaskan fail cfg dan kunci jadual sumber
  • 6. Perintah import jadual alter mengimport fail data ibd jadual sasaran.

ubah jadual untuk pengenalan sintaks eksport:

  • 1 Perintah ini adalah untuk menyegarkan semula data tentang jadual ini dalam memori ke cakera untuk memastikan data boleh binlog Dirakam;
  • 2. Operasi ini memerlukan keizinan siram atau muat semula
  • 3. Dalam FOR EXPORT Kunci MDL yang diperoleh sebelum ini tidak akan dikeluarkan apabila operasi selesai dan perlu dikeluarkan secara manual
  • 4 InnoDB akan menjana fail bernama table_name.cfg dalam direktori pangkalan data yang sama dengan jadual
  • 5 Selepas memproses salinan jadual, anda perlu menggunakan jadual UNLOCK untuk melepaskan kunci MDL jadual sumber atau memutuskan sambungan.
Nota:

Oleh kerana mengubah jadual untuk eksport mengunci jadual, kaedah ini lebih sesuai untuk menghentikan hubungan replikasi pada pangkalan data hamba dan kemudian melaksanakan operasi replikasi jadual. Jika terdapat operasi perniagaan pada jadual sumber semasa, pertimbangan yang teliti diperlukan.

Pembelajaran yang disyorkan: "

Tutorial Video MySQL"

Atas ialah kandungan terperinci Ajar anda cara memulihkan satu jadual dalam MySQL melalui kaedah fizikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:cnblogs.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam