ホームページ データベース mysql チュートリアル 无全量备份、未开启binlog日志,利用percona工具恢复delete的数

无全量备份、未开启binlog日志,利用percona工具恢复delete的数

Jun 07, 2016 pm 02:52 PM
binlog 利用 バックアップ オンにする ログ

当我们忘记做全量备份时,并且没有开启binlog,并执行了 deletefromsbtest; 数据全部丢失,要想恢复是很有难度的。 今天,利用Percona Data Recovery Tool for InnoDB工具 (仅支持InnoDB,MyISAM不支持) ,可以找回被删除的数据。 原理:在InnoDB引擎,del

当我们忘记做全量备份时,并且没有开启binlog,并执行了

delete from sbtest;
ログイン後にコピー
ログイン後にコピー

数据全部丢失,要想恢复是很有难度的。


今天,利用Percona Data Recovery Tool for InnoDB工具(仅支持InnoDB,MyISAM不支持),可以找回被删除的数据。


原理:在InnoDB引擎,delete删除操作,不是真正的删除物理文件上的行,而是增加一个删除的标记,我们都用过WORD吧?在修改字体的时候,有一个删除线的标记,如《MySQL 管理之道》,该工具利用这个特性,找回那些标注了删除线的数据,并存入到一个文本里,然后通过load data命令,批量插入到表里。


注:truncate不能恢复(truncate是直接清空数据行,并不是添加删除标记,你可以通过查看物理文件,执行了truncate操作,ibd文件变小,而执行了delete操作,ibd文件还跟之前的一样大),drop不能恢复(数据文件都没了,还怎么恢复?)。


一、安装Percona Data Recovery Tool for InnoDB工具

# wget https://launchpad.net/percona-data-recovery-tool-for-innodb/trunk/release-0.5/+download/percona-data-recovery-tool-for-innodb-0.5.tar.gz

# cd percona-data-recovery-tool-for-innodb-0.5/mysql-source
# ./configure
# cd ..
# make
ログイン後にコピー

二、全表删除sbtest表

delete from sbtest;
ログイン後にコピー
ログイン後にコピー

三、恢复

1、提取ibd物理文件,按照每页16K,单独存放。

# cd percona-data-recovery-tool-for-innodb-0.5/
# ./page_parser -5 -f /usr/local/mysql-5.5.37/data/test/sbtest.ibd
ログイン後にコピー

650) this.width=650;" style="max-width:90%" title="1.jpg" alt="wKioL1QWjBbQtR24AAcTs4jETjo710.jpg" />

650) this.width=650;" style="max-width:90%" title="2.jpg" alt="wKioL1QWjBfQ5v4eAAMOU75u5yE417.jpg" />


会在当前目录生成一个pages-1410414511目录(后面的数字是变化的,在你的机器上会跟我的不同)

650) this.width=650;" title="3.jpg" alt="wKioL1QWjNeRc1gzAAGi--J2QzM705.jpg" />

650) this.width=650;" title="5.jpg" alt="wKiom1QWjUXSIuLRAAjqU2V4Rmk266.jpg" />


在FIL_PAGE_INDEX目录下面,会生成主键和索引,数据最小的是主键,后面依次是每个列的索引

650) this.width=650;" title="4.jpg" alt="wKioL1QWjcfTyYIVAACR8hnJJ78355.jpg" />

在这里,0-28是sbtest表的主键(id),0-29是sbtest表的索引(k)。记住这个目录数字,后面我们需要通过这个目录恢复数据。


2、生成表结构

# cd percona-data-recovery-tool-for-innodb-0.5/
# ./create_defs.pl --host localhost --port 3306 --user root --password 123456 --db test --table sbtest > include/table_defs.h
ログイン後にコピー

-- host 主机地址

-- port 端口

-- user 用户名

-- password 密码

-- db 数据库名

-- table 表名


3、再次执行make编译命令

# cd percona-data-recovery-tool-for-innodb-0.5/
# make
ログイン後にコピー

650) this.width=650;" title="6.jpg" alt="wKiom1QWj3nzmDC0AAUbkA6b0jc746.jpg" />


4、恢复删除的数据

