MySQL数据误删的恢复

问题背景

业务人员反应误操作不小心删除了部分表的业务数据,影响业务功能使用,要求尽快数据恢复。

数据库环境:

  • CentOS  7.3
  • MySQL   5.7.11

恢复准备

2.1 确认选择正确的备份文件

与业务确认涉及业务、数据库IP、数据误删除时间点、数据删除涉及的SCHEMA、数据表,确认该数据库为MySQLdump备份方式,备份策略为每日凌晨1点进行数据库全备份,备份保留3周,业务误删除数据时间点为当日9点左右,与开发、业务人员确认后选择当日1点备份下发至数据恢复环境准备恢复。

2.2 提取单库或单表恢复数据

该数据库因为是全备份,备份文件共有28G,文件较大,所以选择全库数据恢复显然较为耗时,所以选择虫全备文件中抓取出具体需要恢复的SCHEMA、数据表。

1)MySQLdump全备文件中提取单个SCHEMA

格式:

sed -n ‘/^--Current Database:`SCHEMA`’/,/^--Current Database:`/p’ 全备文件.sql > schema .sql

2)MySQLdump全备文件中提取单个表

格式:

--建表sql
sed -e ‘/./{H;$!d;}’ -e ‘x;/CREATE TABLE `表名`/!d;q’ 全备文件.sql > 新sql文件
--insertsql
grep -i ‘表名’ 全备文件.sql > 新sql文件

数据恢复

3.1 演练环境恢复数据

--建库
MySQL>create database schema;
--进入schema
MySQL>use schema;
--导入建表sql
MySQL>source 建表.sql;
--导入数据
MySQL>source insert.sql;

3.2 确认生产数据恢复

与业务沟通确认数据恢复要求,提供数据库演练环境,由业务方判断是全表恢复还是部分数据方式恢复。

总 结:

本方案介绍的是通过数据库备份的方式进行的数据恢复,当然,还可以通过binlog方式进行数据恢复。

posted on   阿陶学长  阅读(4)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示