MySQL數(shù)據(jù)恢復(fù)工具:ibd2sql離線(xiàn)解析.ibd文件轉(zhuǎn)換為SQL
ibd2sql工具可能是您的救命稻草。這是一款能將離線(xiàn)ibd文件轉(zhuǎn)換為SQL語(yǔ)句的神器,可以幫助恢復(fù)寶貴的數(shù)據(jù)。
ibd2sql 是一個(gè)使用純 Python 3 編寫(xiě)的工具,用于離線(xiàn)解析 MySQL InnoDB 存儲(chǔ)引擎的 IBD 文件,并將其轉(zhuǎn)換為 SQL 語(yǔ)句。該工具無(wú)需任何第三方依賴(lài)包,使用 GPL-3.0 許可證發(fā)布。
ibd2sql優(yōu)點(diǎn)
- 方便: 提取表的 DDL(數(shù)據(jù)定義語(yǔ)言)。
- 實(shí)用: 支持替換庫(kù)名(–schema)和表名(–table),可以在 SQL 語(yǔ)句中輸出完整的字段(–complete)。
- 簡(jiǎn)單: 純 Python 3 代碼編寫(xiě),無(wú)依賴(lài)包。
- 支持眾多數(shù)據(jù)類(lèi)型: 支持所有 MySQL 數(shù)據(jù)類(lèi)型。
- 支持復(fù)雜的表結(jié)構(gòu): 支持分區(qū)表、注釋、主鍵、外鍵、約束、自增、普通索引、前綴索引、主鍵前綴索引、唯一索引、復(fù)合索引、默認(rèn)值、符號(hào)、虛擬字段、INSTANT、無(wú)主鍵等情況的表。
- 數(shù)據(jù)誤刪恢復(fù): 可以輸出被標(biāo)記為已刪除的數(shù)據(jù)。
- 安全: 離線(xiàn)解析 IBD 文件,僅需讀取權(quán)限。
- IBD文件強(qiáng)制解析:IBD文件如果損壞,可以恢復(fù)部分?jǐn)?shù)據(jù)。
- 支持范圍廣: 支持 MySQL 5.6、5.7、8.0、8.4、9.0。
ibd2sql缺點(diǎn)
- 性能: 對(duì)于大型表,解析和生成 SQL 語(yǔ)句的過(guò)程可能較慢。
- 數(shù)據(jù)完整性: 如果 IBD 文件本身已經(jīng)嚴(yán)重?fù)p壞,恢復(fù)的數(shù)據(jù)可能不完整。
- 資源消耗: 生成的 SQL 文件可能較大,需要足夠的磁盤(pán)空間和內(nèi)存。
ibd2sql參數(shù)說(shuō)明
--version, -v, -V: 顯示版本信息。 --ddl, -d: 打印 DDL。 --sql: 打印數(shù)據(jù)的 SQL 語(yǔ)句。 --delete: 僅打印被標(biāo)記為已刪除的數(shù)據(jù)。 --complete-insert: 使用完整的插入語(yǔ)句。 --force, -f: 在遇到錯(cuò)誤頁(yè)面時(shí)強(qiáng)制解析文件。 --set: 用實(shí)際數(shù)據(jù)填充 set/enum 而不是字符串。 --multi-value: 如果數(shù)據(jù)屬于同一頁(yè)面,則使用單個(gè) SQL 語(yǔ)句。 --replace: 使用 "REPLACE INTO" 替換 "INSERT INTO"(默認(rèn))。 --table TABLE_NAME: 替換表名(不包括 DDL)。 --schema SCHEMA_NAME: 替換庫(kù)名(不包括 DDL)。 --sdi-table SDI_TABLE: 從這個(gè) IBD 文件(分區(qū)表)讀取 SDI 頁(yè)面。 --where-trx WHERE_TRX: 事務(wù)過(guò)濾范圍,默認(rèn) (0,281474976710656)。 --where-rollptr WHERE_ROLLPTR: 回滾指針過(guò)濾范圍,默認(rèn) (0,72057594037927936)。 --limit LIMIT: 限制行數(shù)。 --debug, -D: 調(diào)試模式(輸出非常大)。 --debug-file DEBUG_FILE: 調(diào)試輸出文件,默認(rèn)為 sys.stdout。 --page-min PAGE_MIN: 如果頁(yè)面編號(hào)小于此值,則終止。 --page-max PAGE_MAX: 如果頁(yè)面編號(hào)大于此值,則終止。 --page-start PAGE_START: 索引頁(yè)面起始編號(hào)。 --page-count PAGE_COUNT: 頁(yè)面計(jì)數(shù)編號(hào)。 --page-skip PAGE_SKIP: 解析索引頁(yè)面時(shí)跳過(guò)某些頁(yè)面。 --mysql5: 適用于 MySQL 5.7 標(biāo)志。
環(huán)境依賴(lài)python3
tar xvf Python-3.6.1.tgz cd Python-3.6.1 mkdir -p /usr/local/python3 ./configure --prefix=/usr/local/python3 make && make install ln -s /usr/local/python3/bin/python3 /usr/bin/python3
安裝ibd2sql
[root@idc opt]# wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip[root@idc opt]# unzip main.zip[root@idc opt]# cd ibd2sql-main
解析ibd文件
[root@idc ibd2sql-main]# cp /jesong/mysql/qaqdb/inner_announcement.ibd /opt/ibd2sql-main/ [root@idc-mongo55 ibd2sql-main]# python3 main.py ./inner_announcement.ibd --sql --ddl
使用示例
##僅打印被標(biāo)記為已刪除的數(shù)據(jù) python3 main.py /jesong/mysql/qaqdb/el_inner_announcement.ibd --sql --ddl --delete ##使用完整的插入語(yǔ)句 python3 main.py /jesong/mysql/qaqdb/el_inner_announcement.ibd --sql --ddl --delete --complete-insert ##在遇到錯(cuò)誤頁(yè)面時(shí)強(qiáng)制解析文件 python3 main.py /jesong/mysql/qaqdb/el_inner_announcement.ibd --sql --ddl --force ##替換表名 python3 main.py /jesong/mysql/qaqdb/el_inner_announcement.ibd --sql --ddl --complete-insert --table xxbox ##數(shù)據(jù)屬于同一頁(yè)面,則使用單個(gè) SQL 語(yǔ)句(合并insert) python3 main.py /jesong/mysql/qaqdb/el_inner_announcement.ibd --sql --ddl --complete-insert --table xxbox --multi-value
總結(jié)
ibd2sql 是一個(gè)強(qiáng)大的工具,適用于多種 MySQL 數(shù)據(jù)管理和恢復(fù)場(chǎng)景。它的無(wú)依賴(lài)包、廣泛支持的 MySQL 版本和靈活的輸出選項(xiàng)使其成為處理 IBD 文件的有力工具。然而,對(duì)于大型表和嚴(yán)重?fù)p壞的 IBD 文件,使用時(shí)需要注意性能和數(shù)據(jù)完整性問(wèn)題??傮w來(lái)說(shuō),ibd2sql 是一個(gè)值得推薦的工具,特別適合數(shù)據(jù)恢復(fù)、遷移和審計(jì)等任務(wù)。
到此這篇關(guān)于MySQL數(shù)據(jù)恢復(fù)工具:ibd2sql離線(xiàn)解析.ibd文件轉(zhuǎn)換為SQL的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)恢復(fù)工具ibd2sql解析.ibd文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL如何恢復(fù)單庫(kù)或單表,以及可能遇到的坑
這篇文章主要介紹了MySQL如何恢復(fù)單庫(kù)或單表,以及可能遇到的坑,幫助大家更好的備份數(shù)據(jù)庫(kù),保護(hù)數(shù)據(jù)安全,感興趣的朋友可以了解下2020-09-09
新建一個(gè)MySQL數(shù)據(jù)庫(kù)的簡(jiǎn)單教程
這篇文章主要介紹了新建一個(gè)MySQL數(shù)據(jù)庫(kù)的簡(jiǎn)單教程,是MySQL入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
idea連接mysql數(shù)據(jù)庫(kù)失敗的幾種解決方案
我們?cè)趯W(xué)習(xí)Mybatis時(shí)需要連接Mysql數(shù)據(jù)庫(kù),使用IDEA無(wú)法連接mysql數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于idea連接mysql數(shù)據(jù)庫(kù)失敗的幾種解決方案,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
MySql修改數(shù)據(jù)庫(kù)編碼為UTF8避免造成亂碼問(wèn)題
mysql 創(chuàng)建數(shù)據(jù)庫(kù)時(shí)指定編碼很重要,很多開(kāi)發(fā)者都使用了默認(rèn)編碼,亂碼問(wèn)題可是防不勝防,下面與大家分享下通過(guò)修改數(shù)據(jù)庫(kù)默認(rèn)編碼方式為UTF8來(lái)減少數(shù)據(jù)庫(kù)創(chuàng)建時(shí)的設(shè)置,避免因粗心造成的亂碼問(wèn)題2013-06-06
sql中with?as用法以及with-as性能調(diào)優(yōu)/with用法舉例
SQL中的WITH?AS語(yǔ)法是一種強(qiáng)大的工具,可以簡(jiǎn)化復(fù)雜查詢(xún)的編寫(xiě),提高查詢(xún)的可讀性和維護(hù)性,這篇文章主要給大家介紹了關(guān)于sql中with?as用法以及with-as性能調(diào)優(yōu)/with用法的相關(guān)資料,需要的朋友可以參考下2024-01-01
使用JS+HTML/CSS實(shí)現(xiàn)虛擬滾動(dòng)和分頁(yè)加載效果
虛擬滾動(dòng)和分頁(yè)加載是一種優(yōu)化大型數(shù)據(jù)集的常見(jiàn)技術(shù),用于在Web應(yīng)用程序中提高性能和用戶(hù)體驗(yàn),在本文中,我將演示如何使用JavaScript和HTML/CSS來(lái)實(shí)現(xiàn)虛擬滾動(dòng)和分頁(yè)加載,同時(shí)提供示例代碼和詳細(xì)解釋,需要的朋友可以參考下2023-10-10
MySQL優(yōu)化之對(duì)RAND()的優(yōu)化方法
這篇文章主要介紹了MySQL優(yōu)化之對(duì)RAND()的優(yōu)化方法,本文詳細(xì)分析了Mysql中對(duì)RAND()的幾種優(yōu)化方法,并最終得出一個(gè)結(jié)論,需要的朋友可以參考下2014-07-07

