最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql通過frm和ibd文件恢復(fù)表_mysql5.7根據(jù).frm和.ibd文件恢復(fù)表結(jié)構(gòu)和數(shù)據(jù)

 更新時(shí)間:2025年03月02日 23:02:17   作者:weixin_39723519  
文章主要介紹了如何從.frm和.ibd文件恢復(fù)MySQL InnoDB表結(jié)構(gòu)和數(shù)據(jù),需要的朋友可以參考下

一、恢復(fù)表結(jié)構(gòu)

1、環(huán)境:Windows 、mysql5.7;首先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),可以通過navicat來創(chuàng)建:

fdb565bb1ff75554cc535cd84f6eff7c.png

2、使用當(dāng)前創(chuàng)建的數(shù)據(jù)庫(kù):use ww;

3、隨意創(chuàng)建一張表,但是這張表的名字要和你要恢復(fù)的.frm或者.ibd一致,我的.frm與.ibd文件為gonggao.frm與gonggao.ibd 因此我的創(chuàng)建表語(yǔ)句為:

create table gonggao(id int);

7fe659d61e33b6c4d0c0731564a9286c.png

4、在執(zhí)行上面的創(chuàng)建表語(yǔ)句之后,在服務(wù)里面或者使用net stop mysql關(guān)閉數(shù)據(jù)庫(kù)服務(wù),然后用需要恢復(fù)的gonggao.frm覆蓋這個(gè)新建的ww數(shù)據(jù)庫(kù)gonggao表的物理文件gonggao.frm,接著對(duì)配置文件(my.ini)設(shè)置innodb_force_recovery = 6,然后使用net start mysql啟動(dòng)服務(wù),接著使用:desc gonggao; 查看該表結(jié)構(gòu),會(huì)出現(xiàn)下面錯(cuò)誤信息:

43f3c7017264e7fc98cae006e61904fc.png

5、針對(duì)這個(gè)問題,我們可以通過查看mysql的日志文件來解決,查看mysql安裝目錄下的data文件夾里面.err結(jié)尾的文件,你會(huì)發(fā)現(xiàn)出現(xiàn)下面所示的錯(cuò)誤信息:[Warning] InnoDB: Table ww/gonggao contains 1 user defined columns in InnoDB, but 4 columns in MySQL.原來是因?yàn)椋覀円謴?fù)的表有4個(gè)字段,而我們?cè)趧?chuàng)建表的時(shí)候只創(chuàng)建了1個(gè)字段。

0306e2855f05e128de55218acc4bc266.png

