Home Database Mysql Tutorial MySQL异常恢复之无主键情况下innodb数据恢复的方法_MySQL

MySQL异常恢复之无主键情况下innodb数据恢复的方法_MySQL

May 27, 2016 pm 01:44 PM
innodb mysql Data Recovery

本文讲述了MySQL异常恢复之无主键情况下innodb数据恢复的方法。分享给大家供大家参考,具体如下:

在mysql的innodb引擎的数据库异常恢复中,一般都要求有主键或者唯一index,其实这个不是必须的,当没有index信息之时,可以在整个表级别的index_id进行恢复

创建模拟表—无主键

mysql> CREATE TABLE `t1` (
  ->  `messageId` varchar(30) character set utf8 NOT NULL,
  ->  `tokenId` varchar(20) character set utf8 NOT NULL,
  ->  `mobile` varchar(14) character set utf8 default NULL,
  ->  `msgFormat` int(1) NOT NULL,
  ->  `msgContent` varchar(1000) character set utf8 default NULL,
  ->  `scheduleDate` timestamp NOT NULL default '0000-00-00 00:00:00',
  ->  `deliverState` int(1) default NULL,
  ->  `deliverdTime` timestamp NOT NULL default '0000-00-00 00:00:00'
  -> ) ENGINE=INnodb DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t1 select * from sms_service.sms_send_record;
Query OK, 11 rows affected (0.00 sec)
Records: 11 Duplicates: 0 Warnings: 0
…………
mysql> insert into t1 select * from t1;
Query OK, 81664 rows affected (2.86 sec)
Records: 81664 Duplicates: 0 Warnings: 0
mysql> insert into t1 select * from t1;
Query OK, 163328 rows affected (2.74 sec)
Records: 163328 Duplicates: 0 Warnings: 0
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
|  326656 | 
+----------+
1 row in set (0.15 sec)

Copy after login

解析innodb文件

