日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
如何恢復(fù)誤刪的數(shù)據(jù)庫(kù)表格數(shù)據(jù)?(刪除數(shù)據(jù)庫(kù)中的個(gè)表格數(shù)據(jù)恢復(fù))

隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,數(shù)據(jù)庫(kù)成為了各種應(yīng)用軟件不可或缺的一部分。在日常工作中,不可避免地會(huì)出現(xiàn)誤刪數(shù)據(jù)庫(kù)表格數(shù)據(jù)的情況,這不僅會(huì)給工作帶來(lái)困擾,還可能導(dǎo)致嚴(yán)重的后果。因此,對(duì)于如何恢復(fù)誤刪的數(shù)據(jù)庫(kù)表格數(shù)據(jù),我們需要有清晰的認(rèn)識(shí)和詳細(xì)的操作方法。

創(chuàng)新互聯(lián)建站于2013年成立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元永和做網(wǎng)站,已為上家服務(wù),為永和各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18980820575

一、誤刪原因分析

在談?wù)撊绾位謴?fù)誤刪的數(shù)據(jù)庫(kù)表格數(shù)據(jù)之前,我們需要首先分析誤刪的原因。誤刪可能是由于人員操作不當(dāng),系統(tǒng)故障,病毒攻擊等原因?qū)е碌摹R虼?,在平時(shí)的工作中,員工需要遵守相關(guān)規(guī)定,加強(qiáng)系統(tǒng)維護(hù),防范病毒攻擊和網(wǎng)絡(luò)安全問(wèn)題,以更大程度降低誤刪的發(fā)生概率。

二、備份策略

備份是避免誤刪的重要措施。在進(jìn)行數(shù)據(jù)庫(kù)備份時(shí),需要注意以下幾點(diǎn):

1.備份頻率要合理。備份頻率要根據(jù)數(shù)據(jù)量的大小、使用頻率以及備份設(shè)備的硬件容量等因素來(lái)確定,一般備份周期為每天一次或每周一次。

2.備份設(shè)置要合理。備份方式可以是全備份或增量備份,不同備份方式的設(shè)置要根據(jù)實(shí)際需求進(jìn)行選擇。

3.備份存放要安全。備份文件的存放要加密、離線(xiàn)保管,并且備份文件要定期更新,以保障備份數(shù)據(jù)的完整性和準(zhǔn)確性。

三、恢復(fù)誤刪數(shù)據(jù)方法:

1.通過(guò)日志文件進(jìn)行恢復(fù)。在數(shù)據(jù)庫(kù)進(jìn)行更新或刪除操作時(shí),系統(tǒng)會(huì)自動(dòng)生成日志文件,這個(gè)文件存儲(chǔ)了所有數(shù)據(jù)庫(kù)操作的信息,包括刪除的記錄,因此可以通過(guò)檢索日志文件進(jìn)行誤刪數(shù)據(jù)的恢復(fù)。

2.通過(guò)第三方軟件進(jìn)行恢復(fù)。市面上有許多可以恢復(fù)誤刪數(shù)據(jù)的軟件,例如Recuva,Wondershare Data Recovery等。通過(guò)這些軟件可以很方便地恢復(fù)誤刪數(shù)據(jù)。

3.通過(guò)數(shù)據(jù)庫(kù)備份文件進(jìn)行恢復(fù)。在備份文件中可以找回誤刪的數(shù)據(jù),但是需要注意備份的時(shí)點(diǎn),如果誤刪時(shí)間到備份時(shí)間出現(xiàn)了大的數(shù)據(jù)變化,恢復(fù)時(shí)會(huì)造成數(shù)據(jù)的不一致性。

四、數(shù)據(jù)恢復(fù)的注意事項(xiàng)