解決方案:刪除gonggao表重新創(chuàng)建一個(gè)包含4個(gè)字段的表,具體這4個(gè)字段是什么不用管的。具體執(zhí)行過程為使用net stop mysql停掉服務(wù),然后在配置文件my.ini中將innodb_force_recovery = 6注釋掉(#或;均可),再net start mysql啟動(dòng)服務(wù)。接著在控制臺(tái)先執(zhí)行drop table gonggao;刪除表,再執(zhí)行創(chuàng)建表語(yǔ)句,我執(zhí)行的是下面的創(chuàng)建表語(yǔ)句:create table gonggao(id int,id1 int,id2 int,id3 int);

緊接著按照前面的方式,使用net stop mysql關(guān)閉數(shù)據(jù)庫(kù)服務(wù),然后用需要恢復(fù)的gonggao.frm覆蓋這個(gè)新建的ww數(shù)據(jù)庫(kù)的gonggao表的物理文件gonggao.frm,接著對(duì)配置文件(my.ini)設(shè)置innodb_force_recovery = 6,然后使用net start mysql啟動(dòng)服務(wù),接著使用:desc gonggao; 查看該表結(jié)構(gòu),輸出下面結(jié)果表示恢復(fù)表結(jié)構(gòu)成功:

21a91444d069aee7d2c8382d5ace79da.png

6、復(fù)制創(chuàng)建gonggao表的語(yǔ)句;我們需要通過創(chuàng)建表的語(yǔ)句重新創(chuàng)建表,當(dāng)然在創(chuàng)建表之前需要將已經(jīng)創(chuàng)建好的gonggao刪除掉,具體獲取創(chuàng)建表的語(yǔ)句可以通過navicat來實(shí)現(xiàn),在navicat中選中g(shù)onggao表,右鍵點(diǎn)擊"對(duì)象信息",出現(xiàn)下面截圖信息,選中DDL,里面的內(nèi)容就是我們創(chuàng)建gonggao表的sql語(yǔ)句了:

b86f3c4e35fed3a4e65cd51d73876817.png

8d6ff4aff2e77aeab716a71d7ed4e811.png

接著在控制臺(tái)執(zhí)行drop table gonggao;刪除gonggao表,當(dāng)然在執(zhí)行刪除gonggao命令之前,還需要停庫(kù)將my.ini中的innodb_force_recovery = 6刪除或者注釋掉,再啟動(dòng)mysql。接著執(zhí)行下面命令重新創(chuàng)建表即可:

CREATE TABLE `gonggao` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`qihao` bigint(20) DEFAULT NULL COMMENT '號(hào)期,如1456',
`gonggao_date` date DEFAULT NULL COMMENT '公告日期',
`sn_this_year` smallint(6) DEFAULT NULL COMMENT '年本內(nèi)的期號(hào)',
PRIMARY KEY (`id`),
KEY `index_qihao` (`qihao`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

ce1cde53b73b0f05e9f3bba09d399eca.png

其實(shí)以上操作的目的就是為了獲取建表語(yǔ)句,也可以用mysqlfrm工具獲取到,具體可以看我另外一篇文章:

鏈接:https://www.cnblogs.com/weiyiming007/p/10280943.html

二、恢復(fù)表數(shù)據(jù)

1、恢復(fù)表數(shù)據(jù)需要首先將原先的.ibd文件與原先的.frm文件解除綁定,具體就是在控制臺(tái)執(zhí)行下面命令:

alter table gonggao discard tablespace;

628374b9f28967c8bdeca61d7a5b1759.png

2、接著執(zhí)行net stop mysql停掉服務(wù),將需要恢復(fù)的gonggao.ibd文件覆蓋這個(gè)新建的ww數(shù)據(jù)庫(kù)的gonggao表的物理文件gonggao.ibd,執(zhí)行net start mysql開啟服務(wù)。

da67ce36e2f2bf3b0a6e11504412520a.png

3、將復(fù)制過來的gonggao.ibd文件與gonggao.frm文件發(fā)生聯(lián)系。具體執(zhí)行下面命令:

alter table gonggao import tablespace;

6adc40060963c6c8b325b5677a602b21.png

4、這時(shí)候通過navicat查看數(shù)據(jù)表,你會(huì)發(fā)現(xiàn)數(shù)據(jù)已經(jīng)成功恢復(fù)啦。

657e82c9f4be86a2d6b5439bcb2b83d0.png

參考原文:https://blog.csdn.net/hzw19920329/article/details/78045864

MySQL innodb引擎下根據(jù).frm和.ibd文件恢復(fù)表結(jié)構(gòu)和數(shù)據(jù)

記錄通過.frm和.ibd文件恢復(fù)數(shù)據(jù)到本地 .frm文件:保存了每個(gè)表的元數(shù)據(jù),包括表結(jié)構(gòu)的定義等: .ibd文件:InnoDB引擎開啟了獨(dú)立表空間(my.ini中配置innodb_file_per ...

補(bǔ)充方法

一、恢復(fù)表結(jié)構(gòu)(從 .frm 文件)

方法 1:使用 mysqlfrm 工具(推薦)

mysqlfrm 是 MySQL Utilities 中的一個(gè)工具,可以從 .frm 文件提取表結(jié)構(gòu)。

安裝 MySQL Utilities

# Ubuntu/Debian
sudo apt-get install mysql-utilities

# CentOS/RHEL
sudo yum install mysql-utilities

提取表結(jié)構(gòu)

mysqlfrm --diagnostic /path/to/table.frm --port=3306

示例輸出:

CREATE TABLE `table_name` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

保存生成的 SQL 語(yǔ)句,后續(xù)用于重建表。

方法 2:手動(dòng)重建表結(jié)構(gòu)(如果 mysqlfrm 不可用)

如果 .frm 文件損壞或無(wú)法使用工具,需根據(jù)業(yè)務(wù)邏輯手動(dòng)編寫建表語(yǔ)句。

二、恢復(fù)表數(shù)據(jù)(從 .ibd 文件)

前提條件

恢復(fù)數(shù)據(jù)的 MySQL 實(shí)例必須與原實(shí)例的 版本一致。

恢復(fù)數(shù)據(jù)的表結(jié)構(gòu)必須與原表 完全一致(字段名、類型、引擎、字符集等)。

步驟 1:創(chuàng)建同名空表

使用從 .frm 文件提取的 SQL 語(yǔ)句創(chuàng)建空表:

CREATE DATABASE IF NOT EXISTS recovery_db;
USE recovery_db;
-- 執(zhí)行提取的建表語(yǔ)句
CREATE TABLE `table_name` (...);

步驟 2:卸載表空間

ALTER TABLE recovery_db.table_name DISCARD TABLESPACE;

步驟 3:復(fù)制 .ibd 文件到數(shù)據(jù)目錄

關(guān)閉 MySQL 服務(wù):

systemctl stop mysql

將原 .ibd 文件復(fù)制到 MySQL 數(shù)據(jù)目錄:

cp /path/to/table.ibd /var/lib/mysql/recovery_db/table_name.ibd

修改文件權(quán)限:

chown mysql:mysql /var/lib/mysql/recovery_db/table_name.ibd

啟動(dòng) MySQL 服務(wù):

systemctl start mysql

步驟 4:導(dǎo)入表空間

ALTER TABLE recovery_db.table_name IMPORT TABLESPACE;

步驟 5:驗(yàn)證數(shù)據(jù)

SELECT * FROM recovery_db.table_name LIMIT 10;

三、常見問題及解決

1. 錯(cuò)誤 Tablespace is missing

原因:表結(jié)構(gòu)不匹配或 .ibd 文件路徑錯(cuò)誤。

解決

確保表結(jié)構(gòu)與原表完全一致。

檢查 .ibd 文件是否在正確的數(shù)據(jù)庫(kù)目錄下。

2. 錯(cuò)誤 Table doesn't exist in engine

原因:InnoDB 內(nèi)部元數(shù)據(jù)不一致。

解決

刪除表并重新創(chuàng)建。

重啟 MySQL 服務(wù)后重試。

3. 錯(cuò)誤 Row size too large

原因:原表使用了與當(dāng)前實(shí)例不同的 innodb_page_size。

解決
調(diào)整 innodb_page_size 參數(shù)并重建實(shí)例。

四、注意事項(xiàng)

備份原文件:操作前備份 .frm 和 .ibd 文件,避免意外損壞。

版本一致性:確保 MySQL 版本與原環(huán)境一致。

文件權(quán)限:復(fù)制文件后需正確設(shè)置權(quán)限(chown mysql:mysql)。

通過以上步驟,即可從 .frm 和 .ibd 文件恢復(fù)完整的表結(jié)構(gòu)和數(shù)據(jù)。如果遇到復(fù)雜問題,建議聯(lián)系專業(yè)數(shù)據(jù)恢復(fù)服務(wù)。

相關(guān)文章

  • MySQL入門(三) 數(shù)據(jù)庫(kù)表的查詢操作【重要】

    MySQL入門(三) 數(shù)據(jù)庫(kù)表的查詢操作【重要】

    本節(jié)比較重要,對(duì)數(shù)據(jù)表數(shù)據(jù)進(jìn)行查詢操作,其中可能大家不熟悉的就對(duì)于INNER JOIN(內(nèi)連接)、LEFT JOIN(左連接)、RIGHT JOIN(右連接)等一些復(fù)雜查詢。 通過本節(jié)的學(xué)習(xí),可以讓你知道這些基本的復(fù)雜查詢是怎么實(shí)現(xiàn)的,,需要的朋友可以參考下
    2018-07-07
  • MySQL使用正則表達(dá)式進(jìn)行查詢操作經(jīng)典實(shí)例總結(jié)

    MySQL使用正則表達(dá)式進(jìn)行查詢操作經(jīng)典實(shí)例總結(jié)

    這篇文章主要介紹了MySQL使用正則表達(dá)式進(jìn)行查詢操作,結(jié)合實(shí)例形式總結(jié)分析了各種常見匹配模式的查詢操作實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • mysql中的limit 1 for update的鎖類型

    mysql中的limit 1 for update的鎖類型

    這篇文章主要介紹了mysql中的limit 1 for update的鎖類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • mysql8新特性之binlog_expire_logs_seconds淺析

    mysql8新特性之binlog_expire_logs_seconds淺析

    MySQL8中新增了不少新特性,這些特性提高了數(shù)據(jù)庫(kù)的安全性和性能,使數(shù)據(jù)庫(kù)管理員能夠更靈活地進(jìn)行賬戶管理工作,下面這篇文章主要給大家介紹了關(guān)于mysql8新特性之binlog_expire_logs_seconds的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • MySQL死鎖的產(chǎn)生原因以及解決方案

    MySQL死鎖的產(chǎn)生原因以及解決方案

    這篇文章主要介紹了MySQL死鎖的產(chǎn)生原因以及解決方案,幫助大家更好的維護(hù)數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-09-09
  • Linux系統(tǒng)中安裝MySQL的詳細(xì)圖文步驟

    Linux系統(tǒng)中安裝MySQL的詳細(xì)圖文步驟

    本文的主要內(nèi)容是在 Linux 上安裝 MySQL,以下內(nèi)容是源于 B站 - MySQL數(shù)據(jù)庫(kù)入門到精通 整理而來,需要的朋友可以參考下
    2023-06-06
  • 深入分析Mysql中l(wèi)imit的用法

    深入分析Mysql中l(wèi)imit的用法

    很久沒用mysql的limit,一時(shí)大意竟然用錯(cuò)了,自認(rèn)為(limit 開始,結(jié)束),其實(shí)錯(cuò)了,正確的應(yīng)該是(limit 偏移量,條數(shù)),為了記住這次錯(cuò)誤,轉(zhuǎn)載一篇limit用法詳解。推薦給大家,希望對(duì)大家能夠有所幫助。
    2015-03-03
  • MYSQL如何查看進(jìn)程和kill進(jìn)程

    MYSQL如何查看進(jìn)程和kill進(jìn)程

    這篇文章主要介紹了MYSQL如何查看進(jìn)程和kill進(jìn)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • mysql 安全管理詳情

    mysql 安全管理詳情

    這篇文章主要介紹了mysql 安全管理,MySQL服務(wù)器的安全基礎(chǔ)是用戶應(yīng)該對(duì)他們需要的數(shù)據(jù)具有適當(dāng)?shù)脑L問權(quán),既不能多也不能少,換句話說,用戶不能對(duì)過多的數(shù)據(jù)具有過多的訪問權(quán),下面?zhèn)z看看文章詳細(xì)內(nèi)容吧
    2021-10-10
  • SQL如何使用正則表達(dá)式對(duì)數(shù)據(jù)進(jìn)行過濾

    SQL如何使用正則表達(dá)式對(duì)數(shù)據(jù)進(jìn)行過濾

    正則表達(dá)式的作用是匹配文本,將一個(gè)正則表達(dá)式與一個(gè)文本串進(jìn)行比較,下面這篇文章主要給大家介紹了關(guān)于SQL如何使用正則表達(dá)式對(duì)數(shù)據(jù)進(jìn)行過濾的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評(píng)論

娄底市| 邹城市| 安岳县| 孝昌县| 阿瓦提县| 双鸭山市| 乌拉特中旗| 本溪| 高邮市| 招远市| 偃师市| 元谋县| 焉耆| 临桂县| 广宁县| 大方县| 伊金霍洛旗| 肇源县| 巴彦淖尔市| 车险| 布拖县| 大竹县| 冷水江市| 肇源县| 方城县| 玉林市| 东莞市| 招远市| 沙湾县| 诸暨市| 宁化县| 永城市| 湘阴县| 望江县| 呼和浩特市| 云龙县| 万年县| 江孜县| 南安市| 错那县| 石楼县|