[root@web103 mysql_recovery]# rm -rf pages-ibdata1/
[root@web103 mysql_recovery]# ./stream_parser -f /var/lib/mysql/ibdata1 
Opening file: /var/lib/mysql/ibdata1
File information:
ID of device containing file:     2049
inode number:           1344553
protection:             100660 (regular file)
number of hard links:          1
user ID of owner:            27
group ID of owner:           27
device ID (if special file):       0
blocksize for filesystem I/O:     4096
number of blocks allocated:     463312
time of last access:      1440819443 Sat Aug 29 11:37:23 2015
time of last modification:   1440819463 Sat Aug 29 11:37:43 2015
time of last status change:   1440819463 Sat Aug 29 11:37:43 2015
total size, in bytes:      236978176 (226.000 MiB)
Size to process:         236978176 (226.000 MiB)
Opening file: /var/lib/mysql/ibdata1
File information:
ID of device containing file:     2049
inode number:           1344553
protection:             100660 (regular file)
number of hard links:          1
user ID of owner:            27
group ID of owner:           27
device ID (if special file):       0
blocksize for filesystem I/O:     4096
number of blocks allocated:     463312
Opening file: /var/lib/mysql/ibdata1
File information:
time of last access:      1440819443 Sat Aug 29 11:37:23 2015
time of last modification:   1440819463 Sat Aug 29 11:37:43 2015
ID of device containing file:     2049
inode number:           1344553
protection:             100660 time of last status change:   1440819463 Sat Aug 29 11:37:43 2015
total size, in bytes:      236978176 (226.000 MiB)
Size to process:         236978176 (226.000 MiB)
Opening file: /var/lib/mysql/ibdata1
File information:
ID of device containing file:     2049
inode number:           1344553
protection:             100660 (regular file)
number of hard links:          1
user ID of owner:            27
group ID of owner:           27
device ID (if special file):       0
blocksize for filesystem I/O:     4096
number of blocks allocated:     463312
time of last access:      1440819443 Sat Aug 29 11:37:23 2015
time of last modification:   1440819463 Sat Aug 29 11:37:43 2015
time of last status change:   1440819463 Sat Aug 29 11:37:43 2015
total size, in bytes:      236978176 (226.000 MiB)
Size to process:         236978176 (226.000 MiB)
(regular file)
number of hard links:          1
user ID of owner:            27
group ID of owner:           27
device ID (if special file):       0
blocksize for filesystem I/O:     4096
number of blocks allocated:     463312
time of last access:      1440819443 Sat Aug 29 11:37:23 2015
time of last modification:   1440819463 Sat Aug 29 11:37:43 2015
time of last status change:   1440819463 Sat Aug 29 11:37:43 2015
total size, in bytes:      236978176 (226.000 MiB)
Size to process:         236978176 (226.000 MiB)
Opening file: /var/lib/mysql/ibdata1
File information:
ID of device containing file:     2049
inode number:           1344553
protection:             100660 (regular file)
number of hard links:          1
user ID of owner:            27
group ID of owner:           27
device ID (if special file):       0
blocksize for filesystem I/O:     4096
number of blocks allocated:     463312
time of last access:      1440819443 Sat Aug 29 11:37:23 2015
time of last modification:   1440819463 Sat Aug 29 11:37:43 2015
time of last status change:   1440819463 Sat Aug 29 11:37:43 2015
total size, in bytes:      236978176 (226.000 MiB)
Size to process:         236978176 (226.000 MiB)
Opening file: /var/lib/mysql/ibdata1
File information:
ID of device containing file:     2049
inode number:           1344553
protection:             100660 (regular file)
number of hard links:          1
user ID of owner:            27
group ID of owner:           27
device ID (if special file):       0
blocksize for filesystem I/O:     4096
number of blocks allocated:     463312
time of last access:      1440819443 Sat Aug 29 11:37:23 2015
time of last modification:   1440819463 Sat Aug 29 11:37:43 2015
time of last status change:   1440819463 Sat Aug 29 11:37:43 2015
Opening file: /var/lib/mysql/ibdata1
File information:
ID of device containing file:     2049
inode number:           1344553
protection:             100660 (regular file)
number of hard links:          1
user ID of owner:            27
group ID of owner:           27
device ID (if special file):       0
blocksize for filesystem I/O:     4096
number of blocks allocated:     463312
total size, in bytes:      236978176 (226.000 MiB)
Size to process:         236978176 (226.000 MiB)
time of last access:      1440819443 Sat Aug 29 11:37:23 2015
time of last modification:   1440819463 Sat Aug 29 11:37:43 2015
time of last status change:   1440819463 Sat Aug 29 11:37:43 2015
total size, in bytes:      236978176 (226.000 MiB)
Size to process:         236978176 (226.000 MiB)
Opening file: /var/lib/mysql/ibdata1
File information:
ID of device containing file:     2049
inode number:           1344553
protection:             100660 (regular file)
number of hard links:          1
user ID of owner:            27
group ID of owner:           27
device ID (if special file):       0
blocksize for filesystem I/O:     4096
number of blocks allocated:     463312
time of last access:      1440819465 Sat Aug 29 11:37:45 2015
time of last modification:   1440819463 Sat Aug 29 11:37:43 2015
time of last status change:   1440819463 Sat Aug 29 11:37:43 2015
total size, in bytes:      236978176 (226.000 MiB)
Size to process:         236978176 (226.000 MiB)
All workers finished in 0 sec

Copy after login

恢复数据字典

[root@web103 mysql_recovery]# ./recover_dictionary.sh 
Generating dictionary tables dumps... OK
Creating test database ... OK
Creating dictionary tables in database test:
SYS_TABLES ... OK
SYS_COLUMNS ... OK
SYS_INDEXES ... OK
SYS_FIELDS ... OK
All OK
Loading dictionary tables data:
SYS_TABLES ... 48 recs OK
SYS_COLUMNS ... 397 recs OK
SYS_INDEXES ... 67 recs OK
SYS_FIELDS ... 89 recs OK
All OK

Copy after login

分析数据字典,找出来index_id

这里需要注意对于没有主键的表恢复,我们对应的类型是GEN_CLUST_INDEX

mysql> select * from SYS_TABLES where name='test/t1';
+----------------------------------------+-----+-------------+------+--------+---------+--------------+-------+
| NAME                  | ID | N_COLS   | TYPE | MIX_ID | MIX_LEN | CLUSTER_NAME | SPACE |
+----------------------------------------+-----+-------------+------+--------+---------+--------------+-------+
| test/t1                | 100 |      8 |  1 |   0 |    0 |       |   0 | 
+----------------------------------------+-----+-------------+------+--------+---------+--------------+-------+
40 rows in set (0.00 sec)
 
