简单易懂!30秒学会IBD数据库导入 (ibd导入数据库)

InnoDB(IBD)是MySQL中的一种存储引擎,其使用B+树作为索引结构,支持事务处理和外键约束。在进行数据恢复和备份时,经常会用到导入IBD文件的方法。那么,如何简单易懂地学会IBD数据库导入呢?下面就为大家详细介绍。

之一步:准备工作

在开始导入IBD文件之前,需要首先确保以下几个条件已经满足:

1. 安装MySQL存储引擎;

2. 确保你有足够的权限来操作MySQL数据库;

3. 将IBD文件放置在可读可写的文件夹中。

第二步:创建数据表

在MySQL中,IBD文件只能与已经创建好的数据表进行导入操作。因此,我们需要先创建一个数据表来存储数据。可以通过以下命令来创建数据表:

CREATE TABLE table_name (column_name1 column_type1, column_name2 column_type2 …);

在命令中,table_name表示你要创建的数据表的名称,column_name和column_type表示你要创建的字段名和数据类型。

第三步:导入IBD文件

有了数据表,就可以开始进行IBD文件导入了。可以通过以下步骤完成导入:

1. 打开MySQL控制台,并输入以下命令:

USE database_name;

其中,database_name是你要导入数据的数据库名称。

2. 然后输入以下命令:

ALTER TABLE table_name DISCARD TABLESPACE;

其中,table_name是你要操作的数据表名称。

3. 再输入以下命令:

ALTER TABLE table_name IMPORT TABLESPACE;

在执行上述命令时,你需要指定IBD文件的位置。可以在命令后加上以下参数来指定:

DATA DIRECTORY=’data_dir’ [TABLESPACE ENGINE=INNODB];

其中,data_dir是IBD文件所在的路径,TABLESPACE ENGINE=INNODB表示采用InnoDB存储引擎进行导入。

4. 执行完以上命令后,可以通过以下命令来查询数据是否导入成功:

SHOW TABLE STATUS LIKE ‘table_name’\G;

其中,table_name表示你要查询的数据表名称。如果显示的结果中底下的Engine为InnoDB,表示该数据表已经成功导入。

以上就是IBD数据库导入的简单流程了。如果你需要备份、恢复、迁移数据库中的数据,那么IBD文件的导入肯定是一项非常重要的操作。只要按照以上步骤,我们相信你能成功学会IBD数据库导入。

相关问题拓展阅读:

如何解决mysql5

你好,

情况一:MySQL的错误日志文件(安装姿明目录\MYOA\data5\机器名.err)会记录如下内容:

InnoDB: Reading tablespace information from the .ibd files…

InnoDB: Error: trying to add tablespace 460 of name ‘.\td_oa\flow_data_35.ibd’

InnoDB: to the tablespace memory cache, but tablespace

InnoDB: 460 of name ‘.\td_oa\exam_data.ibd’ already exists in the tablespace

解决方法:

1)剪切出安装目录\MYOA\data5\TD_OA的flow_data_35.ibd和flow_data_35.frm两个文件;

2)启动MySQL5_OA服务,使用备份的flow_data_35.sql导入到TD_OA库中。如果提示flow_data_35表已经存在不能导入,则继续按后续步骤执行;

3)在data5下手动建立tmp目录;

4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名称为flow_data_35的表(包含一个字段即可);

5)将tmp下的flow_data_35.frm和flow_data_35.ibd拷贝到饥册燃安装目录\MYOA\data5\TD_OA目录下;

6)在MySQL管理工具或MySQL命令行程序中,进入TD_OA库,使用“drop table flow_data_35;”命令清除公共表空间中残留的flow_data_35表的相关信息;

7)进入tmp库,删掉flow_data_35表;

8)使用备份的flow_data_35.sql导入到TD_OA库中;

9)如果还有其他表存在该问题,可重复执行4至8步骤。

2、情况二:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:

:54:31 Plugin ‘FEDERATED’ is disabled.

:54:31 InnoDB: The InnoDB memory heap is disabled

:54:31 InnoDB: Mutexes and rw_locks use Windows interlocked functions

:54:31 InnoDB: Compressed tables use zlib 1.2.3

:54:32 InnoDB: Initializing buffer pool, size = 1023.0M

InnoDB: VirtualAlloc(bytes) failed; Windows error 8

:54:32 InnoDB: Completed initialization of buffer pool

:54:32 InnoDB: Fatal error: cannot allocate memory for the buffer pool

:54:32 Plugin ‘InnoDB’ init function returned error.

:54:32 Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.

:54:32 Unknown/unsupported storage engine: Innodb

:54:32 Aborting

解决方法:

