Jadual Kandungan
情况一:误删部分数据,需要用最近一次备份覆盖
情况二:误删 table,表结构已经被drop了
Rumah pangkalan data tutorial mysql MySQL单表ibd文件恢复_MySQL

MySQL单表ibd文件恢复_MySQL

Jun 01, 2016 pm 01:39 PM
baru permukaan

bitsCN.com

前言:

随着innodb的普及,innobackup也成为了主流备份方式。物理备份对于新建slave,全库恢复的需求都能从容应对。

但当面临单表数据误删,或者单表误drop的情况,如果使用物理全备进行恢复呢? 

下文将进行详细分析。 

恢复过程中需要用到的工具,percona data recover tool : https://launchpad.net/percona-innodb-recovery-tool

 

情况一:误删部分数据,需要用最近一次备份覆盖

来自同一台机器的ibd恢复覆盖,且备份后table没有被recreate过。

这种情况是最简单的,备份时的ibd文件(后称老ibd)中的space id和index id 与 新ibd的space id 和index id一致。

且和ibdata文件中的space id和index id一致。因此,物理文件可以直接覆盖做恢复。

以下是详细步骤

Step -1 : 物理备份

 innobackupex --defaults-file=/usr/local/mysql3321/my.cnf --socket=/xfs/mysql3321/mysql.sock --user=root --password=password /xfs/backup/

Step 0 : apply log

innobackupex --apply-log --defaults-file=/usr/local/mysql3321/my.cnf  /xfs/backup/2012-10-17_11-29-20/

Step 1 : 备份现在的ibd文件(可选)

cp -a testibd.ibd testibd.bak

Step 2 : 舍弃现在ibd文件

mysql> alter table testibd discard tablespace

Step 3 : 复制备份ibd文件

shell> cp /xfs/backup/2012-10-17_11-29-20/test/testibd.ibd /xfs/mysql3321/test/ 

shell> chown mysql:mysql /xfs/mysql3321/test/testibd.ibd

Step 4 : 导入ibd文件

mysql> alter table testibd import tablespace

 

情况二:误删 table,表结构已经被drop了

这种情况稍复杂,不过恢复过程还是比较容易操作的。由于table被drop后的space id会留空因此备份文件的space id不会被占用。

我们只需要重建表结构,然后把ibdata中该表的space id还原,物理文件可以直接覆盖做恢复了。

Step 1 : 重建表

mysql> create table testibd (UserID int);

Step 2 : 关闭mysql服务(必须)

shell> service mysqld3321 stop

Step 3: 准备ibd文件  apply log

shell> innobackupex --apply-log --defaults-file=/usr/local/mysql3321/my.cnf  /xfs/backup/2012-10-17_11-29-20/

Step 4 : 备份现在的ibd文件(可选)

cp -a testibd.ibd testibd.bak

Step 5 : 复制备份ibd文件

shell> cp -a /xfs/backup/2012-10-17_11-29-20/test/testibd.ibd /xfs/mysql3321/test/ 

shell> chown mysql:mysql /xfs/mysql3321/test/testibd.ibd

Step 6 : 使用percona recovery tool 修改ibdata

shell> /root/install/percona-data-recovery-tool-for-innodb-0.5/ibdconnect -o /xfs/mysql3321/ibdata1 -f /xfs/mysql3321/test/testibd.ibd -d test -t testibd

