mysql清空表怎么恢复 mysql清空表中的数据( 三 )


6. 读取恢复后的表结构信息
./sys_parser -pmsandbox -d recovered sakila/actor
由于 5.x 版本 innodb 引擎并非完整记录表结构信息,会丢失 AUTO_INCREMENT 属性、二级索引和外键约束,DECIMAL 精度等信息 。
若是 mysql 5.5 版本 frm 文件被从系统删除,在原目录下 touch 与原表名相同的 frm 文件,还能读取表结构信息和数据 。若只有 frm 文件,想要获得表结构信息,可使用 mysqlfrm --diagnostic /path/to/xxx.frm,连接 mysql 会显示字符集信息 。
innodb_file_per_table=OFF
因为是共享表空间模式 , 数据页都存储在 ibdata1,可以从 ibdata1 文件中提取数据 。
1. 获取表的 table id,sys_table 存有表的 table id,sys_table 表 index id 是1,所以从0000000000000001.page 获取表 id./c_parser -4Df pages-ibdata1/FIL_PAGE_INDEX/0000000000000001.page -t dictionary/SYS_TABLES.sql | grep sakila/actor000000000B282A000001430D4DSYS_TABLES"sakila/actor"15841 00""0000000000B282A000001430D4DSYS_TABLES"sakila/actor"15841 00""0
2. 利用 table id 获取表的主键 id , sys_indexes 存有表索引信息,innodb 索引组织表,找到主键 id 即找到数据,sys_indexes 的 index id 是3,所以从0000000000000003.page 获取主键 id
./c_parser -4Df pages-ibdata1/FIL_PAGE_INDEX/0000000000000003.page -t dictionary/SYS_INDEXES.sql | grep 158000000000B282A000001430BCASYS_INDEXES158376"PRIMARY"1304294967295000000000B282A000001430C3CSYS_INDEXES158377"idx_actor_last_name"1004294967295000000000B282A000001430BCASYS_INDEXES158376"PRIMARY"1304294967295000000000B282A000001430C3CSYS_INDEXES158377"idx_actor_last_name"1004294967295
3. 知道了主键 id , 就可以从对应 page 中提取表数据,并生成 sql 文件 。
./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/0000000000000376.page -t sakila/actor.sqldumps/default/actor 2 dumps/default/actor_load.sql
4. 最后导入恢复的数据
cat dumps/default/*.sql | mysql sakila
更多详细情况点击网页链接
请点击输入图片描述
mysql误删除一个表,可以恢复吗1、首先构建测试环境数据create table t1(a varchar(10),b varchar(10));insert into t1 values('1','1');insert into t1 values('2','2');commit; 。
2、模拟误修改mysql清空表怎么恢复,将t1表中mysql清空表怎么恢复的b字段更新为错误数据 "123456"update t1 set b='123456' where a='1';commit;select * from t1; 。
3、将恢复工具上传到服务器并进行解压 。unzip binlog2sql-master.zip 。
4、得到误修改时的binlog文件(show binary logs;)mysql清空表怎么恢复,实验环境是mysql-bin.000011 。
5、通过 binlog2sql.py 脚本的到所有 对表 t1 的修改操作 。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011' 。
6、得到mysql清空表怎么恢复了误删除的sql的准确位置在1382-1615之间,使用 _**-B**_ 选项生成回滚sql 。python binlog2sql.py -hlocalhost -P23307 -ubinlog2sql -p'binlog2sql' -dtest -tt1 --start-file='mysql-bin.000011' --start-position=1382 --stop-position=1615 -B 。
7、执行得到的回滚语句进行误操作恢复 。就完成mysql清空表怎么恢复了 。
mysql清空表怎么恢复的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql清空表中的数据、mysql清空表怎么恢复的信息别忘了在本站进行查找喔 。

推荐阅读