暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何利用mysqldump全库备份文件恢复单表数据

热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者比较重要的内容,希望大家能够喜欢,不足之处请大家多宝贵地意见,我们一起提升,守住自己的饭碗。

正文开始

 

一、背景

今天有网友问我说怎么利用mysqldump文件去恢复MySQL单库或单表恢复,他的备份脚本是全库进行备份的,现在因为误删一个表的数据,但因为数据量大,全库恢复的话,时间比较长,问我有没有办法,当然这种情况下,有很多办法,今天只演示利用mysqldump备份文件去恢复单表数据。

二、恢复准备工作

(一)确认备份文件

备份脚本如下:

[root@postgresql ~]# mysqldump -uroot -p123456  -P3306 --source-data --single-transaction  --set-gtid-purged=OFF --all-databases >/opt/back/1.sql

(二)提取单库或单表数据

  1. 1. 提取单个database

[root@postgresql back]# sed -n '/^-- Current Database: `ceshi`/,/^-- Current Database: `/p' 1.sql > ceshi_backup.sql

注意:“ceshi”需替换为实际要恢复的数据库模式名称,“1.sql”为完整的备份文件名。
2. 提取单个表的数据
获取建表sql

[root@postgresql back]# sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `ceshi`/!d;q' 1.sql > b.sql

注意:“ceshi”需替换为实际要恢复的数据库单表。

[root@postgresql back]# grep -i 'ceshi' 1.sql | grep -v 'DROP' | grep -v 'CREATE' |grep -v 'LOCK' > bb.sql

注意:“ceshi”需替换为实际要恢复的数据库单表。

三、恢复验证

假设ceshi库已经被删除。

root@localhost:(none)>show databases;
root@localhost:(none)>drop database ceshi;
root@localhost:(none)>show databases;
root@localhost:(none)>create database ceshi;
root@localhost:(none)>use ceshi;
root@localhost:ceshi>source /opt/back/b.sql
root@localhost:ceshi>show tables;
root@localhost:ceshi>select count(1) from b;
root@localhost:ceshi>source /opt/back/bb.sql



参考链接:https://mp.weixin.qq.com/s/sq_767dA3v60xgf3I4qVew
其他数据恢复链接:
生产数据恢复系列之使用my2sql恢复MySQL8 误删数据
生产数据恢复系列之使用binlog日志恢复truncate/drop误删数据
生产数据恢复系列之-MySQL8使用delete误删数据恢复
生产数据恢复系列之-Oracle 11g使用drop误删数据表
生产数据恢复系列之-Oracle 11g使用delete误删数据

 


END
往期文章回顾

文中的概念来源于互联网,如有侵权,请联系我删除。

欢迎关注公众号:小周的数据库进阶之路,一起交流数据库、中间件和云计算等技术。如果觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!感兴趣的朋友可以加我微信,拉您进群与业界的大佬们一起交流学习。



文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论