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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Récemment, certains utilisateurs qui viennent de télécharger et de contacter le logiciel du simulateur de foudre ont demandé à l'éditeur comment créer un nouveau simulateur dans le simulateur de foudre. Le contenu suivant apporte la méthode de création d'un nouveau simulateur dans le simulateur de foudre ? . Trouvez le logiciel de simulation de foudre. Double-cliquez pour ouvrir le multi-ouvreur Thunderbolt. Cliquez sur Nouveau/Copier le simulateur. Cliquez sur Nouveau simulateur. Vous pouvez obtenir un nouveau simulateur. Recherchez le logiciel de simulation de foudre, double-cliquez pour ouvrir le multi-ouvreur de foudre, cliquez sur Nouveau/Copier le simulateur, cliquez sur Nouveau simulateur et vous obtiendrez un nouveau simulateur.

Il existe de nombreuses façons de créer un nouveau document Word. Nous pouvons cliquer avec le bouton droit sur le bureau et cliquer sur Nouveau document Doc ou Document Docx. Les méthodes spécifiques sont presque les mêmes. Comment créer un nouveau document Word à l'aide d'un ordinateur : win11 : 1. Tout d'abord, nous faisons un clic droit sur "Nouveau". 2. Sélectionnez ensuite le fichier "docx ou doc". 3. Enfin, la création peut être terminée. win10 : 1. Nous faisons un clic droit et sélectionnons "Nouveau". 2. Sélectionnez ensuite l'un des deux documents. 3. Enfin, la création est terminée. win7 : 1. Tout d’abord, faites un clic droit et sélectionnez « Nouveau ». 2. Sélectionnez ensuite le document Word. 3. Enfin, la nouvelle création peut être complétée.

Que dois-je faire si le volume fractionné nouvellement créé sur le disque Win10 est grisé ? Parfois, il y a plusieurs espaces inutilisés sur notre disque dur. Nous pouvons les fusionner et les placer dans un volume logique, afin que l'espace sur plusieurs disques durs puisse être utilisé plus efficacement. Cependant, certains internautes ont déclaré que leur système Win10 avait des problèmes lors de la création d'un nouveau volume fractionné sur le disque. Que s'est-il passé ? Comment créer un nouveau volume fractionné ? L'éditeur ci-dessous vous apprendra la bonne méthode pour créer un nouveau volume inter-zones. Étapes de la solution grise pour créer un volume fractionné sur un disque Win10 Tout d'abord, comme le montre la figure ci-dessous, l'espace sur les deux disques durs peut utiliser le même volume et créer simplement un volume fractionné. La raison pour laquelle le volume fractionné ne peut pas être grisé peut être due aux facteurs suivants : 1. S'il contient une durée

Titre : Déclarations et exemples de code spécifiques pour afficher les données de table dans MySQL MySQL est un système de gestion de base de données relationnelle open source largement utilisé dans des applications de toutes tailles. Dans MySQL, l'affichage des données d'une table est une opération très basique. Ce qui suit présente comment implémenter cette opération à travers des instructions spécifiques et des exemples de code. Tout d'abord, nous présenterons les instructions et les exemples de code spécifiques pour afficher les données de table via l'outil de ligne de commande MySQL. Supposons que nous ayons une table nommée "employés", voici le laissez-passer

1. Ouvrez WeChat d'entreprise. 2. Cliquez sur le bouton icône [Application] à gauche. 3. Cliquez sur les options [Rapport], [Nouveau], [Rapport mensuel]. 4. Ensuite, vous pouvez voir que vous devez saisir le travail de ce mois-ci, etc. 5. Saisissez le contenu du travail de ce mois-ci. Vous pouvez ou non remplir d'autres champs, puis cliquez sur le bouton [Soumettre]. 6. Enfin, vous pouvez voir les détails de votre rapport mensuel.

Lors de l'utilisation du système Win10, certains amis constatent qu'il n'y a pas de nouvelle option dans le menu contextuel lorsqu'ils cliquent avec le bouton droit de la souris sur le bureau. En fait, il leur suffit d'y ajouter une option via le registre pour cliquer avec le bouton droit. et créez-en un nouveau. Que faire s'il n'y a pas d'option Nouveau lors d'un clic droit sur Windows 10 : 1. Appuyez sur la combinaison de touches + Ouvrir Exécuter, entrez et cliquez sur OK pour ouvrir l'éditeur de registre. 2. Développez ensuite les dossiers :. 3. Recherchez ensuite le dossier. S'il n'existe pas de dossier de ce type, cliquez avec le bouton droit sur le dossier et nommez-le. 4. Après avoir ouvert le fichier dans le nouveau dossier, nous modifions ces données numériques en. 5. Redémarrez ensuite l'ordinateur pour résoudre le problème.

Guide étape par étape pour créer des dossiers sur les téléphones mobiles Realme Dans notre vie quotidienne, nous utilisons nos téléphones pour stocker une variété de fichiers, notamment des photos, des vidéos, des documents, etc. Cependant, au fil du temps, le nombre de fichiers sur votre téléphone peut augmenter, entraînant une mémoire insuffisante sur votre téléphone ou rendant difficile la gestion des fichiers. Afin de mieux organiser les fichiers et d'améliorer l'efficacité de l'utilisation du téléphone portable, la création de dossiers de téléphone portable est devenue particulièrement importante. Realme Mobile est une marque de smartphones populaire dotée d'un système puissant et de fonctionnalités diverses. La création de dossiers sur les téléphones Realme peut aider les utilisateurs à mieux organiser les fichiers

Dans Win11, nous pouvons ajouter des articles ou des notes en créant un nouveau document, mais certains amis ne savent pas comment créer un nouveau document dans Win11. En fait, faites simplement un clic droit sur l'espace vide. Comment créer un nouveau document dans win11 : 1. Faites un clic droit sur l'espace vide du bureau ou de l'explorateur et sélectionnez "Nouveau" 2. Sélectionnez ensuite "Document texte" 3. Une fois la nouvelle création terminée, vous pouvez voir votre nouveau document texte créé. 4. On peut également choisir de « créer » un « document doc/docx ». 5. Une fois la création terminée, double-cliquez sur le document pour l'ouvrir.