输出结果
Initializing table definitions...Processing table: SYS_TABLES - total fields: 10 - nullable fields: 6 - minimum header size: 5 - minimum rec size: 21 - maximum rec size: 555Processing table: SYS_INDEXES - total fields: 9 - nullable fields: 5 - minimum header size: 5 - minimum rec size: 29 - maximum rec size: 165Setting SPACE=1 in SYS_TABLE for `test`.`testibd`Check if space id 1 is already usedPage_id: 8, next page_id: 4294967295Record position: 65Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 8 50 3 2 0 0 0 0 0 Db/table: infimumSpace id: 1768842857 (0x696E6669)Next record at offset: 8DRecord position: 8DChecking field lengths for a row (SYS_TABLES): OFFSETS: 16 11 17 24 32 36 40 48 52 52 Db/table: SYS_FOREIGNSpace id: 0 (0x0)Next record at offset: D5Record position: D5Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 16 22 29 37 41 45 53 57 57 Db/table: SYS_FOREIGN_COLSSpace id: 0 (0x0)Next record at offset: 122Record position: 122Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 12 18 25 33 37 41 49 53 53 Db/table: test/testibdSpace id: 2 (0x2)Next record at offset: 74Space id 1 is not used in any of the records in SYS_TABLESPage_id: 8, next page_id: 4294967295Record position: 65Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 8 50 3 2 0 0 0 0 0 Db/table: infimumSpace id: 1768842857 (0x696E6669)Next record at offset: 8DRecord position: 8DChecking field lengths for a row (SYS_TABLES): OFFSETS: 16 11 17 24 32 36 40 48 52 52 Db/table: SYS_FOREIGNSpace id: 0 (0x0)Next record at offset: D5Record position: D5Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 16 22 29 37 41 45 53 57 57 Db/table: SYS_FOREIGN_COLSSpace id: 0 (0x0)Next record at offset: 122Record position: 122Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 12 18 25 33 37 41 49 53 53 Db/table: test/testibdSpace id: 2 (0x2)Updating test/testibd (table_id 17) with id 0x01000000SYS_TABLES is updated successfullyInitializing table definitions...Processing table: SYS_TABLES - total fields: 10 - nullable fields: 6 - minimum header size: 5 - minimum rec size: 21 - maximum rec size: 555Processing table: SYS_INDEXES - total fields: 9 - nullable fields: 5 - minimum header size: 5 - minimum rec size: 29 - maximum rec size: 165Setting SPACE=1 in SYS_INDEXES for TABLE_ID = 17Page_id: 11, next page_id: 4294967295Record position: 65Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 50 7 2 0 0 0 0 TABLE_ID: 3798561113125514496SPACE: 1768842857Next record at offset: 8CRecord position: 8CChecking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 35 39 43 47 TABLE_ID: 11SPACE: 0Next record at offset: CERecord position: CEChecking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 36 40 44 48 TABLE_ID: 11SPACE: 0Next record at offset: 111Record position: 111Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 36 40 44 48 TABLE_ID: 11SPACE: 0Next record at offset: 154Record position: 154Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 35 39 43 47 TABLE_ID: 12SPACE: 0Next record at offset: 22CRecord position: 22CChecking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 44 48 52 56 TABLE_ID: 17SPACE: 2Updating SPACE(0x00000001 , 0x01000000) for TABLE_ID: 17sizeof(s)=4Next record at offset: 74SYS_INDEXES is updated successfully
Salin selepas log masuk

 

Step 7 : 使用percona recovery tool 重新checksum ibdata

重复执行以下命令,直到程序没有输出为止。

shell> /root/install/percona-data-recovery-tool-for-innodb-0.5/innochecksum -f /xfs/mysql3321/ibdata1

输出结果
page 8 invalid (fails old style checksum)page 8: old style: calculated = 0xF4AD74CB; recorded = 0xEECB309Dfixing old checksum of page 8page 8 invalid (fails new style checksum)page 8: new style: calculated = 0x6F0C29B4; recorded = 0x3D02308Cfixing new checksum of page 8page 11 invalid (fails old style checksum)page 11: old style: calculated = 0x3908087C; recorded = 0xF9E8D30Cfixing old checksum of page 11page 11 invalid (fails new style checksum)page 11: new style: calculated = 0xB26CFD77; recorded = 0xDB25D39Dfixing new checksum of page 11
Salin selepas log masuk

 

Step 8 : 启动mysql服务

shell> service mysqld3321 start

 

参考文档:

http://www.chriscalender.com/?p=28

http://www.mysqlperformanceblog.com/2011/05/13/connecting-orphaned-ibd-files/

http://blogs.innodb.com/wp/2012/04/innodb-transportable-tablespaces/

 

 

 

