当我们忘记做全量备份时,并且没有开启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
会在当前目录生成一个pages-1410414511目录(后面的数字是变化的,在你的机器上会跟我的不同)
在FIL_PAGE_INDEX目录下面,会生成主键和索引,数据最小的是主键,后面依次是每个列的索引
在这里,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
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命令查看)
-f 指定生成sbtest表的主键目录
执行完毕,如下图:
会自动生成一个load data infile命令,请把这个复制下来,一会我们要导入数据。
在/tmp目录下,会生成sbtest.txt,我们就要用这个文件做恢复。
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);
总结:
通过上述方法,顺利的完成了delete数据恢复。在数据被删除后,切记要备份ibd数据文件,一定不要覆盖,否则都是不能完成修复的。目前该工具不支持字符串set类型。

MySQL is suitable for beginners to learn database skills. 1. Install MySQL server and client tools. 2. Understand basic SQL queries, such as SELECT. 3. Master data operations: create tables, insert, update, and delete data. 4. Learn advanced skills: subquery and window functions. 5. Debugging and optimization: Check syntax, use indexes, avoid SELECT*, and use LIMIT.

MySQL efficiently manages structured data through table structure and SQL query, and implements inter-table relationships through foreign keys. 1. Define the data format and type when creating a table. 2. Use foreign keys to establish relationships between tables. 3. Improve performance through indexing and query optimization. 4. Regularly backup and monitor databases to ensure data security and performance optimization.

MySQL is an open source relational database management system that is widely used in Web development. Its key features include: 1. Supports multiple storage engines, such as InnoDB and MyISAM, suitable for different scenarios; 2. Provides master-slave replication functions to facilitate load balancing and data backup; 3. Improve query efficiency through query optimization and index use.

SQL is used to interact with MySQL database to realize data addition, deletion, modification, inspection and database design. 1) SQL performs data operations through SELECT, INSERT, UPDATE, DELETE statements; 2) Use CREATE, ALTER, DROP statements for database design and management; 3) Complex queries and data analysis are implemented through SQL to improve business decision-making efficiency.

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

The steps to build a MySQL database include: 1. Create a database and table, 2. Insert data, and 3. Conduct queries. First, use the CREATEDATABASE and CREATETABLE statements to create the database and table, then use the INSERTINTO statement to insert the data, and finally use the SELECT statement to query the data.

MySQL is suitable for beginners because it is easy to use and powerful. 1.MySQL is a relational database, and uses SQL for CRUD operations. 2. It is simple to install and requires the root user password to be configured. 3. Use INSERT, UPDATE, DELETE, and SELECT to perform data operations. 4. ORDERBY, WHERE and JOIN can be used for complex queries. 5. Debugging requires checking the syntax and use EXPLAIN to analyze the query. 6. Optimization suggestions include using indexes, choosing the right data type and good programming habits.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Dreamweaver CS6
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Notepad++7.3.1
Easy-to-use and free code editor