MySQL使用全庫(kù)備份數(shù)據(jù)恢復(fù)單表數(shù)據(jù)的方法
前言
備份數(shù)據(jù)庫(kù)時(shí),采用了全庫(kù)備份,但是因?yàn)槟承┰蛐枰貪L一個(gè)表的數(shù)據(jù)到備份數(shù)據(jù)庫(kù)上,如果回滾整個(gè)庫(kù)就比較費(fèi)時(shí)間,因?yàn)榭赡苓@個(gè)表只有幾十M,但是其它表可能有十幾上百G,這時(shí)候就需要將需要恢復(fù)的表提取出來(lái)了
我們?cè)趯?shí)際工作中都遇到過(guò)這種情況,一個(gè)MySQL實(shí)例中可能有多個(gè)database。而我們備份時(shí),通常采用完全備份,將所有database都備份到一個(gè)文件中。
但是,偶爾會(huì)遇到只恢復(fù)一個(gè)database或者一個(gè)表的情況。怎么解決呢?
現(xiàn)在有備份庫(kù)fdcsqlmysql-2018_11_30-03_00_01.sql,里面有多張表,現(xiàn)在需要恢復(fù)其中fdc_document這張表的數(shù)據(jù)
提取建表語(yǔ)句
sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `表名`/!d;q' mysqldump.sql(備份文件的文件名)
sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `fdc_document`/!d;q' fdcsqlmysql-2018_11_30-03_00_01.sql
DROP TABLE IF EXISTS `fdc_document`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `fdc_document` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '文檔ID',
`uid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '用戶ID',
`name` char(40) NOT NULL DEFAULT '' COMMENT '標(biāo)識(shí)',
...
...
...
`entrust_rule` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT ' 經(jīng)紀(jì)人點(diǎn)擊是否和用戶簽委托協(xié)議:1為有;0為沒(méi)有',
`audit` tinyint(3) NOT NULL DEFAULT '0' COMMENT '審核:0為未審核;1為圖片已審核;2為描述已審核;3為圖片和描述都已審核',
PRIMARY KEY (`id`),
KEY `idx_area_house` (`partition`,`category_id`,`status`,`is_off`) USING BTREE,
KEY `idx_model_house` (`model_id`,`status`,`is_off`) USING BTREE,
KEY `idx_community_house` (`community_id`,`estate`,`status`,`is_off`) USING BTREE,
KEY `idx_uid_house` (`uid`,`model_id`,`is_off`) USING BTREE,
KEY `idx_pid_house` (`id`,`pid`,`status`,`is_off`) USING BTREE,
KEY `is_video` (`is_video`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=211138 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
提取表數(shù)據(jù)
grep 'INSERT INTO表名' mysqldump.sql(備份文件的文件名) > table_data.sql
這里應(yīng)該執(zhí)行grep 'INSERT INTOfdc_document' fdcsqlmysql-2018_11_30-03_00_01.sql > document.sql
執(zhí)行完后會(huì)得到文件document.sql,這就是需要的單獨(dú)的表文件,就可以正常恢復(fù)表數(shù)據(jù)了
建庫(kù)建表
先創(chuàng)建數(shù)據(jù)庫(kù),再根據(jù)上面的SQL語(yǔ)句創(chuàng)建表fdc_document
導(dǎo)入表數(shù)據(jù)
MySQL [document]> souce /data/backup/mysql/document.sql
OK,完工!
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Mysql錯(cuò)誤Cannot find or open table x/x from the internal問(wèn)題解決方法
這篇文章主要介紹了Mysql錯(cuò)誤Cannot find or open table x/x from the internal問(wèn)題解決方法,需要的朋友可以參考下2014-06-06
mysql "too many connections" 錯(cuò)誤 之 mysql解決方法
解決方法是修改/etc/mysql/my.cnf,添加以下一行2009-06-06
MySQL 主從同步,事務(wù)回滾的實(shí)現(xiàn)原理
這篇文章主要介紹了MySQL 主從同步,事務(wù)回滾的實(shí)現(xiàn)原理,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下2020-12-12
MySQL服務(wù)器權(quán)限與對(duì)象權(quán)限詳解
這篇文章主要介紹了MySQL服務(wù)器權(quán)限與對(duì)象權(quán)限,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
MySQL存儲(chǔ)引擎中的MyISAM和InnoDB區(qū)別詳解
這篇文章主要介紹了MySQL存儲(chǔ)引擎中的MyISAM和InnoDB區(qū)別詳解,本文總結(jié)了MyISAM與InnoDB的11點(diǎn)區(qū)別,需要的朋友可以參考下2015-03-03
Starting MySQL.Manager of pid-file quit without updating fil
因?yàn)橛脖P滿了,Starting MySQL.Manager of pid-file quit without updating file.[FAILED]2010-02-02
MySQL AUTO_INCREMENT 主鍵自增長(zhǎng)的實(shí)現(xiàn)
本文主要介紹了MySQL AUTO_INCREMENT 主鍵自增長(zhǎng)的實(shí)現(xiàn),每增加一條記錄,主鍵會(huì)自動(dòng)以相同的步長(zhǎng)進(jìn)行增長(zhǎng),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11

