Table des matières
情况一:误删部分数据,需要用最近一次备份覆盖
情况二:误删 table,表结构已经被drop了
Maison base de données tutoriel mysql MySQL单表ibd文件恢复_MySQL

MySQL单表ibd文件恢复_MySQL

Jun 01, 2016 pm 01:39 PM
新建

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
Copier après la connexion

 

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
Copier après la connexion

 

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
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment créer un nouveau simulateur dans Lightning Simulator - Comment créer un nouveau simulateur dans Lightning Simulator Comment créer un nouveau simulateur dans Lightning Simulator - Comment créer un nouveau simulateur dans Lightning Simulator Mar 05, 2024 pm 03:04 PM

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.

Comment créer un nouveau document Word sur votre ordinateur Comment créer un nouveau document Word sur votre ordinateur Dec 27, 2023 pm 10:05 PM

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.

Comment créer une version grise d'un nouveau volume fractionné sur un disque Win10 Comment créer une version grise d'un nouveau volume fractionné sur un disque Win10 Jul 02, 2023 am 08:13 AM

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

Comment implémenter l'instruction pour afficher les données de la table dans MySQL ? Comment implémenter l'instruction pour afficher les données de la table dans MySQL ? Nov 08, 2023 pm 01:40 PM

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

Méthode détaillée pour créer un nouveau rapport mensuel sur Enterprise WeChat Méthode détaillée pour créer un nouveau rapport mensuel sur Enterprise WeChat Mar 25, 2024 pm 05:36 PM

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.

Résolvez le problème de l'absence d'option 'Nouveau' sur le clic droit de Win10 Résolvez le problème de l'absence d'option 'Nouveau' sur le clic droit de Win10 Jan 05, 2024 am 09:45 AM

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 le téléphone mobile Realme Guide étape par étape pour créer des dossiers sur le téléphone mobile Realme Mar 23, 2024 pm 03:51 PM

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

Tutoriel sur le nouveau document Win11 Tutoriel sur le nouveau document Win11 Dec 30, 2023 pm 07:59 PM

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.

See all articles