MySQL单表ibd文件恢复_MySQL
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
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
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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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.

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.

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

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

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.

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 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

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.
