日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

mysql5.7.33誤刪除ibdata文件找回數據的方法

瀏覽:26日期:2023-10-04 18:51:28
一、場景說明:

很多時候因為 MySQL 數據庫不能啟動而造成數據無法訪問,但應用的數據通常沒有丟失,只是系統表空間等其它文件損壞了,或者遇到 MySQL 的 bug。

這個時候如果沒有備份,很多人就以為數據丟失了,但實際上大部分時候數據還是有救的。對于 MyISAM 引擎的表空間,直接把對應的數據文件拷貝到一個新的數據庫就行了,數據就可以恢復了。對于 InnoDB 引擎的數據庫表空間可以采用傳輸表空間的方式把數據救回來.前提是MySQL開啟了參數 innodb_file_per_table = 1 獨立表空間文件

當MySQL的數據表空間文件ibdata文件損壞或者是被無修改和刪除,導致MySQL服務重啟失敗。同時MySQL的數據又沒有及時備份,此時如何盡可能多的找回MySQL數據呢??

二、案例演示:2.1、確認MySQL故障前,庫中的每張表有多少記錄

for n in `mysql -e 'use db_bbs;show tables;'|sed ’1d’`;do echo $n; mysql -e 'use db_bbs;select count(*) from $n;';done >test.txt

確認MySQL故障前,庫中一共有多少張表:

一共是39張表:

[root@10-10-127-11 ~]# mysql -e 'use db_bbs;show tables;'|sed ’1d’|wc -l392.2、模擬刪除ibdata故障:

刪除ibdata文件(生產環境禁止這么干)

innodb_force_recovery =6 利用MySQL的強制啟動參數來啟動此時的MySQL服務,但是已經是無濟于事。由于是數據表空間文件ibdata文件被刪除了.所以啟動不了此時的MySQL服務。由于此MySQL采用的innodb引擎。而且開啟了獨立表空間參數 innodb_file_per_table = 1 。所以此時可以采用采用傳輸表空間的方式把數據救回來。

2.3、找回數據的辦法:

首先來創建已經丟失的表結構:

先要在故障的MySQL服務器上 安裝 mysql-utilities。

yum -y install mysql-utilities

使用 mysqlfrm 從 .frm 文件里面找回建表語句:

分析一個 .frm 文件生成建表的語句

mysqlfrm --diagnostic [root@test02 db_bbs]# mysqlfrm --diagnostic /data/mysql/data/db_bbs/t_admin.frm |grep -v '^#'CREATE TABLE `db_bbs`.`t_admin` ( `f_id` int(4) NOT NULL AUTO_INCREMENT, `f_type` tinyint(1) NOT NULL, `f_username` varchar(80) NOT NULL, `f_password` varchar(80) NOT NULL, `f_nick_name` varchar(80) NOT NULL, `f_real_name` varchar(80) NOT NULL, `f_create_time` bigint(4) NOT NULL, `f_update_time` bigint(4) NOT NULL, `f_last_login_time` bigint(4) DEFAULT NULL, `f_last_login_ip` varchar(80) DEFAULT NULL, `f_status` tinyint(1) NOT NULL, PRIMARY KEY `PRIMARY` (`f_id`) USING BTREE) ENGINE=InnoDB ROW_FORMAT = 2;

把全部的建表語句導入到/tmp/create.sql 文件:

[root@test02 ~]# cd /data/mysql/data/db_bbs/[root@test02 db_bbs]# for n in `ls -l /data/mysql/data/db_bbs/*.frm|awk -F ’/’ ’{print $NF}’|xargs -n 40`;do mysqlfrm --diagnostic $n|grep -v '^#' >>/tmp/create.sql;done

把生產的建表語句導入到新MySQL實例庫中:

[root@10-10-127-11 ~]# mysql db_bbs < create.sql ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’5’ at line 10

原因是獲取到的建表sql中包含了ROW_FORMAT = 2 這樣的參數導致的###去掉建表語句中的包含ROW_FORMAT = 2, ROW_FORMAT = 5這些字符.重新導入建表語句###

批量替換命令如下:

