前言
備份資料庫時,採用了全庫備份,但是因為某些原因需要回滾乙個表的資料到備份資料庫上,如果回滾整個庫就比較費時間,因為可能這個表只有幾十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...