# cd percona-data-recovery-tool-for-innodb-0.5/
# ./constraints_parser -D -5 -f pages-1410414511/FIL_PAGE_INDEX/0-28/ > /tmp/sbtest.txt
ログイン後にコピー

-D 恢复删除的行

-5 表的文件格式,默认是Compact

(不清楚的朋友,可以用show table status命令查看)

650) this.width=650;" title="7.jpg" alt="wKioL1QWkRiDTihIAAI9NJg8fOQ199.jpg" />

-f 指定生成sbtest表的主键目录


执行完毕,如下图:

650) this.width=650;" title="8.jpg" alt="wKiom1QWknDBeZOHAAIWMrwbsBE715.jpg" />

会自动生成一个load data infile命令,请把这个复制下来,一会我们要导入数据。


在/tmp目录下,会生成sbtest.txt,我们就要用这个文件做恢复。

650) this.width=650;" title="9.jpg" alt="wKioL1QWkuHwSGz6AARoxsVwT9s990.jpg" />



5、导入到表里

LOAD DATA INFILE '/tmp/sbtest.txt' REPLACE INTO TABLE `sbtest` FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'sbtest\t' (id, k, c, pad);
ログイン後にコピー

wKioL1QWk57TtLghAAFSBQvfbic614.jpg


总结:

通过上述方法,顺利的完成了delete数据恢复。在数据被删除后,切记要备份ibd数据文件,一定不要覆盖,否则都是不能完成修复的。目前该工具不支持字符串set类型。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DLSSを有効にするにはどうすればよいですか? DLSS開設戦略 DLSSを有効にするにはどうすればよいですか? DLSS開設戦略 Mar 13, 2024 pm 07:34 PM

NVIDIA には dlss 機能があり、dlss をオンにするとゲームのフレーム レートが大幅に向上するため、多くの友人が dlss をオンにする方法を編集者に尋ねます。まず、グラフィック カードが dlss をサポートし、ゲームが dlss をサポートしていることを確認してから、ゲームでそれを有効にします。以下の具体的なチュートリアルを見てみましょう。回答: 通常、DLSS はゲーム内で開く必要があります。 dlssを有効にするには、端末とゲームの条件を満たしている必要があります。 dlss は「レイ トレーシング エフェクト」で、ゲームの設定を入力できます。次に、「画像またはグラフィックス」設定に移動します。次に、「レイ トレーシング ライティング」を見つけてクリックして開きます。 d

GPU ハードウェア アクセラレーションを有効にする必要がありますか? GPU ハードウェア アクセラレーションを有効にする必要がありますか? Feb 26, 2024 pm 08:45 PM

ハードウェア アクセラレーション GPU を有効にする必要がありますか?テクノロジーの継続的な開発と進歩に伴い、コンピューター グラフィックス処理の中核コンポーネントとして GPU (グラフィックス プロセッシング ユニット) が重要な役割を果たしています。ただし、ハードウェア アクセラレーションをオンにする必要があるかどうかについて疑問を抱くユーザーもいるかもしれません。この記事では、GPU のハードウェア アクセラレーションの必要性と、ハードウェア アクセラレーションをオンにした場合のコンピューターのパフォーマンスとユーザー エクスペリエンスへの影響について説明します。まず、ハードウェア アクセラレーションによる GPU がどのように動作するかを理解する必要があります。 GPUは特化型

PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

PHP で MySQL データベースをバックアップおよび復元するには、次の手順を実行します。 データベースをバックアップします。 mysqldump コマンドを使用して、データベースを SQL ファイルにダンプします。データベースの復元: mysql コマンドを使用して、SQL ファイルからデータベースを復元します。

削除されたホストファイルを復元する方法 削除されたホストファイルを復元する方法 Feb 22, 2024 pm 10:48 PM

タイトル: 削除後に hosts ファイルを復元する方法 概要: hosts ファイルはオペレーティング システムの非常に重要なファイルであり、ドメイン名を IP アドレスにマップするために使用されます。誤って hosts ファイルを削除すると、特定の Web サイトにアクセスできなくなったり、その他のネットワークの問題が発生したりする可能性があります。この記事では、Windows および Mac オペレーティング システムで誤って削除したホスト ファイルを復元する方法を紹介します。テキスト: 1. Windows オペレーティング システムでホスト ファイルを復元する Windows オペレーティング システムでのホスト ファイル

Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Mar 06, 2024 am 10:37 AM

