MySQL使用全庫備份資料恢復單錶資料的方法

2022-09-25 10:39:12 字數 2131 閱讀 5747

前言

備份資料庫時,採用了全庫備份,但是因為某些原因需要回滾乙個表的資料到備份資料庫上,如果回滾整個庫就比較費時間,因為可能這個表只有幾十m,但是其它表可能有十幾上百g,這時候就需要將需要恢復的表提取出來了

我們在實際工作中都遇到過這種情況,乙個mysql例項中可能有多個database。而我們備份時,通常採用完全備份,將所有database都備份到乙個檔案中。

但是,偶爾會遇到只恢復乙個database或者乙個表的情況。怎麼解決呢?

現在有備份庫fdcsqlmysql-2018_11_30-03_00_01.sql,裡面有多張表,現在需要恢復其中fdc_document這張表的資料

提取建表語句

sed -e '/./' -e 'x;/create table `表名`/!d;q' mysqldump.sql(備份檔案的檔名)

sed -e '/./' -e 'x;/create table `fdc_document`/!d;q' fdcsqlmysql-2018_11_30-03_00_01.sql

drop table if exists `fdc_document`;

/*!40101 set @s**ed_cs_client = @@character_set_client */;

/*!40101 set character_set_client = utf8 */;

create table `fdc_document` (

`id` int(10) unsigned not null auto_increment comment '文件iuoqfead',

`uid` int(10) unsigned not null default '0' comment '使用者id',

`name` char(40) not null default '' comment '標識',

......

...`entrust_rule` tinyint(3) unsigned not null default '0' comment ' 經紀人點選是否和使用者籤委託協議:1為有;0為沒有',

`audit` tinyint(3) not null default '0' comment '審核:0為未審核;1為已審核;2為描述已審核;3為和描述都已審核',

primary key (`id`),

key `id (`partition`,`category_id`,`statu 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 = @s**ed_cs_client */;

提取表資料

grep 'insert into表名' mysqldump.sql(備份檔案的檔名) > table_data.sql

這裡應該執行grep 'insert intofdc_document' fdcsqlmysql-2018_11_30-03_00_01.sql &g程式設計客棧t; document.sql

執行完後會得到檔案document.sql,這就是需要的單獨的表檔案,就可以正常恢復表資料了

建庫建表

先建立資料庫,再根據上面的sql語句建立表fdc_document

匯入表資料

mysql [document]> souce /data/bacuoqfeakup/mysql/document.sql

ok,完工!

總結本文標題: mysql使用全庫備份資料恢復單錶資料的方法

本文位址:

MySQL用全庫備份資料恢復單錶資料

備份資料庫時,採用了全庫備份,但是因為某些原因需要回滾乙個表的資料到備份資料庫上,如果回滾整個庫就比較費時間,因為可能這個表只有幾十m,但是其它表可能有十幾上百g,這時候就需要將需要恢復的表提取出來了 現在有備份庫fdcsqlmysql 2018 11 30 03 00 01.sql,裡面有多張表,...

mysql備份資料 mysql 備份資料

1 備份命令 格式 mysqldump h主機名 p埠 u使用者名稱 p密碼 dbname tbname 檔名.sql 如果tbname不填,就是單個資料據的所有表 例如 mysqldump h 192.168.1.100 p 3306 uroot ppassword database cmdb d...

阿里雲mysql備份資料恢復

操作只供參考,實際操作中可能出現不同的報錯或其它提示 wget 2 增加許可權 chmod x hins1540971 xtra 20160918230904.tar.gz 3 使用rds解壓指令碼,解壓rds備份檔案,如下 sh rds backup extract.sh f home hins1...