1.恢復(fù)時(shí)必須保證原始數(shù)據(jù)庫(kù)完整性?;謴?fù)誤刪數(shù)據(jù)時(shí)要格外注意,如果恢復(fù)過(guò)程中出現(xiàn)了操作錯(cuò)誤,可能導(dǎo)致原始數(shù)據(jù)的破壞甚至喪失。

2.恢復(fù)數(shù)據(jù)要進(jìn)行測(cè)試?;謴?fù)數(shù)據(jù)后,需要進(jìn)行數(shù)據(jù)測(cè)試和驗(yàn)證,以確認(rèn)恢復(fù)數(shù)據(jù)的準(zhǔn)確性和完整性。

3.恢復(fù)數(shù)據(jù)后要進(jìn)行數(shù)據(jù)歸檔?;謴?fù)數(shù)據(jù)后,需要及時(shí)進(jìn)行歸檔,以免誤刪重復(fù)發(fā)生。

對(duì)于誤刪數(shù)據(jù)庫(kù)表格數(shù)據(jù)的恢復(fù),應(yīng)該在數(shù)據(jù)備份等預(yù)防措施的基礎(chǔ)上,注意恢復(fù)方法的選擇和注意事項(xiàng)的遵守,以保證恢復(fù)數(shù)據(jù)的準(zhǔn)確性和完整性。在平時(shí)的工作中,更應(yīng)該遵守?cái)?shù)據(jù)操作規(guī)范,加強(qiáng)系統(tǒng)的維護(hù)和安全性,以避免誤刪等不良后果的發(fā)生。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線(xiàn):028-86922220

如何恢復(fù)數(shù)據(jù)庫(kù)表刪除數(shù)據(jù) mysql

每個(gè) DBA 是不是都有過(guò)刪庫(kù)的經(jīng)歷?刪庫(kù)了沒(méi)有備份怎散高么辦?備份恢復(fù)后無(wú)法啟動(dòng)服務(wù)什么情況?表定義損壞數(shù)據(jù)無(wú)法讀取怎么辦?

我曾遇到某初創(chuàng)互聯(lián)網(wǎng)企業(yè),因維護(hù)人員不規(guī)范的備份恢復(fù)操作,導(dǎo)致系統(tǒng)表空間文件被初始化,上萬(wàn)張表無(wú)法讀取,花了數(shù)小時(shí)才搶救回來(lái)。

當(dāng)你發(fā)現(xiàn)數(shù)據(jù)無(wú)法讀取時(shí),也許并非數(shù)據(jù)丟失了,可能是 DBMS 找不到描述數(shù)據(jù)的信息。

背景

先來(lái)了解下幾張關(guān)鍵的 InnoDB 數(shù)據(jù)字典表,衫基它們保存了部分表定義信息,在我們恢復(fù)表結(jié)構(gòu)時(shí)需要用到。

