文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>how to recovery innodb from Pages from .idb (Part III)

how to recovery innodb from Pages from .idb (Part III)

时间:2010-08-22  来源:Steven1981

下面我们来看一个实例,用来恢复被TRUNCATE的数据
----------------------------------------------

TEST STEP 0:创建测试环境:
----------------------
MYSQL 5140 at RHEL 5u4 X86_64
use test;
create table recover1 (id int auto_increment , c1 varchar(50), c2 varchar(100) ,primary key (id) ) engine=innodb;
insert into recover1(c1,c2) values ('aaaaaa','bbbbbb');
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;
insert into recover1(c1,c2) select c1,c2 from recover1 ;

SQL> select count(*) from recover1;
+----------+
| count(*) |
+----------+
| 4096 |
+----------+
1 row in set (0.03 sec)

SQL> show create table recover1 G
*************************** 1. row ***************************
Table: recover1
Create Table: CREATE TABLE `recover1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`c1` varchar(50) DEFAULT NULL,
`c2` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16359 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

SQL> truncate table recover1 ;
Query OK, 0 rows affected (0.03 sec)

##注意,在这里,你需要在文件被重新覆盖前,对数据所在表空间做一个镜像。否则你的数据也就无法恢复了。 你可以对MYSQL做一个FAST_SHUTDOWN。
如果你使用了:innodb_file_per_table,那么数据表空间文件就是: .ibd.
如果你使用了共享表空间,那么就是ibdata1....
cp /home/mysql/data/mysql/test/recover1.ibd /opt


TEST STEP1:下载工具编码,并解压到指定目录,
----------------------
cd /opt
wget http://launchpad.net/percona-innodb-recovery-tool/trunk/release-0.4/+download/percona-innodb-recovery-tool.tar.gz
tar xzvf percona-innodb-recovery-tool.tar.gz
cd /opt/percona-innodb-recovery-tool/mysql-source
./configure

#注意这里不要MAKE。


TEST STEP2: 找出该表主键的“index_id”,
----------------------
mysql> CREATE TABLE `innodb_table_monitor` (`id` int(11) default NULL) ENGINE=InnoDB;
Query OK, 0 rows affected (0.01 sec)

[root@localhost mysql]# tail -20 /home/mysql/data/mysql/master-error.log
... ...
--------------------------------------
TABLE: name test/recover1, id 0 242, columns 6, indexes 1, appr.rows 0
COLUMNS: id: DATA_INT DATA_BINARY_TYPE DATA_NOT_NULL len 4; c1: type 12 len 150; c2: type 12 len 300; DB_ROW_ID: DATA_SYS prtype 256 len 6; DB_TRX_ID: DATA_SYS prtype 257 len 6; DB_ROLL_PTR: DATA_SYS prtype 258 len 7;
INDEX: name PRIMARY, id 0 447, fields 1/5, uniq 1, type 3
root page 3, appr.key vals 0, leaf pages 1, size pages 1
FIELDS: id DB_TRX_ID DB_ROLL_PTR c1 c2

#这里我们可以看到: INDEX: name PRIMARY, id 0 447 。
这个INDEX_ID我们下面会有用。

待续... ...

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载