Percona Data Recovery Tool for InnoDB工具恢复单表的案例

今天上班有个朋友询问我,相关Percona Data Recovery Tool for InnoDB恢复数据中的一些问题,比如说delete,没法恢复数据,原先做过类似的异常处理就,再次模拟了下相关的恢复操作流程,仅供学习使用;相关的配置工具策略网上很多,这里我就一笔带过了,不再进行详述,下面就开始梳理相关的细节问题;

[root@Mysql64 local]# mysql -uroot -proot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 33
Server version: 5.5.28-log Source distribution


Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql> create database gg;
ERROR 1007 (HY000): Can't create database 'gg'; database exists
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| cacti              | 
| gg                 | 
| mysql              | 
| performance_schema | 
| temp               | 
| test               | 
+--------------------+
7 rows in set (0.12 sec)


mysql> use gg;
Database changed
mysql> show tables;
Empty set (0.00 sec)


mysql> create table a select * from mysql.user;
Query OK, 12 rows affected (0.17 sec)
Records: 12  Duplicates: 0  Warnings: 0
mysql> delete from a;
Query OK, 12 rows affected (0.12 sec)


mysql> select * from a;
Empty set (0.00 sec)


mysql> 
[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# ./page_parser -5 -f /usr/local/mysql/data/gg/a.ibd 
Opening file: /usr/local/mysql/data/gg/a.ibd:
64768           ID of device containing file
5836121         inode number
33200           protection
1               number of hard links
500             user ID of owner
500             group ID of owner
0               device ID (if special file)
98304           total size, in bytes
4096            blocksize for filesystem I/O
200             number of blocks allocated
1377829472      time of last access
1377831011      time of last modification
1377831011      time of last status change
98304   Size to process in bytes
104857600       Disk cache size in bytes
[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]#
./create_defs.pl --host=localhost --user=root --password=root --db=gg --table=a  > include/table_defs.h
[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# cat include/table_defs.h
                                        can_be_null: FALSE,
                                        uint_min_val: 0,
                                        uint_max_val: 4294967295ULL
                                },


                                can_be_null: FALSE
                        },
                        { /* char(64) */
                                name: "plugin",
                                type: FT_CHAR,
                                min_length: 64,
                                max_length: 192,


                                has_limits: FALSE,
                                limits: {
                                        can_be_null: TRUE,
                                        char_min_len: 0,
                                        char_max_len: 192,
                                        char_ascii_only: TRUE
                                },


                                can_be_null: TRUE
                        },
                        { /* text */
                                name: "authentication_string",
                                type: FT_TEXT,
                                min_length: 0,
                                max_length: 65535,


                                has_limits: FALSE,
                                limits: {
                                        can_be_null: TRUE,
                                        char_min_len: 0,
                                        char_max_len: 65535,
                                        char_ascii_only: TRUE
                                },


                                can_be_null: TRUE
                        },
                        { type: FT_NONE }
                }
        },
};


#endif
[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# 
[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# ./constraints_parser -5 -D -f pages-1377849796/FIL_PAGE_INDEX/0-18/0-00000003.page 
LOAD DATA INFILE '/usr/local/percona-data-recovery-tool-for-innodb-0.5/dumps/default/SYS_TABLES' REPLACE INTO TABLE `SYS_TABLES` FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'SYS_TABLES\t' (NAME, ID, N_COLS, TYPE, MIX_ID, MIX_LEN, CLUSTER_NAME, SPACE);
[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# make
gcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -c tables_dict.c -o lib/tables_dict.o
gcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -c print_data.c -o lib/print_data.o 
gcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -c check_data.c -o lib/check_data.o
gcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -o constraints_parser constraints_parser.c lib/tables_dict.o lib/print_data.o lib/check_data.o lib/libut.a lib/libmystrings.a
gcc -DHAVE_OFFSET64_T -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -Wall -O3 -g -I include -I mysql-source/include -I mysql-source/innobase/include -static -lrt -o page_parser page_parser.c lib/tables_dict.o lib/libut.a 
[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# 
这里需要重新编译才可以生产,不能只变异一次,不然后期你会看不到数据都为空值的;记住这里需要进行2次make哦,不能少一次!
[root@Mysql64 percona-data-recovery-tool-for-innodb-0.5]# ./constraints_parser -5 -f pages-1377849796/FIL_PAGE_INDEX/0-18/0-00000003.page 
a       "localhost                                                   "  "root            "      "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"      "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     ""                      00       0       0       "                                                                "      ""
a       "Mysql64                                                     "  "root            "      "*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"      "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"     "Y"  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
percona-data-recovery-tool-for-innodb-0.5是一个由Percona公司提供的针对InnoDB存储引擎的数据恢复工具。它可以帮助用户在数据丢失或者损坏时恢复InnoDB数据库。 它的主要功能包括以下几个方面: 1. 支持数据恢复:当InnoDB数据库出现故障时,如数据库文件损坏、误删除数据等情况,该工具可以帮助用户恢复损坏的数据。它可以读取InnoDB存储引擎的日志文件,通过分析日志,找到丢失的数据更新,然后恢复数据。 2. 支持错误检测:该工具可以扫描InnoDB存储引擎的数据文件,检测出潜在的错误或损坏的数据页。通过识别和修复这些问题,可以帮助保障数据库的数据完整性和一致性。 3. 支持删选和修改数据:用户可以使用该工具针对InnoDB存储引擎中的数据进行删选和修改。通过设置过滤条件,用户可以选择指定类型的数据进行操作,如根据时间范围、特定字段的值等。 4. 支持日志文件处理:该工具可以解析和处理InnoDB存储引擎的日志文件,包括重做日志和撤销日志。用户可以使用它来查看、分析和恢复日志文件中的数据更新操作,以及进行相关的数据恢复操作。 总之,percona-data-recovery-tool-for-innodb-0.5是一款专门针对InnoDB存储引擎的数据恢复工具,它可以帮助用户在数据库出现故障时进行数据恢复,保障数据的完整性和可用性。这对于数据库管理员和开发者来说是非常重要的工具

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值