暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

只有库文件,如何恢复有全文索引的表--上

原创 库海无涯 2024-07-16
109

只有库文件,如何恢复有全文索引的表–上

1、环境准备

这是测试准备的环境,如果是独立恢复,那么只有某一个数据库的目录.

1.1、表结构
[root@mydb db01]# mysql -e 'show create table db01.t1\G'
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int NOT NULL,
  `name` varchar(200) DEFAULT NULL,
  `name2` varchar(210) DEFAULT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `idx_t1` (`name`),
  FULLTEXT KEY `idx_t2` (`name2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

[root@mydb db01]# mysql -e 'show create table db01.t2\G'
*************************** 1. row ***************************
       Table: t2
Create Table: CREATE TABLE `t2` (
  `id` int NOT NULL,
  `name` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `idx_t1` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1.2、文件清单
[root@mydb db01]# ll
total 3392
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_1.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_2.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_3.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_4.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_5.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_6.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_1.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_2.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_3.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_4.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_5.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_6.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_being_deleted_cache.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_being_deleted.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_config.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_deleted_cache.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_deleted.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_1.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_2.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_3.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_4.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_5.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_6.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_being_deleted_cache.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_being_deleted.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_config.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_deleted_cache.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_deleted.ibd
-rw-r----- 1 mysql mysql 131072 Jul 16 21:37 t1.ibd
-rw-r----- 1 mysql mysql 131072 Jul 16 21:46 t2.ibd

2、基础知识导入

2.1、全文索引文件

如果一张表只有一个全文索引,那么它有以下文件,

-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_1.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_2.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_3.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_4.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_5.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_0000000000000208_index_6.ibd

-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_being_deleted_cache.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_being_deleted.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_config.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_deleted_cache.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:46 fts_00000000000004c6_deleted.ibd

-rw-r----- 1 mysql mysql 131072 Jul 16 21:46 t2.ibd

如果一张表有多个全文索引,那么它的文件清单是如下:。每一个全文索引文件还会增加index_1-6

-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_1.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_2.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_3.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_4.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_5.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_00000000000001f8_index_6.ibd

-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_1.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_2.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_3.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_4.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_5.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:34 fts_00000000000004b3_00000000000001ff_index_6.ibd

-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_being_deleted_cache.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_being_deleted.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_config.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_deleted_cache.ibd
-rw-r----- 1 mysql mysql 114688 Jul 16 21:33 fts_00000000000004b3_deleted.ibd

-rw-r----- 1 mysql mysql 131072 Jul 16 21:37 t1.ibd
2.2、举例换算

举例文件:fts_00000000000004b3_00000000000001f8_index_1.ibd

4b3是16进制,换算成10进制是1203

1f8是16进制,换算成10进制是504

2.3、表ID
[root@mydb db01]# mysql -e 'SELECT index_id, name, table_id, space from INFORMATION_SCHEMA.INNODB_INDEXES WHERE table_id=1203;'
+----------+------------------+----------+-------+
| index_id | name             | table_id | space |
+----------+------------------+----------+-------+
|      497 | PRIMARY          |     1203 |   139 |
|      504 | idx_t1           |     1203 |   139 |
|      511 | idx_t2           |     1203 |   139 |
|      503 | FTS_DOC_ID_INDEX |     1203 |   139 |
+----------+------------------+----------+-------+
2.4、索引ID
[root@mydb db01]# mysql -e 'SELECT index_id, name, table_id, space from INFORMATION_SCHEMA.INNODB_INDEXES WHERE index_id=504;'
+----------+--------+----------+-------+
| index_id | name   | table_id | space |
+----------+--------+----------+-------+
|      504 | idx_t1 |     1203 |   139 |
+----------+--------+----------+-------+

3、后记

如果只有数据库目录文件是无法查询这些信息。那么如何把全文索引文件和表文件对应起来呢?如何恢复表结构呢?然后恢复数据呢?下次恢复课再讲。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论