通過frm和ibd恢復資料庫

2021-09-12 22:36:07 字數 1737 閱讀 9261

新建空的資料庫, 匯入上述表結構

刪除對應的表空間, 將表對應的ibd檔案複製到資料目錄下

重新插入表空間

mysql

備份var目錄, 初始化資料庫mysqld --initialize-insecure通過mysqlfrm可以從frm中獲取表結構

新建空的資料庫, 匯入上述表結構

刪除對應的表空間, 將表對應的ibd檔案複製到資料目錄下

重新插入表空間

# 原始碼安裝

python setup.py install

# 檢視表結構

# 新增mysql例項來恢復, 能輸出編碼

# --port 必須和3306不同

mysqlfrm --server=root:rootpassword@localhost:3306 wehospital:t_bind.frm --port=3307

# 通過引數--diagnostic 來恢復

mysqlfrm --diagnostic .t_bind.frm

# 匯出所有表結構到檔案

mysqlfrm --server=root:[email protected] --port 3307 ./*.frm >paycenter.sql

# 因為在命令中使用了資料庫命令, 刪除第一行警告

sed -i "1d" paycenter.sql

# 在建立表結構語句結尾加上;

sed -i "s/.*engine=.*/&;/" paycenter.sql

raise errors.internalerror(「unread result found」)

# /usr/local/lib/python2.7/site-packages/mysql/utilities/common/server.py line 1327 增加

cur = self.db_conn.cursor(buffered=

true

)

『ascii』 codec can』t decode byte 0xe8 in position 10

importsys

reload

(sys)

# sys.setdefaultencoding('utf8')

sys.setdefaultencoding(

'gb18030'

)

create database if not exists `paycenter` default character set utf8 collate utf8_general_ci;

cat paycenter.sql |mysql -uroot -p paycenter

刪除對應的表空間

-- 在資料庫檔案下執行

alter

table t_account discard

tablespace

;

拷貝ibd檔案, 需要修改許可權為mysql:mysql

ls *.frm|awk -f "." ''
-- 在資料庫檔案下執行

alter

table t_account import

tablespace

;

frm和 ibd恢復資料

昨日晚上開發告訴我不小心truncate兩個表的資料,要求還原。結果在阿里雲上找到了備份內容,結果是物理備份檔案.frm ibd。心中一萬個草泥馬啊。沒辦法,開始還原吧。1 檢視測試機mysql配置檔案位置 root localhost mysql which mysqld usr sbin mys...

mysql由 frm和 ibd恢復資料

資料小常識 frm存放資料庫的表結構 ibd存放資料內容 1 建立資料庫 2 建立需要恢復的表 這樣就會在對應的資料庫下產生.frm和.ibd檔案 跳坑 建立表時候的字段和需要被恢復的表的一致 3 執行 alter table 表名字 discard tablespace 比如 alter tabl...

通過日誌恢復資料庫

建立測試資料庫test create database test onprimary name test data.mdf filename d test data.mdf logon name test data.ldf filename d test data.ldf 建立測試表 create ...