cat /tmp/create.sql|sed -e ’s/ENGINE=InnoDB ROW_FORMAT = 2;/ENGINE=InnoDB ;/g’|grep ROW_FORMAT |uniq -ccat /tmp/create.sql|sed -e ’s/ENGINE=InnoDB ROW_FORMAT = 5;/ENGINE=InnoDB ;/g’|grep ROW_FORMAT |uniq -csed -i ’s/ENGINE=InnoDB ROW_FORMAT = 2;/ENGINE=InnoDB ;/g’ /tmp/create.sqlsed -i ’s/ENGINE=InnoDB ROW_FORMAT = 5;/ENGINE=InnoDB ;/g’ /tmp/create.sqlcat /tmp/create.sql|grep ROW_FORMAT |uniq -c

導出建表語句到新MySQL實例db_bbs庫報錯字段太長:

[root@10-10-127-11 ~]# mysql db_bbs -f < create.sql ERROR 1074 (42000) at line 232: Column length too big for column ’f_content’ (max = 16383); use BLOB or TEXT insteadERROR 1074 (42000) at line 299: Column length too big for column ’f_desc’ (max = 16383); use BLOB or TEXT insteadERROR 1074 (42000) at line 365: Column length too big for column ’f_body_image’ (max = 16383); use BLOB or TEXT insteadERROR 1074 (42000) at line 406: Column length too big for column ’f_content’ (max = 16383); use BLOB or TEXT insteadERROR 1074 (42000) at line 433: Column length too big for column ’f_summary’ (max = 16383); use BLOB or TEXT instead

修改完字段長度類型,重新導入建表sql到全新的MySQL庫中

[root@10-10-127-11 ~]# mysql db_bbs -f < create.sql [root@10-10-127-11 ~]# [root@10-10-127-11 ~]# [root@10-10-127-11 ~]# mysql -e 'use db_bbs;show tables;'|sed ’1d’|wc -l39

###將新建的MySQL實例的 沒有包括數據的 .ibd 文件拋棄掉,然后再導入故障數據庫的.idb文件###

拋棄掉新建庫的數據.ibd文件:

mysql -e 'show tables from db_bbs' | grep -v Tables_in_db_bbs| while read a; do mysql -e 'ALTER TABLE db_bbs.$a DISCARD TABLESPACE' ;done

[root@10-10-127-11 db_bbs]# ll *.ibd|wc -l39[root@10-10-127-11 db_bbs]# mysql -e 'show tables from db_bbs' | grep -v Tables_in_db_bbs| while read a; do mysql -e 'ALTER TABLE db_bbs.$a DISCARD TABLESPACE' ;done[root@10-10-127-11 db_bbs]# ll *.ibd|wc -lls: cannot access *.ibd: No such file or directory

*可以看到所有的 .idb 文件都已經被拋棄了。然后把舊的有數據的 .ibd 文件拷貝到這個新MySQL實例的 ./data/db_bbs/ 目錄下面,別忘了把屬主改過來:chown mysql. ,再把這些數據文件 import 到數據庫中**。

[root@test02 db_bbs]# scp *.ibd root@10.10.127.11:/data/mysql/data/db_bbs/root@10.10.127.11’s password: browse_record.ibd100% 100MB 50.0MB/s 00:02 t_admin.ibd ................

[root@10-10-127-11 db_bbs]# ll *.ibd|wc -l39[root@10-10-127-11 db_bbs]# ll *.ibd-rw-r----- 1 root root 104857600 Mar 14 21:56 browse_record.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_admin.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_anonymous_code.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_apply.ibd-rw-r----- 1 root root 9437184 Mar 14 21:56 t_attach.ibd-rw-r----- 1 root root 147456 Mar 14 21:56 t_banner.ibd-rw-r----- 1 root root 163840 Mar 14 21:56 t_banner_log.ibd-rw-r----- 1 root root 114688 Mar 14 21:56 t_black_ip.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_black_user.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_block_userbaseinfo.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_collect.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_country_code.ibd-rw-r----- 1 root root 163840 Mar 14 21:56 t_ct_goods.ibd-rw-r----- 1 root root 131072 Mar 14 21:56 t_ct_goods_record.ibd-rw-r----- 1 root root 9437184 Mar 14 21:56 t_ct_integral.ibd-rw-r----- 1 root root 46137344 Mar 14 21:56 t_ct_integral_record.ibd-rw-r----- 1 root root 27262976 Mar 14 21:56 t_ct_news.ibd-rw-r----- 1 root root 9437184 Mar 14 21:56 t_ct_order.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_feedback.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_lexicon.ibd-rw-r----- 1 root root 327680 Mar 14 21:56 t_logs.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_manage.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_module.ibd-rw-r----- 1 root root 9437184 Mar 14 21:56 t_post_extend.ibd-rw-r----- 1 root root 12582912 Mar 14 21:56 t_post.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_post_video.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_realtime_message.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_recommend.ibd-rw-r----- 1 root root 46137344 Mar 14 21:56 t_reply.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_reward.ibd-rw-r----- 1 root root 196608 Mar 14 21:56 t_sensitive_word.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_system_message.ibd-rw-r----- 1 root root 9437184 Mar 14 21:56 t_userbaseinfo.ibd-rw-r----- 1 root root 344064 Mar 14 21:56 t_userextendinfo.ibd-rw-r----- 1 root root 12582912 Mar 14 21:56 t_user_health.ibd-rw-r----- 1 root root 98304 Mar 14 21:56 t_user_message.ibd-rw-r----- 1 root root 442368 Mar 14 21:56 t_user_read_module_log.ibd-rw-r----- 1 root root 17825792 Mar 14 21:56 t_viewpoint.ibd-rw-r----- 1 root root 114688 Mar 14 21:56 t_white_ip.ibd[root@10-10-127-11 db_bbs]# chown mysql.mysql *.ibdmysql -e 'show tables from db_bbs' | grep -v Tables_in_db_bbs| while read a; do mysql -e 'ALTER TABLE db_bbs.$a import TABLESPACE' ;done