mysql> SELECT * FROM SYS_INDEXES where table_id=100;
+----------+-----+------------------------------+----------+------+-------+------------+
| TABLE_ID | ID | NAME             | N_FIELDS | TYPE | SPACE | PAGE_NO  |
+----------+-----+------------------------------+----------+------+-------+------------+
|   100 | 119 | GEN_CLUST_INDEX       |    0 |  1 |   0 |    2951 | 
+----------+-----+------------------------------+----------+------+-------+------------+
67 rows in set (0.00 sec)

Copy after login

恢复数据

root@web103 mysql_recovery]# ./c_parser -5f pages-ibdata1/FIL_PAGE_INDEX/0000000000000119.page -t dictionary/t1.sql >/tmp/2.txt 2>2.sql
[root@web103 mysql_recovery]# more /tmp/2.txt
-- Page id: 10848, Format: COMPACT, Records list: Valid, Expected records: (73 73)
00000002141B  0000009924F2  80000027133548 t1   "82334502212106951"   "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为916515如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "1970-01-01 07:00:00"
00000002141C  0000009924F2  80000027133558 t1   "82339012756833423"   "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为396108如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "1970-01-01 07:00:00"
00000002141D  0000009924F2  80000027133568 t1   "8234322198577796"   "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为935297如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "1970-01-01 07:00:00"
00000002141E  0000009924F2  80000027133578 t1   "10235259536125650"   "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为474851如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "1970-01-01 07:00:00"
00000002141F  0000009924F2  80000027133588 t1   "10235353811295807"   "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为444632如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "1970-01-01 07:00:00"
000000021420  0000009924F2  80000027133598 t1   "102354211240398235"  "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为478503如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "1970-01-01 07:00:00"
000000021421  0000009924F2  800000271335A8 t1   "102354554052884567"  "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为216825如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "1970-01-01 07:00:00"
000000021422  0000009924F2  800000271335B8 t1   "132213454294519126"  "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为854812如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "1970-01-01 07:00:00"
000000021423  0000009924F2  800000271335C8 t1   "82329022242584577"   "SDK-BBX-010-18681"   "13718311436"  8    "尊敬的用户您好:您的手机验证码为253127如非本人操作,请拨打奥
斯卡客服:400-620-7575。"    "2010-01-01 00:00:00"  0    "2015-08-26 22:02:17"
…………
[root@web103 mysql_recovery]# cat /tmp/2.txt|grep -v "Page id:"|wc -l
380731

Copy after login

因为没有主键,使得恢复出来记录可能有一些重复,整体而言,可以较为完美的恢复数据

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

希望本文所述对大家MySQL数据库计有所帮助。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1268
29
C# Tutorial
1243
24
Laravel Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

MySQL and phpMyAdmin: Core Features and Functions MySQL and phpMyAdmin: Core Features and Functions Apr 22, 2025 am 12:12 AM

MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

MySQL vs. Other Programming Languages: A Comparison MySQL vs. Other Programming Languages: A Comparison Apr 19, 2025 am 12:22 AM

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages ​​such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages ​​have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

Solve database connection problem: a practical case of using minii/db library Solve database connection problem: a practical case of using minii/db library Apr 18, 2025 am 07:09 AM

I encountered a tricky problem when developing a small application: the need to quickly integrate a lightweight database operation library. After trying multiple libraries, I found that they either have too much functionality or are not very compatible. Eventually, I found minii/db, a simplified version based on Yii2 that solved my problem perfectly.

Laravel framework installation method Laravel framework installation method Apr 18, 2025 pm 12:54 PM

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

MySQL for Beginners: Getting Started with Database Management MySQL for Beginners: Getting Started with Database Management Apr 18, 2025 am 12:10 AM

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

Solve MySQL mode problem: The experience of using the TheliaMySQLModesChecker module Solve MySQL mode problem: The experience of using the TheliaMySQLModesChecker module Apr 18, 2025 am 08:42 AM

When developing an e-commerce website using Thelia, I encountered a tricky problem: MySQL mode is not set properly, causing some features to not function properly. After some exploration, I found a module called TheliaMySQLModesChecker, which is able to automatically fix the MySQL pattern required by Thelia, completely solving my troubles.

MySQL: Structured Data and Relational Databases MySQL: Structured Data and Relational Databases Apr 18, 2025 am 12:22 AM

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.

See all articles