WindowsServerBackup は、WindowsServer オペレーティング システムに付属する機能で、ユーザーが重要なデータとシステム構成を保護し、中小企業、エンタープライズ レベルの企業に完全なバックアップおよび回復ソリューションを提供できるように設計されています。この機能を使用できるのは、Server2022 以降を実行しているユーザーのみです。この記事では、WindowsServerBackup のインストール、アンインストール、またはリセットの方法を説明します。 Windows Server バックアップをリセットする方法 サーバー バックアップで問題が発生したり、バックアップに時間がかかりすぎたり、保存されているファイルにアクセスできない場合は、Windows Server バックアップ設定をリセットすることを検討してください。 Windowsをリセットするには

Amap でリアルタイムの交通状況を有効にする方法 Amap でリアルタイムの交通状況を有効にする方法 Feb 28, 2024 pm 07:22 PM

AMAP 地図ソフトウェアは、優れた機能でユーザーの旅行に大きな利便性を提供します。中でもリアルタイム交通機能は、道路状況をより正確に把握し、渋滞を回避し、最適なルートを選択できるため、ユーザーから高く評価されています。その後、Zian は Amap マップ上でリアルタイムの交通状況を開くことができます。これについて詳しく知りたいユーザーは、以下のエディターのチュートリアル ガイドに従って詳細を学ぶことができます。 Amap マップでリアルタイムの交通状況をオンにするにはどうすればよいですか? 答え: [Amap] - [レイヤー] - [交通状況]。具体的な手順: 1. まず、Amap ソフトウェアを開き、ホームページに入ります。右上隅に通知、レイヤー、フィードバック ボタンが表示されます。ここで [レイヤー] をクリックします。 2. クリックすると、ダイアログ ボックスが表示されます。 . ここでは[交通状況]をクリックします。

ゴースト-ゴーストバックアップを使用してシステムをバックアップする方法のチュートリアル ゴースト-ゴーストバックアップを使用してシステムをバックアップする方法のチュートリアル Mar 06, 2024 pm 04:30 PM

最近、多くの友人が編集者に Ghost でシステムをバックアップする方法を尋ねてきました。次に、Ghost でシステムをバックアップする方法のチュートリアルを学びましょう。皆さんのお役に立てれば幸いです。 1. Ghost を実行した後、図に示すように [OK] をクリックします。 2. 図に示すように、「ローカル」→「パーティション」→「ToImage」(ローカル→パーティション→イメージファイルへの意味)をクリックします。 3. 図に示すように、[ローカル ハードディスクの選択] ウィンドウが表示され、バックアップするパーティションが存在するハードディスクをクリックし、[OK] をクリックします。 4. [ソース パーティションの選択] ウィンドウが表示されます (ソース パーティションはバックアップするパーティションです)。システムが配置されているパーティション (通常はゾーン 1、必ず正しく指定してください) をクリックし、[OK] をクリックします。図に示すように。 5. この時点でプレイする

Huawei スマートフォンでデュアル WeChat 機能を有効にする方法を教えます。 Huawei スマートフォンでデュアル WeChat 機能を有効にする方法を教えます。 Mar 22, 2024 pm 03:15 PM

現代社会において、携帯電話は人々の生活に欠かせないツールとなっています。スマートフォンの機能はますます強力になり、人々の日常生活、仕事、娯楽などのさまざまなニーズに応えています。同時に複数の WeChat アカウントを使用する必要がある一部のユーザーにとって、デュアル WeChat 機能を有効にすることが特に重要です。この記事では、Huawei スマートフォンでデュアル WeChat 機能を有効にし、複数の WeChat アカウントを簡単に管理できるようにする方法を説明します。まず、ファーウェイの携帯電話に付属するEMUIシステムはシステムレベルですでにデュアルWeChat機能をサポートしているため、次の手順に従ってセットアップするだけで済みます。

See all articles