導入每個表的表空間時,出現個別表報錯:

[root@10-10-127-11 db_bbs]# mysql -e 'show tables from db_bbs' | grep -v Tables_in_db_bbs| while read a; do mysql -e 'ALTER TABLE db_bbs.$a import TABLESPACE' ;done ERROR 1808 (HY000) at line 1: Schema mismatch (Table has ROW_TYPE_DYNAMIC row format, .ibd file has ROW_TYPE_COMPACT row format.)

校驗表文件,發現只有browse_record表導入獨立表表空間時報錯導致此表恢復數據失敗

[root@10-10-127-11 db_bbs]# mysqlcheck -c db_bbsdb_bbs.browse_recordWarning : InnoDB: Tablespace has been discarded for table ’browse_record’Error : Tablespace has been discarded for table ’browse_record’error : Corruptdb_bbs.t_admin OKdb_bbs.t_anonymous_code OKdb_bbs.t_apply OKdb_bbs.t_attach OKdb_bbs.t_banner OKdb_bbs.t_banner_logOKdb_bbs.t_black_ip OKdb_bbs.t_black_userOKdb_bbs.t_block_userbaseinfo OKdb_bbs.t_collect OKdb_bbs.t_country_code OKdb_bbs.t_ct_goods OKdb_bbs.t_ct_goods_record OKdb_bbs.t_ct_integralOKdb_bbs.t_ct_integral_record OKdb_bbs.t_ct_news OKdb_bbs.t_ct_order OKdb_bbs.t_feedback OKdb_bbs.t_lexicon OKdb_bbs.t_logs OKdb_bbs.t_manage OKdb_bbs.t_module OKdb_bbs.t_post OKdb_bbs.t_post_extendOKdb_bbs.t_post_videoOKdb_bbs.t_realtime_message OKdb_bbs.t_recommend OKdb_bbs.t_reply OKdb_bbs.t_reward OKdb_bbs.t_sensitive_word OKdb_bbs.t_system_message OKdb_bbs.t_user_healthOKdb_bbs.t_user_message OKdb_bbs.t_user_read_module_log OKdb_bbs.t_userbaseinfo OKdb_bbs.t_userextendinfo OKdb_bbs.t_viewpoint OKdb_bbs.t_white_ip OK

上面的browse_record 表恢復失敗 報錯解決辦法如下:

參考:https://blog.csdn.net/weixin_30607659/article/details/94987901

刪除導入到新MySQL實例的表browse_record,然后執行下面的建表語句,新建browse_record表:

