新聞中心
InnoDB(IBD)是MySQL中的一種存儲(chǔ)引擎,其使用B+樹作為索引結(jié)構(gòu),支持事務(wù)處理和外鍵約束。在進(jìn)行數(shù)據(jù)恢復(fù)和備份時(shí),經(jīng)常會(huì)用到導(dǎo)入IBD文件的方法。那么,如何簡(jiǎn)單易懂地學(xué)會(huì)IBD數(shù)據(jù)庫(kù)導(dǎo)入呢?下面就為大家詳細(xì)介紹。

之一步:準(zhǔn)備工作
在開始導(dǎo)入IBD文件之前,需要首先確保以下幾個(gè)條件已經(jīng)滿足:
1. 安裝MySQL存儲(chǔ)引擎;
2. 確保你有足夠的權(quán)限來(lái)操作MySQL數(shù)據(jù)庫(kù);
3. 將IBD文件放置在可讀可寫的文件夾中。
第二步:創(chuàng)建數(shù)據(jù)表
在MySQL中,IBD文件只能與已經(jīng)創(chuàng)建好的數(shù)據(jù)表進(jìn)行導(dǎo)入操作。因此,我們需要先創(chuàng)建一個(gè)數(shù)據(jù)表來(lái)存儲(chǔ)數(shù)據(jù)??梢酝ㄟ^以下命令來(lái)創(chuàng)建數(shù)據(jù)表:
CREATE TABLE table_name (column_name1 column_type1, column_name2 column_type2 …);
在命令中,table_name表示你要?jiǎng)?chuàng)建的數(shù)據(jù)表的名稱,column_name和column_type表示你要?jiǎng)?chuàng)建的字段名和數(shù)據(jù)類型。
第三步:導(dǎo)入IBD文件
有了數(shù)據(jù)表,就可以開始進(jìn)行IBD文件導(dǎo)入了??梢酝ㄟ^以下步驟完成導(dǎo)入:
1. 打開MySQL控制臺(tái),并輸入以下命令:
USE database_name;
其中,database_name是你要導(dǎo)入數(shù)據(jù)的數(shù)據(jù)庫(kù)名稱。
2. 然后輸入以下命令:
ALTER TABLE table_name DISCARD TABLESPACE;
其中,table_name是你要操作的數(shù)據(jù)表名稱。
3. 再輸入以下命令:
ALTER TABLE table_name IMPORT TABLESPACE;
在執(zhí)行上述命令時(shí),你需要指定IBD文件的位置??梢栽诿詈蠹由弦韵聟?shù)來(lái)指定:
DATA DIRECTORY=’data_dir’ [TABLESPACE ENGINE=INNODB];
其中,data_dir是IBD文件所在的路徑,TABLESPACE ENGINE=INNODB表示采用InnoDB存儲(chǔ)引擎進(jìn)行導(dǎo)入。
4. 執(zhí)行完以上命令后,可以通過以下命令來(lái)查詢數(shù)據(jù)是否導(dǎo)入成功:
SHOW TABLE STATUS LIKE ‘table_name’\G;
其中,table_name表示你要查詢的數(shù)據(jù)表名稱。如果顯示的結(jié)果中底下的Engine為InnoDB,表示該數(shù)據(jù)表已經(jīng)成功導(dǎo)入。
以上就是IBD數(shù)據(jù)庫(kù)導(dǎo)入的簡(jiǎn)單流程了。如果你需要備份、恢復(fù)、遷移數(shù)據(jù)庫(kù)中的數(shù)據(jù),那么IBD文件的導(dǎo)入肯定是一項(xiàng)非常重要的操作。只要按照以上步驟,我們相信你能成功學(xué)會(huì)IBD數(shù)據(jù)庫(kù)導(dǎo)入。
相關(guān)問題拓展閱讀:
- 如何解決mysql5
- 重新安裝mysql原來(lái)數(shù)據(jù)庫(kù)的只剩下了.frm的問,怎么恢復(fù)的數(shù)據(jù)
- MySQL的數(shù)據(jù)庫(kù)文件有幾種?擴(kuò)展名及作用分別是什么?
如何解決mysql5
你好,
情況一:MySQL的錯(cuò)誤日志文件(安裝姿明目錄\MYOA\data5\機(jī)器名.err)會(huì)記錄如下內(nèi)容:
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兩個(gè)文件;
2)啟動(dòng)MySQL5_OA服務(wù),使用備份的flow_data_35.sql導(dǎo)入到TD_OA庫(kù)中。如果提示flow_data_35表已經(jīng)存在不能導(dǎo)入,則繼續(xù)按后續(xù)步驟執(zhí)行;
3)在data5下手動(dòng)建立tmp目錄;
4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名稱為flow_data_35的表(包含一個(gè)字段即可);
5)將tmp下的flow_data_35.frm和flow_data_35.ibd拷貝到饑冊(cè)燃安裝目錄\MYOA\data5\TD_OA目錄下;
6)在MySQL管理工具或MySQL命令行程序中,進(jìn)入TD_OA庫(kù),使用“drop table flow_data_35;”命令清除公共表空間中殘留的flow_data_35表的相關(guān)信息;
7)進(jìn)入tmp庫(kù),刪掉flow_data_35表;
8)使用備份的flow_data_35.sql導(dǎo)入到TD_OA庫(kù)中;
9)如果還有其他表存在該問題,可重復(fù)執(zhí)行4至8步驟。
2、情況二:MySQL的錯(cuò)誤日志文件(安裝目錄\MYOA\data5\機(jī)器名.err)會(huì)記錄如下內(nèi)容:
: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
解決方法:
此爛虛情況出現(xiàn)的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA服務(wù)器操作系統(tǒng)不支持所致。改小后再啟動(dòng)mysql5_OA服務(wù)即可,一般保持和數(shù)據(jù)庫(kù)大小一致。數(shù)據(jù)庫(kù)大小即是myoa/data5的大小。
3、情況三:mysql服務(wù)啟動(dòng)不了,事件查看器中顯示:The syntax
‘–log-slow-queries’ is deprecated and will be removed in a future
重新安裝mysql原來(lái)數(shù)據(jù)庫(kù)的只剩下了.frm的問,怎么恢復(fù)的數(shù)據(jù)
創(chuàng)建已經(jīng)丟失的表結(jié)構(gòu)
先要安裝 mysql-utilities。
// RedHatyum -y install mysql-server mysql-utilities// Debianapt install mysql-utilities
使用 mysqlfrm 從 .frm 文件里面找回建表語(yǔ)句。
// 分析一個(gè) .frm 文件生成建表的語(yǔ)句mysqlfrm –diagnostic /var/lib/mysql/test/t1.frm// 分析一個(gè)目錄下的全部.frm文件生成建表語(yǔ)句root@username:~# mysqlfrm –diagnostic /var/lib/mysql/my_db/bk/ >createtb.sqlroot@username:~# grep “^CREATE TABLE” createtb.sql |wc -l124
可以看到一共生成了 124 個(gè)建表語(yǔ)句。
有很多時(shí)候也可以從其它庫(kù)里面生成建表語(yǔ)句,如同一個(gè)應(yīng)用的其它數(shù)據(jù)庫(kù)或不同的測(cè)試環(huán)境,采用下面的 mysqldump 生成建表語(yǔ)句:
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)……
導(dǎo)入舊的數(shù)據(jù)文件
將新建的沒有包括數(shù)據(jù)的 .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 文件都已經(jīng)被拋棄了。然后把舊的有數(shù)據(jù)的 .ibd 文件拷貝到這個(gè) my_db 目錄下面,別忘了把屬主改過來(lái):chown mysql. *,再把這些數(shù)據(jù)文件 import 到數(shù)據(jù)庫(kù)中。
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
導(dǎo)入完成后檢拍悔櫻查表
使用 mysqlcheck 對(duì)數(shù)據(jù)庫(kù) my_db 下的所有表進(jìn)行檢查:
root@username:/var/lib/mysql/my_db# mysqlcheck -c my_dbmy_db.cdp_backup_point OK……
所有的表都導(dǎo)入成功。
一、InnoDB表結(jié)構(gòu)的恢復(fù)
假定:MYSQL數(shù)據(jù)庫(kù)已經(jīng)崩潰,目前只有對(duì)應(yīng)表的frm文件,大家都知道,frm文件無(wú)法通過文本編輯器查看,因?yàn)槿绻换重Q卜復(fù),基本上來(lái)說(shuō)對(duì)我們沒什么用。這里我們?yōu)榱藴y(cè)試,假定該文件為test_innodb.frm
該表創(chuàng)建腳本如下:
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環(huán)境下建立一個(gè)數(shù)據(jù)庫(kù),比如aa.
在aa數(shù)據(jù)庫(kù)下建立同名的數(shù)據(jù)表test_innodb,表結(jié)構(gòu)隨意,這里只有一個(gè)id字段,操作過程片段如下:
mysql> create table test_innodb (id bigint not null)engine=InnoDB;
Query OK, 0 rows affected (0.09 sec)
停止mysql服務(wù)器,將系統(tǒng)崩潰后留下的test_innodb.frm文件拷貝到新的正常數(shù)據(jù)庫(kù)的數(shù)據(jù)目錄aa下,覆蓋掉下邊廳纖歲同名的frm文件,重新啟動(dòng)MYSQL服務(wù)。
END
二. MyISAM表結(jié)構(gòu)的恢復(fù)
同樣先假定需要恢復(fù)的表的FRM文件為test_myisam.frm,表結(jié)構(gòu)為
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拷貝到正常數(shù)據(jù)庫(kù)對(duì)應(yīng)的數(shù)據(jù)目錄下。這時(shí)測(cè)試
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)
發(fā)現(xiàn)只能通過show tables命令看見表名,但是表結(jié)構(gòu)還是沒有恢復(fù),desc命令報(bào)錯(cuò)。
在與test_myisam.frm同一目錄建立以下2個(gè)文件,文件內(nèi)容可以為空:
test_myisam.MYD test_myisam.MYI
在MYSQL命令行使用MYSQL本身的數(shù)扮睜據(jù)表恢復(fù)命令repair命令恢復(fù)表,如下:
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)
根據(jù)結(jié)果可以知道,恢復(fù)命令執(zhí)行成功
MySQL的數(shù)據(jù)庫(kù)文件有幾種?擴(kuò)展名及作用分別是什么?
在MySQL中每一個(gè)數(shù)據(jù)庫(kù)都會(huì)在定義好(或者默認(rèn))的數(shù)據(jù)目錄下存在一個(gè)以數(shù)據(jù)庫(kù)名字命名的改禪
文件夾
,用來(lái)存放該數(shù)據(jù)庫(kù)中各種表數(shù)據(jù)文件。
1、“.frm”文件 與表相關(guān)的
元數(shù)據(jù)
(meta)信息都存放在“.frm”文件中,包括表結(jié)構(gòu)的定義信息等。不論是什么存儲(chǔ)引擎,每一個(gè)表都會(huì)有一個(gè)以表名命名的“.frm”核派塵文件。所有的“.frm”文件都存放在所屬數(shù)據(jù)庫(kù)的文件夾下面。
2、“.MYD”文件“ .MYD”文件是MyISAM存儲(chǔ)引擎專用,存放MyISAM表的數(shù)據(jù)。每一個(gè)MyISAM表都會(huì)有一個(gè)“.MYD”文件與之對(duì)應(yīng),同樣存放于所屬數(shù)據(jù)庫(kù)的文件夾下,和“.frm”文件在一起。
3、“.MYI”文件 “.MYI”文件也是專屬于MyISAM存儲(chǔ)引擎的,主要存放MyISAM表的索引相關(guān)信息。對(duì)于MyISAM存儲(chǔ)來(lái)說(shuō),可以被cache的內(nèi)容主要就羨碧是來(lái)源于“.MYI”文件中。每一個(gè)MyISAM表對(duì)應(yīng)一個(gè)“.MYI”文件,存放于位置和“.frm”以及“.MYD”一樣。
管理工具:
可以使用命令行工具管理 MySQL 數(shù)據(jù)庫(kù)(命令 mysql 和 mysqladmin),也可以從 MySQL 的網(wǎng)站下載圖形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。
phpMyAdmin是由 php 寫成的 MySQ L資料庫(kù)系統(tǒng)管理程程序,讓管理者可用 Web 界面管理 MySQL 資料庫(kù)。
phpMyBackupPro也是由 PHP 寫成的,可以透過 Web 界面創(chuàng)建和管理數(shù)據(jù)庫(kù)。它可以創(chuàng)建偽 cronjobs,可以用來(lái)自動(dòng)在某個(gè)時(shí)間或周期備份 MySQL 數(shù)據(jù)庫(kù)。另外,還有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager, navicat等等。
以上內(nèi)容參考:
百度百科-mySQL
在MySQL中每一個(gè)數(shù)據(jù)庫(kù)都會(huì)在定義好(或者默認(rèn))的數(shù)據(jù)目錄下存在一個(gè)以數(shù)據(jù)庫(kù)名字命名的文件夾,用來(lái)存放該數(shù)據(jù)庫(kù)中各種表數(shù)據(jù)文件。
不同的MySQL存儲(chǔ)引擎有各自不同的數(shù)據(jù)文件,存放位置也有區(qū)別。
多數(shù)存儲(chǔ)引擎的數(shù)據(jù)文件都存放在和MyISAM數(shù)據(jù)文件位置相同的目錄下,但是每個(gè)數(shù)據(jù)文件的擴(kuò)展名卻各不一樣。如MyISAM用“.MYD”作為擴(kuò)展名,Innodb用“.ibd”,Archive用“.arc”,CSV用“.csv”,等等。
1、“.frm”文件 與表相關(guān)的元數(shù)據(jù)(meta)信息都存放在“.frm”文件中,包括表結(jié)構(gòu)的定義信息等。不論是什么存儲(chǔ)引擎,每一個(gè)表都會(huì)有一個(gè)以表名命名的“.frm”文件。所有的“.frm”文件燃鏈都存放在所屬數(shù)據(jù)庫(kù)的文件夾下面。
2、“.MYD”文件“ .MYD”文件是MyISAM存儲(chǔ)引擎專用,存放MyISAM表的數(shù)據(jù)。
每一個(gè)MyISAM表都會(huì)有一個(gè)“.MYD”文件與之對(duì)應(yīng),同樣存放于所屬數(shù)據(jù)庫(kù)的文件夾下,和“.frm”文件在一起。
3、“.MYI”文件 “.MYI”文件也是專屬于MyISAM存儲(chǔ)引擎的,主要存放MyISAM表的索引相關(guān)信息。對(duì)于MyISAM存儲(chǔ)來(lái)說(shuō),可以被cache的內(nèi)容主要就是來(lái)源于“.MYI”文件中。每一個(gè)MyISAM表對(duì)應(yīng)一個(gè)“.MYI”文件,存放于位置和“.frm”以及“.MYD”一樣。
4、“.ibd”文件和ibdata文件 這兩種文件都是存放Innodb數(shù)據(jù)的文件,之所以有兩種文件來(lái)存放Innodb的數(shù)據(jù)(包括索引),是因?yàn)?Innodb 的數(shù)據(jù)存儲(chǔ)方式能夠通過配置來(lái)決定是使用共享表空間存放存儲(chǔ)數(shù)據(jù),還是獨(dú)享表空間存放存儲(chǔ)數(shù)據(jù)。
Replication 主從復(fù)制的相關(guān)文件
1、master.info文件
master.info 文件存在于 Slave(從機(jī))端的數(shù)據(jù)目錄下,里面存放了該Slave的Master端的相關(guān)信息,包括Master的主機(jī)地址,連接用戶,連接密碼,連接端口,當(dāng)前日志位置,已經(jīng)讀取到的日志位置等信息。
2、relaylog 和 relaylogindex
mysql-relay-bin.xxxxxn 文件用于存放Slave 端的 I/O 線程從Master端所讀取到的喊段輪BinaryLog信息,
然后由Slave端的SQL線程從該relaylog中讀取并解析相應(yīng)的日志信息,轉(zhuǎn)化成Master所執(zhí)行的SQL語(yǔ)句,然后在Slave端應(yīng)用。
mysql-relay-bin.index文件的功能類似于mysql-bin.index,同樣是記錄日志的存放位置的絕對(duì)路徑,只不過他所記錄的不是BinaryLog,而是RelayLog。
3、relay-log.info文件
類似于master.info,它存放通過 Slave 的I/O線程寫入到本地的relaylog的相關(guān)信息。供Slave端的SQL線程以及某些管理操作隨時(shí)能夠獲取當(dāng)前復(fù)制的相關(guān)信息。
其他文件
1、system config file
MySQL的系統(tǒng)配置文件一般都是“my.cnf”,Unix/Linux下默認(rèn)存放在”/etc”目錄下,Windows環(huán)境一般存放在“c:/windows”目錄下面。
“my.cnf”文件中包含多種參數(shù)選項(xiàng)組(group),每一種參數(shù)組都通過中括號(hào)給定了固定的組名,如“”組中包括了mysqld服務(wù)啟動(dòng)時(shí)候的初始化參數(shù),“”組中包含著客戶端工具程序可以讀取的參數(shù),此外還有其他針對(duì)于各個(gè)客戶端軟件的特定參數(shù)組,如mysql程序使用的“”,mysqlchk使用的“”,等等。
2、pid file
pidfile是mysqld應(yīng)用程序在Unix/Linux環(huán)境下的一個(gè)進(jìn)程文件,和許多其他Unix/Linux服務(wù)端程序一樣,存放著自己的進(jìn)程id。
3、socket file
ibd導(dǎo)入數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于ibd導(dǎo)入數(shù)據(jù)庫(kù),簡(jiǎn)單易懂!30秒學(xué)會(huì)IBD數(shù)據(jù)庫(kù)導(dǎo)入,如何解決mysql5,重新安裝mysql原來(lái)數(shù)據(jù)庫(kù)的只剩下了.frm的問,怎么恢復(fù)的數(shù)據(jù),MySQL的數(shù)據(jù)庫(kù)文件有幾種?擴(kuò)展名及作用分別是什么?的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營(yíng)銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站維護(hù),網(wǎng)絡(luò)營(yíng)銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽(yáng)、雅安、重慶、貴州、昆明、鄭州、湖北十堰機(jī)房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。
當(dāng)前名稱:簡(jiǎn)單易懂!30秒學(xué)會(huì)IBD數(shù)據(jù)庫(kù)導(dǎo)入 (ibd導(dǎo)入數(shù)據(jù)庫(kù))
網(wǎng)站URL:http://m.fisionsoft.com.cn/article/coiejsc.html


咨詢
建站咨詢
