MySQL 数据恢复方法(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: InnoDB 数据文件损坏,数据库无法启动,更悲催的是没有备份!难道要跑路?! 还好可以使用 Percona Data Recovery Tool for InnoDB 工具,从损坏的数据文件中提取数据进行恢复,那么该如何操作呢?

使用场景

InnoDB数据文件损坏,数据库无法启动,且无数据备份的情况下,进行数据恢复。
仅对MySQL InnoDB存储引擎数据文件有效。

所需资源

1.  InnoDB 数据文件
2.  可获取表结构的 mysql server

操作说明

1. 使用 percona-data-recovery-tool-for-innodb 构建恢复工具。主要构建出2个工具,page_parser & constraints_parser。

2. 使用 page_parser 提取需要恢复的数据页,会在当前目录下生成 pages-$timestamp 数据文件目录
[root@mysql percona-data-recovery-tool-for-innodb]# page_parser -5 -f /path/to/ibdata1

##命令使用方法
[root@mysql percona-data-recovery-tool-for-innodb]# ./page_parser -h
Error: Usage: ./page_parser -4|-5 [-dDhcCV] -f <innodb_datafile> [-T N:M] [-s size] [-t size]
  Where
    -h  -- Print this help
    -V  -- Print debug information
    -d  -- Process only those pages which potentially could have deleted records (default = NO)
    -s size -- Amount of memory used for disk cache (allowed examples 1G 10M). Default 100M
    -T  -- retrieves only pages with index id = NM (N - high word, M - low word of id)
    -c  -- count pages in the tablespace and group them by index id
    -C  -- count pages in the tablespace and group them by index id (and ignore too high/zero indexes)
    -t  size -- Size of InnoDB tablespace to scan. Use it only if the parser can't determine it by himself.

3.  生成相关表定义文件,并重新编译构建 constraints_parser 工具(需要连接数据库,有表结构即可)
[root@mysql percona-data-recovery-tool-for-innodb]# ./create_defs.pl --host=$db_host --user=$user --password=$pass --db=$database --table=$table > include/table_defs.h

[root@mysql percona-data-recovery-tool-for-innodb]# make

4.  从 pages-$timestamp 目录提取数据,可以导出到文件
[root@mysql percona-data-recovery-tool-for-innodb]# ./constraints_parser -5 -f pages-1493793157/FIL_PAGE_INDEX/0-22/0-00000003.page > datafile
LOAD DATA INFILE '/root/percona-data-recovery-tool-for-innodb/dumps/default/test' REPLACE INTO TABLE `test` FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY 'test\t' (id, name);

[root@mysql percona-data-recovery-tool-for-innodb]# cat datafile
test    1       "test"
test    2       "test2"
test    3       "test3"
test    4       "test4"

5. 进行数据导入恢复
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
关系型数据库 MySQL 索引
MySQL的全文索引查询方法
【8月更文挑战第26天】MySQL的全文索引查询方法
48 0
|
24天前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
85 1
|
1月前
|
存储 关系型数据库 MySQL
提高MySQL查询性能的方法有很多
提高MySQL查询性能的方法有很多
145 7
|
3月前
|
存储 关系型数据库 MySQL
mysql数据库查询时用到的分页方法有哪些
【8月更文挑战第16天】在MySQL中,实现分页的主要方法包括:1)使用`LIMIT`子句,简单直接但随页数增加性能下降;2)通过子查询优化`LIMIT`分页,提高大页码时的查询效率;3)利用存储过程封装分页逻辑,便于复用但需额外维护;4)借助MySQL变量实现,可能提供更好的性能但实现较复杂。这些方法各有优缺点,可根据实际需求选择适用方案。
357 2
|
3月前
|
SQL 存储 关系型数据库
【MySQL核心】MySQL 数据恢复-ibd2sql
【MySQL核心】MySQL 数据恢复-ibd2sql
|
3月前
|
编解码 缓存 关系型数据库
【MySQL 核心】MySQL数据恢复-dbsake
【MySQL 核心】MySQL数据恢复-dbsake
|
8天前
|
关系型数据库 MySQL
Mysql 中日期比较大小的方法有哪些?
在 MySQL 中,可以通过多种方法比较日期的大小,包括使用比较运算符、NOW() 函数、DATEDIFF 函数和 DATE 函数。这些方法可以帮助你筛选出特定日期范围内的记录,确保日期格式一致以避免错误。
|
2月前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
115 4
|
2月前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
32 4
|
2月前
|
关系型数据库 MySQL Unix
MySQL配置不区分大小写的方法
结论 通过适当配置 lower_case_table_names参数以及在数据定义和查询中选择合适的校对规则,可以灵活地控制MySQL中的大小写敏感性,以适应不同的应用场景和需求。这样的设置既可以增加数据库的兼容性,又可以在必要时利用大小写敏感性进行精确的数据处理。需要注意的是,修改 lower_case_table_names参数后,最好在数据库初始化时进行,以避免现有表名的大小写问题。
234 3

推荐镜像

更多