bitsCN.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara mencipta simulator baharu dalam Simulator Kilat - Cara mencipta simulator baharu dalam Simulator Kilat Cara mencipta simulator baharu dalam Simulator Kilat - Cara mencipta simulator baharu dalam Simulator Kilat Mar 05, 2024 pm 03:04 PM

Baru-baru ini, beberapa pengguna yang baru memuat turun dan menghubungi perisian simulator kilat bertanya kepada editor bagaimana untuk mencipta simulator baru dalam simulator kilat Kandungan berikut membawa kaedah mencipta simulator baru dalam simulator kilat . Cari perisian simulator kilat. Klik dua kali untuk membuka pembuka berbilang Thunderbolt. Klik Simulator Baharu/Salin. Klik Simulator Baharu. Anda boleh mendapatkan simulator baharu. Cari perisian simulator kilat, klik dua kali untuk membuka berbilang pembuka kilat, klik Simulator Baharu/Salin, klik Simulator Baharu, dan anda akan mendapat simulator baharu.

Cara membuat dokumen Word baharu pada komputer anda Cara membuat dokumen Word baharu pada komputer anda Dec 27, 2023 pm 10:05 PM

Terdapat banyak cara untuk mencipta dokumen perkataan baharu Kita boleh klik kanan pada desktop dan klik Dokumen Dokumen Baharu atau Dokumen Docx. Cara membuat dokumen perkataan baru menggunakan komputer: win11: 1. Pertama, kita klik kanan "Baru". 2. Kemudian pilih fail "docx atau doc". 3. Akhirnya, penciptaan dapat diselesaikan. win10: 1. Kami klik kanan dan pilih "Baru". 2. Kemudian pilih salah satu daripada dua dokumen. 3. Akhirnya, penciptaan selesai. win7: 1. Pertama, klik kanan dan pilih "Baru". 2. Kemudian pilih dokumen perkataan. 3. Akhirnya, penciptaan baru dapat disiapkan.

Bagaimana untuk mencipta versi kelabu volum rentang baharu pada cakera Win10 Bagaimana untuk mencipta versi kelabu volum rentang baharu pada cakera Win10 Jul 02, 2023 am 08:13 AM

Apakah yang perlu saya lakukan jika volum rentang yang baru dibuat pada cakera Win10 dikelabukan? Kadangkala terdapat berbilang ruang yang tidak digunakan dalam cakera keras kami. Kami boleh menggabungkannya dan meletakkannya dalam volum logik, supaya ruang pada berbilang cakera keras boleh digunakan dengan lebih cekap. Walau bagaimanapun, sesetengah netizen berkata bahawa sistem win10 mereka mempunyai masalah apabila mencipta volum rentang baharu. Mereka mendapati volum rentang baharu pada cakera telah dikelabukan. Bagaimana untuk mencipta volum rentang baharu? Editor di bawah akan mengajar anda kaedah yang betul untuk mencipta volum merentas zon baharu. Langkah penyelesaian kelabu untuk mencipta volum rentang pada cakera Win10 Pertama, seperti yang ditunjukkan dalam rajah di bawah, ruang pada dua cakera keras boleh menggunakan volum yang sama, dan hanya mencipta volum rentang. Maka sebab mengapa isipadu span tidak boleh dikelabukan mungkin disebabkan oleh faktor berikut: 1. Jika ia mengandungi span

Bagaimana untuk melaksanakan pernyataan untuk melihat data jadual dalam MySQL? Bagaimana untuk melaksanakan pernyataan untuk melihat data jadual dalam MySQL? Nov 08, 2023 pm 01:40 PM

Tajuk: Pernyataan dan contoh kod khusus untuk melihat data jadual dalam MySQL MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang digunakan secara meluas dalam aplikasi semua saiz. Dalam MySQL, melihat data jadual adalah operasi yang sangat asas Berikut akan memperkenalkan cara melaksanakan operasi ini melalui pernyataan dan contoh kod tertentu. Pertama, kami akan memperkenalkan pernyataan dan contoh kod khusus untuk melihat data jadual melalui alat baris arahan MySQL. Katakan kita mempunyai jadual bernama "pekerja", berikut ialah pas