CREATE TABLE `browse_record` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT, `post_id` int(4) unsigned NOT NULL, `user_id` int(4) unsigned NOT NULL, `status` tinyint(1) unsigned NOT NULL, `update_time` bigint(4) unsigned NOT NULL, `create_time` bigint(4) unsigned NOT NULL, PRIMARY KEY (`id`) USING BTREE, KEY `browse` (`post_id`,`user_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 row_format=compact;

提示:如果在新MySQL實例單獨刪除表browse_record,刪除失敗的話,那就直接drop掉新MySQL實例上的db_bbs庫,重新導入db_bbs所有表的建表語句,然后再執行下面的命令:

mysql -e 'show tables from db_bbs' | grep -v Tables_in_db_bbs| while read a; do mysql -e 'ALTER TABLE db_bbs.$a DISCARD TABLESPACE' ;done

重新導入表空間到新實例MySQL中:

[root@10-10-127-11 db_bbs]# mysql -e 'show tables from db_bbs' | grep -v Tables_in_db_bbs| while read a; do mysql -e 'ALTER TABLE db_bbs.$a import TABLESPACE' ;done[root@10-10-127-11 db_bbs]#

到此處數據修復完成

校驗MySQL db_bbs庫中的表:

[root@10-10-127-11 db_bbs]# mysqlcheck -c db_bbsdb_bbs.browse_recordOKdb_bbs.t_admin OKdb_bbs.t_anonymous_code OKdb_bbs.t_apply OKdb_bbs.t_attach OKdb_bbs.t_banner OKdb_bbs.t_banner_logOKdb_bbs.t_black_ip OKdb_bbs.t_black_userOKdb_bbs.t_block_userbaseinfo OKdb_bbs.t_collect OKdb_bbs.t_country_code OKdb_bbs.t_ct_goods OKdb_bbs.t_ct_goods_record OKdb_bbs.t_ct_integralOKdb_bbs.t_ct_integral_record OKdb_bbs.t_ct_news OKdb_bbs.t_ct_order OKdb_bbs.t_feedback OKdb_bbs.t_lexicon OKdb_bbs.t_logs OKdb_bbs.t_manage OKdb_bbs.t_module OKdb_bbs.t_post OKdb_bbs.t_post_extendOKdb_bbs.t_post_videoOKdb_bbs.t_realtime_message OKdb_bbs.t_recommend OKdb_bbs.t_reply OKdb_bbs.t_reward OKdb_bbs.t_sensitive_word OKdb_bbs.t_system_message OKdb_bbs.t_user_healthOKdb_bbs.t_user_message OKdb_bbs.t_user_read_module_log OKdb_bbs.t_userbaseinfo OKdb_bbs.t_userextendinfo OKdb_bbs.t_viewpoint OKdb_bbs.t_white_ip OK2.4、獲取導入到新MySQL實例db_bbs庫中表記錄和和原來的庫test.txt表記錄文件對比

[root@10-10-127-11 ~]# for n in `mysql -e 'use db_bbs;show tables;'|sed ’1d’`;do echo $n; mysql -e 'use db_bbs;select count(*) from $n;';done >test.txt11

和原來的庫test.txt表記錄文件對比。

[root@test02 ~]# vimdiff test.txt11 test.txt

表記錄完全一致到此處MySQL的數據修復完畢

參考資料:https://mp.weixin.qq.com/s/r3KTPsFay292JnO0lgTLUghttps://www.cnblogs.com/jiangxu67/p/4744283.htmlhttps://blog.csdn.net/Sonny_alice/article/details/80198200https://www.cnblogs.com/jiangxu67/p/4744283.html

到此這篇關于mysql5.7.33誤刪除ibdata文件找回數據的方法的文章就介紹到這了,更多相關mysql誤刪ibdata內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99国产精品| 欧美偷窥清纯综合图区| 免费的成人av| 亚洲二区免费| 日韩欧美字幕| 日韩.com| 国产亚洲精品精品国产亚洲综合| 国产一区日韩一区| 香蕉久久精品| 久久婷婷一区| 亚洲国产成人二区| 91欧美日韩在线| 日韩精品视频中文字幕| 亚洲精品伦理| 日韩一二三区在线观看| 一区二区国产在线| 亚洲综合小说| 日本一区二区三区视频在线看| 亚洲一区成人| 亚洲男女自偷自拍| 天堂成人免费av电影一区| 久久精品国产99久久| 日韩电影在线视频| 久久精品国产大片免费观看| 久久蜜桃av| 亚洲精品在线观看91| 欧美日韩国产高清| 少妇久久久久| 播放一区二区| 91精品二区| 亚洲图片久久| 国产免费av一区二区三区| 麻豆一区二区在线| 日本一区二区免费高清| 91精品国产调教在线观看| 激情综合亚洲| 欧美精品自拍| 激情综合网站| 91高清一区| 日韩免费小视频| 精精国产xxxx视频在线野外 | 亚洲另类av| 国产精品亚洲四区在线观看| 国内精品麻豆美女在线播放视频| 国产综合色区在线观看| 在线视频精品| 国产图片一区| 日韩精品影视| 日本亚州欧洲精品不卡| 欧美1区2区3| 久久69成人| 亚洲韩日在线| 伊人精品一区| 亚洲欧美视频一区二区三区| 日本午夜精品一区二区三区电影 | 日韩精品免费一区二区三区| 国产精品人人爽人人做我的可爱| 亚洲毛片一区| 91欧美在线| 蜜桃久久av一区| 国内精品亚洲| 亚洲不卡av不卡一区二区| 一区二区三区午夜视频| 久久久久久久久成人| 欧美在线观看视频一区| 日韩福利视频导航| 久久精品卡一| 色8久久久久| 亚洲精品极品| 成人国产精品| 国产亚洲毛片| 精品免费av| 免费日韩一区二区| 久久精品国产999大香线蕉| 婷婷综合社区| 国内不卡的一区二区三区中文字幕| 波多视频一区| 久久国产麻豆精品| 亚洲激情av| 成人午夜在线| 日韩av一区二区三区四区| 日韩欧美少妇| 欧美三级第一页| 日韩成人高清| 欧美三区不卡| 久久亚洲一区| 92国产精品| 欧美片第1页综合| 99国产成+人+综合+亚洲欧美| 久久不卡日韩美女| 蘑菇福利视频一区播放| 国产成人免费| 欧美一区91| 国产亚洲一级| 欧美午夜精彩| 国产精品久久观看| 国产欧美高清| 亚洲精品欧美| 久久久久国产精品一区二区| 久久精品 人人爱| 欧美~级网站不卡| 福利欧美精品在线| 国产精品99精品一区二区三区∴| 一本综合精品| 在线亚洲激情| 激情五月综合网| 国产精品久久久久久久久久10秀 | 99在线观看免费视频精品观看| 精品视频国内| 国产精品三上| 在线综合欧美| 99久久精品网| 日韩中文影院| 日本免费久久| 久久久久久久欧美精品| 色偷偷色偷偷色偷偷在线视频| 卡一卡二国产精品| 国产精品亲子伦av一区二区三区| 日韩av资源网| 日韩中文字幕无砖| 亚洲字幕久久| 婷婷视频一区二区三区| 精品在线91| 激情婷婷综合| 亚洲资源av| 亚洲精品亚洲人成在线观看| 视频在线观看一区| 中文一区一区三区免费在线观 | 亚洲黄色中文字幕| 麻豆精品在线播放| 精品一区二区男人吃奶| 精品一区视频| 欧美激情另类| 久久久人人人| 黄色日韩在线| 欧美va天堂在线| 六月婷婷一区| 一区二区三区国产在线| 日韩激情一区二区| 国产伦精品一区二区三区在线播放| 99视频精品| 亚洲精品四区| 久久亚洲国产| 久久午夜影视| 欧美日韩一区自拍| 久久精品免视看国产成人| 91欧美在线| 奶水喷射视频一区| 久久亚洲人体| 水蜜桃久久夜色精品一区的特点| 免费在线日韩av| 国产精品毛片在线看| 九九99久久精品在免费线bt| 中文一区在线| 91亚洲一区| 亚洲综合色婷婷在线观看| 国产成人精品亚洲线观看| 亚洲免费一区三区| 亚洲国产成人精品女人| 精品久久91| 日本a级不卡| 伊人精品视频| 国产不卡人人| 国产精品久一| 色8久久久久| 91久久午夜| 亚洲综合电影| 国产精品一区二区精品视频观看| 不卡中文字幕| 97精品97| 欧美一区自拍| 日韩在线卡一卡二| 欧美亚洲精品在线| 国产一区二区三区日韩精品 | 日韩av在线播放网址| 视频一区二区不卡| 欧美日韩一二| 日韩在线高清| 黄色网一区二区| 欧美一区自拍| 婷婷综合成人| 国产手机视频一区二区| 久久精品国产亚洲夜色av网站| 久久av超碰| 91亚洲精品在看在线观看高清| 日韩一区精品视频| 女人av一区| 久久精品国产大片免费观看| 国产精品99一区二区三区| 国产伦乱精品| 久久国内精品| 日韩不卡在线观看日韩不卡视频| 亚洲一区日本| av不卡免费看| 日韩视频久久| 午夜久久一区| 亚洲深夜影院| 快she精品国产999| 99国产精品私拍| 国产精品女主播一区二区三区|