此烂虚情况出现的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA服务器操作系统不支持所致。改小后再启动mysql5_OA服务即可,一般保持和数据库大小一致。数据库大小即是myoa/data5的大小。

3、情况三:mysql服务启动不了,事件查看器中显示:The syntax

‘–log-slow-queries’ is deprecated and will be removed in a future

重新安装mysql原来数据库的只剩下了.frm的问,怎么恢复的数据

创建已经丢失的表结构

先要安装 mysql-utilities。

// RedHatyum -y install mysql-server mysql-utilities// Debianapt install mysql-utilities

使用 mysqlfrm 从 .frm 文件里面找回建表语句。

// 分析一个 .frm 文件生成建表的语句mysqlfrm –diagnostic /var/lib/mysql/test/t1.frm// 分析一个目录下的全部.frm文件生成建表语句root@username:~# mysqlfrm –diagnostic /var/lib/mysql/my_db/bk/ >createtb.sqlroot@username:~# grep “^CREATE TABLE” createtb.sql |wc -l124

可以看到一共生成了 124 个建表语句。

有很多时候也可以从其它库里面生成建表语句,如同一个应用的其它数据库或不同的测试环境,采用下面的 mysqldump 生成建表语句:

mysqldump –no-data –compact my_db>createtb.sql

登录 MySQL 生成表。

mysql> create database my_db;mysql> use my_dbDatabase changedmysql> source createtb.sqlQuery OK, 0 rows affected (0.07 sec)……

导入旧的数据文件

将新建的没有包括数据的 .ibd 文件抛弃

root@username:/var/lib/mysql/my_db# ll *.ibd|wcroot@username:/var/lib/mysql/my_db# mysql -e “show tables from my_db” \| grep -v  Tables_in_my_db  \| while read a; do mysql -e “ALTER TABLE my_db.$a DISCARD TABLESPACE”; doneroot@username:/var/lib/mysql/my_db# ll *.ibd|wcls: cannot access ‘*.ibd’: No such file or directory000

可以看到所有的 .idb 文件都已经被抛弃了。然后把旧的有数据的 .ibd 文件拷贝到这个 my_db 目录下面,别忘了把属主改过来:chown mysql. *,再把这些数据文件 import 到数据库中。

root@username:/var/lib/mysql/my_db# mysql -e “前亩show tables from my_db” \| grep -v  Tables_in_my_db  \| while read a; \do mysql -e “ALTER TABLE my_db.$a import TABLESPACE”袭丛; done

导入完成后检拍悔樱查表

使用 mysqlcheck 对数据库 my_db 下的所有表进行检查:

root@username:/var/lib/mysql/my_db# mysqlcheck -c my_dbmy_db.cdp_backup_point OK……

所有的表都导入成功。

一、InnoDB表结构的恢复

假定:MYSQL数据库已经崩溃,目前只有对应表的frm文件,大家都知道,frm文件无法通过文本编辑器查看,因为如果不恢竖卜复,基本上来说对我们没什么用。这里我们为了测试,假定该文件为test_innodb.frm

该表创建脚本如下:

mysql> create table test_innodb

-> (A int(11) default NULL,

-> B varchar(30) default NULL,

-> C date default NULL) engine=innodb;

Query OK, 0 rows affected (0.05 sec)

在新的正常工作的MYSQL环境下建立一个数据库,比如aa.

在aa数据库下建立同名的数据表test_innodb,表结构随意,这里只有一个id字段,操作过程片段如下:

mysql> create table test_innodb (id bigint not null)engine=InnoDB;

Query OK, 0 rows affected (0.09 sec)

停止mysql服务器,将系统崩溃后留下的test_innodb.frm文件拷贝到新的正常数据库的数据目录aa下,覆盖掉下边厅纤岁同名的frm文件,重新启动MYSQL服务。

END

二. MyISAM表结构的恢复

同样先假定需要恢复的表的FRM文件为test_myisam.frm,表结构为

mysql> create table test_myisam

-> (A int(11) default NULL,

-> B varchar(30) default NULL,

-> C date default NULL) engine=myisam;

Query OK, 0 rows affected (0.05 sec)

直接将test_myisam.frm拷贝到正常数据库对应的数据目录下。这时测试

mysql> show tables;

++

| Tables_in_aa |

++

| test_innodb |

| test_myisam |

++

3 rows in set (0.00 sec)

mysql> desc test_myisam;

ERROR 1017 (HY000): Can’t find file: ‘test_myisam’ (errno: 2)

发现只能通过show tables命令看见表名,但是表结构还是没有恢复,desc命令报错。

在与test_myisam.frm同一目录建立以下2个文件,文件内容可以为空:

test_myisam.MYD test_myisam.MYI

