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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Kürzlich haben einige Benutzer, die gerade die Lightning-Simulator-Software heruntergeladen und kontaktiert haben, den Herausgeber gefragt, wie man einen neuen Simulator im Lightning-Simulator erstellt. Der folgende Inhalt zeigt die Methode zum Erstellen eines neuen Simulators im Lightning-Simulator . Finden Sie die Blitzsimulator-Software. Doppelklicken Sie, um den Thunderbolt-Mehrfachöffner zu öffnen. Klicken Sie auf Neu/Simulator kopieren. Klicken Sie auf Neuer Simulator. Sie können einen neuen Simulator bekommen. Suchen Sie die Lightning-Simulator-Software, doppelklicken Sie, um den Lightning-Multi-Opener zu öffnen, klicken Sie auf Neu/Simulator kopieren, klicken Sie auf Neuer Simulator, und Sie erhalten einen neuen Simulator.

Es gibt viele Möglichkeiten, ein neues Word-Dokument zu erstellen. Wir können auf den Desktop klicken und auf „Neues Doc-Dokument“ oder „Docx-Dokument“ klicken. Die spezifischen Methoden sind ähnlich. So erstellen Sie ein neues Word-Dokument mit einem Computer: win11: 1. Zuerst klicken wir mit der rechten Maustaste auf „Neu“. 2. Wählen Sie dann die Datei „docx oder doc“ aus. 3. Abschließend kann die Erstellung abgeschlossen werden. win10: 1. Wir klicken mit der rechten Maustaste und wählen „Neu“. 2. Wählen Sie anschließend eines der beiden Dokumente aus. 3. Schließlich ist die Erstellung abgeschlossen. win7: 1. Klicken Sie zunächst mit der rechten Maustaste und wählen Sie „Neu“. 2. Wählen Sie dann das Word-Dokument aus. 3. Abschließend kann die Neuanlage abgeschlossen werden.

Bei der Verwendung des Win10-Systems stellen einige Freunde fest, dass es im Rechtsklickmenü keine neue Option gibt, wenn sie mit der rechten Maustaste auf den Desktop klicken. Tatsächlich müssen sie nur über die Registrierung eine Option hinzufügen, um mit der rechten Maustaste zu klicken und ein neues erstellen. Was tun, wenn bei einem Rechtsklick unter Windows 10 die Option „Neu“ nicht angezeigt wird: 1. Drücken Sie die Tastenkombination + Öffnen und Ausführen, geben Sie ein und klicken Sie auf „OK“, um den Registrierungseditor zu öffnen. 2. Erweitern Sie dann die Ordner:. 3. Suchen Sie dann den Ordner. Wenn kein solcher Ordner vorhanden ist, klicken Sie mit der rechten Maustaste auf den Ordner und benennen Sie ihn. 4. Nachdem wir die Datei im neuen Ordner geöffnet haben, ändern wir diese numerischen Daten in. 5. Starten Sie anschließend den Computer neu, um das Problem zu beheben.

Was soll ich tun, wenn das neu erstellte übergreifende Volume auf der Win10-Festplatte ausgegraut ist? Manchmal gibt es auf unserer Festplatte mehrere ungenutzte Speicherplätze. Wir können sie zusammenführen und in einem logischen Volume ablegen, sodass der Speicherplatz auf mehreren Festplatten effizienter genutzt werden kann. Einige Internetnutzer sagten jedoch, dass ihr Win10-System beim Erstellen eines neuen übergreifenden Volumes Probleme hatte. Sie stellten fest, dass das neue übergreifende Volume auf der Festplatte nicht ausgegraut war. Wie erstelle ich ein neues übergreifendes Volume? Der folgende Editor zeigt Ihnen die richtige Methode zum Erstellen eines neuen zonenübergreifenden Volumes. Graue Lösungsschritte zum Erstellen eines übergreifenden Volumes auf einer Win10-Festplatte. Zunächst kann, wie in der Abbildung unten gezeigt, der Speicherplatz auf den beiden Festplatten dasselbe Volume nutzen und einfach ein übergreifendes Volume erstellt werden. Dann kann der Grund dafür, dass das übergreifende Volume nicht ausgegraut werden kann, folgende Faktoren sein: 1. Wenn es einen Bereich enthält

Titel: Anweisungen und spezifische Codebeispiele zum Anzeigen von Tabellendaten in MySQL MySQL ist ein relationales Open-Source-Datenbankverwaltungssystem, das in Anwendungen aller Größen weit verbreitet ist. In MySQL ist das Anzeigen von Tabellendaten eine sehr grundlegende Operation. Im Folgenden wird anhand spezifischer Anweisungen und Codebeispiele erläutert, wie diese Operation implementiert wird. Zunächst stellen wir die Anweisungen und spezifischen Codebeispiele zum Anzeigen von Tabellendaten über das MySQL-Befehlszeilentool vor. Angenommen, wir haben eine Tabelle mit dem Namen „Mitarbeiter“, das Folgende ist der Pass

1. Öffnen Sie Enterprise WeChat. 2. Klicken Sie links auf die Symbolschaltfläche [App]. 3. Klicken Sie auf die Optionen [Bericht], [Neu], [Monatlicher Bericht]. 4. Dann sehen Sie, dass Sie die Arbeit dieses Monats usw. eingeben müssen. 5. Geben Sie den Inhalt der Arbeit dieses Monats ein. Sie können den Rest ausfüllen oder auch nicht, und klicken Sie auf die Schaltfläche [Senden]. 6. Abschließend können Sie die Details Ihres Monatsberichts einsehen.

Schritt-für-Schritt-Anleitung zum Erstellen von Ordnern auf Realme-Mobiltelefonen In unserem täglichen Leben verwenden wir unsere Telefone zum Speichern einer Vielzahl von Dateien, darunter Fotos, Videos, Dokumente und mehr. Mit der Zeit kann jedoch die Anzahl der Dateien auf Ihrem Telefon zunehmen, was dazu führen kann, dass der Speicher auf Ihrem Telefon nicht ausreicht oder die Verwaltung von Dateien erschwert wird. Um Dateien besser zu organisieren und die Effizienz der Handynutzung zu steigern, ist die Einrichtung von Handyordnern besonders wichtig geworden. Realme Mobile ist eine beliebte Smartphone-Marke mit einem leistungsstarken System und vielfältigen Funktionen. Durch das Erstellen von Ordnern auf Realme-Telefonen können Benutzer Dateien besser organisieren

In Win11 können wir Artikel oder Notizen hinzufügen, indem wir ein neues Dokument erstellen, aber einige Freunde wissen nicht, wie man in Win11 ein neues Dokument erstellt. Klicken Sie einfach mit der rechten Maustaste auf die leere Stelle. So erstellen Sie ein neues Dokument in Win11: 1. Klicken Sie mit der rechten Maustaste auf die leere Stelle des Desktops oder Explorers und wählen Sie „Neu“ 2. Wählen Sie dann „Textdokument“ 3. Nachdem die neue Erstellung abgeschlossen ist, können Sie Ihr neues Dokument sehen erstelltes Textdokument. 4. Wir können uns auch für die „Erstellung“ eines „doc/docx-Dokuments“ entscheiden. 5. Nachdem die Erstellung abgeschlossen ist, doppelklicken Sie auf das Dokument, um es zu öffnen.