SYS_TABLES 描述 InnoDB 表信息CREATE TABLE `SYS_TABLES` (`NAME` varchar(255) NOT NULL DEFAULT ”,  表名`ID` bigint(20) unsigned NOT NULL DEFAULT ‘0’,  表id`N_COLS` int(10) DEFAULT NULL,`TYPE` int(10) unsigned DEFAULT NULL,`MIX_ID` bigint(20) unsigned DEFAULT NULL,`MIX_LEN` int(10) unsigned DEFAULT NULL,`CLUSTER_NAME` varchar(255) DEFAULT NULL,`SPACE` int(10) unsigned DEFAULT NULL,   表空間idPRIMARY KEY (`NAME`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_INDEXES 描述 InnoDB 索引信息CREATE TABLE `SYS_INDEXES` (  `TABLE_ID` bigint(20) unsigned NOT NULL DEFAULT ‘0’, 與sys_tables的id對(duì)應(yīng)  `ID` bigint(20) unsigned NOT NULL DEFAULT ‘0’,  索引id  `NAME` varchar(120) DEFAULT NULL,索引名稱(chēng)  `N_FIELDS` int(10) unsigned DEFAULT NULL, 索引包含字段的個(gè)數(shù)  `TYPE` int(10) unsigned DEFAULT NULL,  `SPACE` int(10) unsigned DEFAULT NULL,  存儲(chǔ)索引的表空間id  `PAGE_NO` int(10) unsigned DEFAULT NULL,  索引的root page id  PRIMARY KEY (`TABLE_ID`,`ID`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_COLUMNS 描述 InnoDB 表沖塌尺的字段信息CREATE TABLE `SYS_COLUMNS` (  `TABLE_ID` bigint(20) unsigned NOT NULL, 與sys_tables的id對(duì)應(yīng)  `POS` int(10) unsigned NOT NULL,     字段相對(duì)位置  `NAME` varchar(255) DEFAULT NULL,    字段名稱(chēng)  `MTYPE` int(10) unsigned DEFAULT NULL,  字段編碼  `PRTYPE` int(10) unsigned DEFAULT NULL, 字段校驗(yàn)類(lèi)型  `LEN` int(10) unsigned DEFAULT NULL,  字段字節(jié)長(zhǎng)度  `PREC` int(10) unsigned DEFAULT NULL, 字段精度  PRIMARY KEY (`TABLE_ID`,`POS`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_FIELDS 描述全部索引的字段列CREATE TABLE `SYS_FIELDS` (  `INDEX_ID` bigint(20) unsigned NOT NULL,  `POS` int(10) unsigned NOT NULL,  `COL_NAME` varchar(255) DEFAULT NULL,  PRIMARY KEY (`INDEX_ID`,`POS`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;./storage/innobase/include/dict0boot.h 文件定義了每個(gè)字典表的 index id,對(duì)應(yīng) id 的 page 中存儲(chǔ)著字典表的數(shù)據(jù)。

這里我們需要借助 undrop-for-innodb 工具恢復(fù)數(shù)據(jù),它能讀取表空間信息得到 page,將數(shù)據(jù)從 page 中提取出來(lái)。

# wget yum install -y gcc flex bison# make# make sys_parser

# ./sys_parser 讀取表結(jié)構(gòu)信息

sys_parser databases/table

stream_parser 讀取 InnoDB page 從 ibdata1 或 ibd 或分區(qū)表

# ./stream_parserYou must specify file with -f optionUsage: ./stream_parser -f  Where:    -hPrint this help    -V or -g   – Print debug information    -s size    – Amount of memory used for disk cache (allowed examples 1G 10M). Default 100M    -Tretrieves only pages with index id = NM (N – high word, M – low word of id)    -t size    – Size of InnoDB tablespace to scan. Use it only if the parser can’t determine it by himself.

c_parser 從 innodb page 中讀取記錄保存到文件

# ./c_parserError: Usage: ./c_parser -4|-5|-6 -f -t table.sql  Where    -f — InnoDB page or directory with pages(all pages should have same index_id)    -t — CREATE statement of a table    -o — Save dump in this file. Otherwise print to stdout    -l — Save SQL statements in this file. Otherwise print to stderr    -h  — Print this help    -d  — Process only those pages which potentially could have deleted records (default = NO)    -D  — Recover deleted rows only (default = NO)    -U  — Recover UNdeleted rows only (default = YES)    -V  — Verbose mode (lots of debug information)innodb_datafile is in REDUNDANT formatinnodb_datafile is in COMPACT formatinnodb_datafile is in MySQL 5.6 format    -T  — retrieves only pages with index id = NM (N – high word, M – low word of id)    -b — Directory where external pages can be found. Usually it is pages-XXX/FIL_PAGE_TYPE_BLOB/    -i — Read external pages at their offsets from .    -p prefix — Use prefix for a directory name in LOAD DATA INFILE command

接下來(lái),我們演示場(chǎng)景的幾種數(shù)據(jù)恢復(fù)場(chǎng)景。

場(chǎng)景1:drop table

是否啟用了 innodb_file_per_table 其恢復(fù)方法有所差異,當(dāng)發(fā)生誤刪表時(shí),應(yīng)盡快停止MySQL服務(wù),不要啟動(dòng)。若 innodb_file_per_table=ON,更好只讀方式重新掛載文件系統(tǒng),防止其他進(jìn)程寫(xiě)入數(shù)據(jù)覆蓋之前塊設(shè)備的數(shù)據(jù)。

如果評(píng)估記錄是否被覆蓋,可以表中某些記錄的作為關(guān)鍵字看是否能從 ibdata1 中篩選出。

# grep WOODYHOFFMAN ibdata1

Binary file ibdata1 matches

也可以使用 bvi(適用于較小文件)或 hexdump -C(適用于較大文件)工具

以表 sakila.actor 為例CREATE TABLE `actor` (`actor_id` allint(5) unsigned NOT NULL AUTO_INCREMENT,`first_name` varchar(45) NOT NULL,`last_name` varchar(45) NOT NULL,`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`actor_id`),KEY `idx_actor_last_name` (`last_name`)) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8

首先恢復(fù)表結(jié)構(gòu)信息1. 解析系統(tǒng)表空間獲取 page 信息

./stream_parser -f /var/lib/mysql/ibdata1

2. 新建一個(gè) schema,把系統(tǒng)字典表的 DDL 導(dǎo)入

cat dictionary/SYS_* | mysql recovered

3. 創(chuàng)建恢復(fù)目錄

mkdir -p dumps/default

4. 解析系統(tǒng)表空間包含的字典表信息,

./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/01.page -t dictionary/SYS_TABLES.sql > dumps/default/SYS_TABLES 2> dumps/default/SYS_TABLES.sql./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/02.page -t dictionary/SYS_COLUMNS.sql > dumps/default/SYS_COLUMNS 2> dumps/default/SYS_COLUMNS.sql./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/03.page -t dictionary/SYS_INDEXES.sql > dumps/default/SYS_INDEXES 2> dumps/default/SYS_INDEXES.sql./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/04.page -t dictionary/SYS_FIELDS.sql > dumps/default/SYS_FIELDS 2> dumps/default/SYS_FIELDS.sql

5. 導(dǎo)入恢復(fù)的數(shù)據(jù)字典

cat dumps/default/*.sql | mysql recovered

6. 讀取恢復(fù)后的表結(jié)構(gòu)信息

./sys_parser -pmsandbox -d recovered sakila/actor

由于 5.x 版本 innodb 引擎并非完整記錄表結(jié)構(gòu)信息,會(huì)丟失 AUTO_INCREMENT 屬性、二級(jí)索引和外鍵約束, DECIMAL 精度等信息。

若是 mysql 5.5 版本 frm 文件被從系統(tǒng)刪除,在原目錄下 touch 與原表名相同的 frm 文件,還能讀取表結(jié)構(gòu)信息和數(shù)據(jù)。若只有 frm 文件,想要獲得表結(jié)構(gòu)信息,可使用 mysqlfrm –diagnostic /path/to/xxx.frm,連接 mysql 會(huì)顯示字符集信息。

innodb_file_per_table=OFF

因?yàn)槭枪蚕肀砜臻g模式,數(shù)據(jù)頁(yè)都存儲(chǔ)在 ibdata1,可以從 ibdata1 文件中提取數(shù)據(jù)。

1. 獲取表的 table id,sys_table 存有表的 table id,sys_table 表 index id 是1,所以從01.page 獲取表 id./c_parser -4Df pages-ibdata1/FIL_PAGE_INDEX/01.page -t dictionary/SYS_TABLES.sql | grep sakila/actorB28  2AD4D  SYS_TABLES  “sakila/actor”  0   “”B28  2AD4D  SYS_TABLES  “sakila/actor”  0   “”  0

2. 利用 table id 獲取表的主鍵 id,sys_indexes 存有表索引信息,innodb 索引組織表,找到主鍵 id 即找到數(shù)據(jù),sys_indexes 的 index id 是3,所以從03.page 獲取主鍵 id

./c_parser -4Df pages-ibdata1/FIL_PAGE_INDEX/03.page -t dictionary/SYS_INDEXES.sql | grepBABCA  SYS_INDEXES”P(pán)RIMARY”BAC3C  SYS_INDEXES”idx_actor_last_name”BABCA  SYS_INDEXES”P(pán)RIMARY”BAC3C  SYS_INDEXES”idx_actor_last_name”

3. 知道了主鍵 id,就可以從對(duì)應(yīng) page 中提取表數(shù)據(jù),并生成 sql 文件。

./c_parser -4f pages-ibdata1/FIL_PAGE_INDEX/76.page -t sakila/actor.sql > dumps/default/actor 2> dumps/default/actor_load.sql

4. 最后導(dǎo)入恢復(fù)的數(shù)據(jù)

cat dumps/default/*.sql | mysql sakila

更多詳細(xì)情況點(diǎn)擊

網(wǎng)頁(yè)鏈接

請(qǐng)點(diǎn)擊輸入圖片描述

以下情況可以恢復(fù)數(shù)據(jù):

1 innodb引擎表開(kāi)啟了事務(wù),執(zhí)行dml語(yǔ)句,比如delete、update、insert之類(lèi),并且沒(méi)有提交即commit操作的話(huà),可以執(zhí)行rollback進(jìn)行回滾恢復(fù)。如果是ddl操作,如drop、create、alter之類(lèi)的操作時(shí)無(wú)效的

2 在進(jìn)行刪除操作之前有備份,比如mysqldump,物理備份數(shù)據(jù)文件之類(lèi)的操作,那么可以恢復(fù)到刪除前的數(shù)據(jù)

3 如果你的刪除操作是直接對(duì)data下的文件進(jìn)行刪除,注意,不是粉碎文件操作,那么你巧蘆可以嘗試用磁盤(pán)恢復(fù)軟件來(lái)找回被誤刪的數(shù)據(jù)文件;

如何恢復(fù)mysql數(shù)據(jù)庫(kù)中被刪除的表

1 找個(gè)別的機(jī)器安裝個(gè)同版本的mysql或從已安裝同版本的其他機(jī)器上(非同版本的也可以試下):

拷貝 mysql/data/mysql 目錄到你的mysql/data/ 下吧

2 試著啟動(dòng)mysql服務(wù),如果能啟動(dòng)了,理論上應(yīng)該丟失的只有用戶(hù)、授權(quán)等一些系統(tǒng)掘槐信息,不影響你的使用的數(shù)據(jù);

如果不能啟動(dòng),看錯(cuò)誤日志,爭(zhēng)取啟動(dòng)了。

3 趕緊把數(shù)據(jù)備份一份出來(lái),重新把判滲友所有喊兄庫(kù)(只是你后來(lái)創(chuàng)建的業(yè)務(wù)相關(guān)的庫(kù),不包括mysql庫(kù))都刪了,重新導(dǎo)入一遍。理論上不這樣也可以,但只是非生產(chǎn)重要的環(huán)境下。

4 重新做用戶(hù)授權(quán)。

關(guān)于刪除數(shù)據(jù)庫(kù)中的個(gè)表格數(shù)據(jù)恢復(fù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專(zhuān)業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開(kāi)發(fā),成都網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣等一站式服務(wù)。


網(wǎng)頁(yè)名稱(chēng):如何恢復(fù)誤刪的數(shù)據(jù)庫(kù)表格數(shù)據(jù)?(刪除數(shù)據(jù)庫(kù)中的個(gè)表格數(shù)據(jù)恢復(fù))
轉(zhuǎn)載來(lái)源:http://www.dlmjj.cn/article/dpieicc.html