Kaedah terperinci untuk membuat laporan bulanan baharu pada WeChat Perusahaan Kaedah terperinci untuk membuat laporan bulanan baharu pada WeChat Perusahaan Mar 25, 2024 pm 05:36 PM

1. Buka WeChat korporat. 2. Klik butang ikon [Apl] di sebelah kiri. 3. Klik pilihan [Laporan], [Baru], [Laporan Bulanan]. 4. Kemudian anda dapat melihat bahawa anda perlu memasukkan kerja bulan ini, dsb. 5. Masukkan kandungan kerja bulan ini Anda boleh atau tidak mengisi yang lain, dan klik butang [Serah]. 6. Akhir sekali, anda boleh melihat butiran laporan bulanan anda.

Selesaikan masalah bahawa tiada pilihan 'Baru' pada klik kanan Win10 Selesaikan masalah bahawa tiada pilihan 'Baru' pada klik kanan Win10 Jan 05, 2024 am 09:45 AM

Apabila menggunakan sistem win10, sesetengah rakan mendapati bahawa tiada pilihan baru dalam menu klik kanan apabila mereka mengklik kanan tetikus pada desktop Malah, mereka hanya perlu menambah pilihan melalui pendaftaran untuk klik kanan dan buat yang baru. Apa yang perlu dilakukan jika tiada pilihan Baharu apabila mengklik kanan pada Windows 10: 1. Tekan kombinasi kekunci + Open Run, masukkan dan klik OK untuk membuka Registry Editor. 2. Kemudian kembangkan folder:. 3. Kemudian cari folder tersebut Jika tiada folder sedemikian, klik kanan folder itu-- dan namakannya. 4. Selepas membuka fail dalam folder baharu, kami menukar data berangka ini kepada. 5. Kemudian mulakan semula komputer untuk menyelesaikan masalah.

Panduan langkah demi langkah untuk membuat folder pada telefon mudah alih Realme Panduan langkah demi langkah untuk membuat folder pada telefon mudah alih Realme Mar 23, 2024 pm 03:51 PM

Panduan Langkah demi Langkah untuk Mencipta Folder pada Telefon Mudah Alih Realme Dalam kehidupan seharian, kami menggunakan telefon mudah alih untuk menyimpan pelbagai fail, termasuk foto, video, dokumen dan banyak lagi. Walau bagaimanapun, apabila masa berlalu, bilangan fail pada telefon anda mungkin meningkat, menyebabkan memori tidak mencukupi pada telefon anda atau menyukarkan untuk mengurus fail. Untuk menyusun fail dengan lebih baik dan meningkatkan kecekapan penggunaan telefon bimbit, penubuhan folder telefon mudah alih telah menjadi sangat penting. Realme Mobile ialah jenama telefon pintar yang popular dengan sistem berkuasa dan ciri yang pelbagai. Mencipta folder pada telefon Realme boleh membantu pengguna mengatur fail dengan lebih baik

Tutorial dokumen baharu Win11 Tutorial dokumen baharu Win11 Dec 30, 2023 pm 07:59 PM

Dalam win11, kita boleh menambah artikel atau nota dengan mencipta dokumen baharu, tetapi sesetengah rakan tidak tahu cara membuat dokumen baharu dalam win11, sebenarnya, hanya klik kanan pada ruang kosong. Cara membuat dokumen baharu dalam win11: 1. Klik kanan ruang kosong pada desktop atau explorer dan pilih "Baharu" 2. Kemudian pilih "Dokumen Teks" 3. Selepas penciptaan baharu selesai, anda boleh melihat anda yang baru dibuat dokumen teks. 4. Kita juga boleh memilih untuk "membuat" "dokumen doc/docx" 5. Selepas penciptaan selesai, klik dua kali dokumen untuk membukanya.

See all articles