在MYSQL命令行使用MYSQL本身的数扮睁据表恢复命令repair命令恢复表,如下:

mysql> repair table test_myisam USE_FRM;

+—++++

| Table| Op | Msg_type | Msg_text |

+—++++

| aa.test_myisam | repair | status | OK|

+—++++

1 row in set (0.00 sec)

根据结果可以知道,恢复命令执行成功

MySQL的数据库文件有几种?扩展名及作用分别是什么?

在MySQL中每一个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的改禅

文件夹

,用来存放该数据库中各种表数据文件。

1、“.frm”文件 与表相关的

元数据

(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“.frm”核派尘文件。所有的“.frm”文件都存放在所属数据库的文件夹下面。

2、“.MYD”文件“ .MYD”文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。

3、“.MYI”文件 “.MYI”文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来说,可以被cache的内容主要就羡碧是来源于“.MYI”文件中。每一个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。

管理工具:

可以使用命令行工具管理 MySQL 数据库(命令 mysql 和 mysqladmin),也可以从 MySQL 的网站下载图形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。

phpMyAdmin是由 php 写成的 MySQ L资料库系统管理程程序,让管理者可用 Web 界面管理 MySQL 资料库。

phpMyBackupPro也是由 PHP 写成的,可以透过 Web 界面创建和管理数据库。它可以创建伪 cronjobs,可以用来自动在某个时间或周期备份 MySQL 数据库。另外,还有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager, navicat等等。

以上内容参考:

百度百科-mySQL

在MySQL中每一个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件。

不同的MySQL存储引擎有各自不同的数据文件,存放位置也有区别。

多数存储引擎的数据文件都存放在和MyISAM数据文件位置相同的目录下,但是每个数据文件的扩展名却各不一样。如MyISAM用“.MYD”作为扩展名,Innodb用“.ibd”,Archive用“.arc”,CSV用“.csv”,等等。

1、“.frm”文件 与表相关的元数据(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“.frm”文件。所有的“.frm”文件燃链都存放在所属数据库的文件夹下面。

2、“.MYD”文件“ .MYD”文件是MyISAM存储引擎专用,存放MyISAM表的数据。

每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。

3、“.MYI”文件 “.MYI”文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来说,可以被cache的内容主要就是来源于“.MYI”文件中。每一个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。

4、“.ibd”文件和ibdata文件 这两种文件都是存放Innodb数据的文件,之所以有两种文件来存放Innodb的数据(包括索引),是因为 Innodb 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。

Replication 主从复制的相关文件

1、master.info文件

master.info 文件存在于 Slave(从机)端的数据目录下,里面存放了该Slave的Master端的相关信息,包括Master的主机地址,连接用户,连接密码,连接端口,当前日志位置,已经读取到的日志位置等信息。

2、relaylog 和 relaylogindex

mysql-relay-bin.xxn 文件用于存放Slave 端的 I/O 线程从Master端所读取到的喊段轮BinaryLog信息,

然后由Slave端的SQL线程从该relaylog中读取并解析相应的日志信息,转化成Master所执行的SQL语句,然后在Slave端应用。

mysql-relay-bin.index文件的功能类似于mysql-bin.index,同样是记录日志的存放位置的绝对路径,只不过他所记录的不是BinaryLog,而是RelayLog。

3、relay-log.info文件

类似于master.info,它存放通过 Slave 的I/O线程写入到本地的relaylog的相关信息。供Slave端的SQL线程以及某些管理操作随时能够获取当前复制的相关信息。

其他文件

1、system config file

MySQL的系统配置文件一般都是“my.cnf”,Unix/Linux下默认存放在”/etc”目录下,Windows环境一般存放在“c:/windows”目录下面。

“my.cnf”文件中包含多种参数选项组(group),每一种参数组都通过中括号给定了固定的组名,如“”组中包括了mysqld服务启动时候的初始化参数,“”组中包含着客户端工具程序可以读取的参数,此外还有其他针对于各个客户端软件的特定参数组,如mysql程序使用的“”,mysqlchk使用的“”,等等。

2、pid file

pidfile是mysqld应用程序在Unix/Linux环境下的一个进程文件,和许多其他Unix/Linux服务端程序一样,存放着自己的进程id。

3、socket file

ibd导入数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于ibd导入数据库,简单易懂!30秒学会IBD数据库导入,如何解决mysql5,重新安装mysql原来数据库的只剩下了.frm的问,怎么恢复的数据,MySQL的数据库文件有几种?扩展名及作用分别是什么?的信息别忘了在本站进行查找喔。


数据运维技术 » 简单易懂!30秒学会IBD数据库导入 (ibd导入数据库)