备注:
MySQL 5.7.31
Table of Contents
一.问题描述
之前帮朋友搭建的MySQL数据库,说是有个表的数据被误删除了,现在需要进行恢复。
二. 解决方案
还好我之前给他安装MySQL数据库的时候,特意做了备份,每天凌晨都会把整库进行备份。
2.1 从整库备份中找到单表的备份文件
2.1.1 直接通过sed命令处理
在网上找到了这个命令,用起来还不错:
sed -n -e '/CREATE TABLE.*`my_table`/,/UNLOCK TABLES/p' mydump.sql >/tmp/my_table.sql
复制
不过有点慢,9GB左右文件 5分钟左右,结果文件500M左右
速度有点慢:
2.1.2 切分后通过grep来查找
下次尝试把大文件切分一下
按1000行一个文件进行切分,最好在后台运行
split -l 1000 mydump.sql &
切分后的文件如下:
[root@not1 tmp]# ls xaa xab xac xad xae xaf xag xah xai xaj xak xal xam xan xao xap xaq xar xas xat xau xav xaw xax xay xaz xba xbb
复制
写个shell脚本遍历:
#!/bin/bash
dir=/data/tmp
date
for file in $dir/*; do
cat $file | grep --ignore-case 'insert into `my_table`' >>/tmp/20211126.log
done
date
echo "================="
date
cat /data/dump.sql | grep --ignore-case 'insert into `my_table`' >>/tmp/20211126_2.log
date
~
复制
数据量不大,只有2G,12s优化到了8s,效果还算过得去
[root@node1 data]# sh 1.sh Fri Nov 26 17:40:38 CST 2021 Fri Nov 26 17:40:50 CST 2021 ================= Fri Nov 26 17:40:50 CST 2021 Fri Nov 26 17:41:02 CST 202
复制
2.2 恢复到一个新表
做恢复的时候,最好是恢复到一个新库下的新表,确认数据无误后再写回原表
mysql -uroot -p -hmy_host create database db_backup; use db_backup; source /tmp/my_table.sql
复制
追日志,确保无问题。
2.3 还原到源环境
因为备份表和目前系统的表 表结构不一致,所以处理起来会麻烦一些
目前系统的表比源表多一个col1字段。
-- 备份新表
create table my_new_table_bak like my_new_table;
-- 将新表多的字段给删除
alter table my_new_table drop column col1;
-- 从备份表同步数据
insert into my_new_table select * from db_backup.my_backup_table;
-- 将删除的列再添加回来
alter table my_new_table add column col1 varchar(255);
-- 清理备份表
drop table db_backup.my_backup_table;
复制
参考:
- https://cloud.tencent.com/developer/ask/28565
- https://www.cnblogs.com/mysql-dba/p/4958612.html
最后修改时间:2021-12-06 22:56:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2073次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
726次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
417次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
384次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
358次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
334次阅读
2025-04-07 12:14:29
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
229次阅读
2025-04-15 15:27:53
MySQL 8.4 新特性深度解析:功能增强、废弃项与移除项全指南
JiekeXu
176次阅读
2025-04-18 20:21:32
GreatSQL 新版发布:MySQL 牵手“鸭子”
严少安
138次阅读
2025-04-19 14:57:56
MySQL8.0窗口函数实验
一名数据库小白的成长笔记
107次阅读
2025-04-08 17:16:54