场景
我们经常会采用mysqldump的备份方式,对mysql数据库进行每日的全量备份。当业务出现单表被误删或者误更新的现象,恢复全量备份十分消耗时间,那我们如何通过mysqldump备份文件,进行单表恢复呢?
1、从全备备份片full.sql,挖出表名city的表结构,并输出到文件create.sql
# sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `city`/!d;q' full.sql > create.sql
2、从全备备份片full.sql,挖出所有insert语句,并输出到文件data.sql
# grep -i 'INSERT INTO `city`' full.sqll > data.sql
场景一:业务单表被删除
处理思路:在生产库中直接恢复
进入业务数据库中
mysql -uroot -p
use datadb;
建表
source /tmp/create.sql
重新插入数据
source /dmp/data.sql
恢复完成!
场景二:表内数据被大量误修改
处理思路:新建临时库,将新表恢复到临时库中
新建库
mysql -uroot -p
create database temp;
use temp;
新建表结构
source /tmp/create.sql
重新插入数据
source /dmp/data.sql
最后通过两表关联,将恢复出来的历史数据更新到当前业务表
恢复完成!