作者:杨小云

爱可生数据库工程师,负责 MySQL 日常维护及 DMP 产品支持。擅长mysql故障处理。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


场景:

客户误删了一张表,所以 想恢复某张表的数据,期望恢复到删除之前的数据。

前提:

数据库误删某表恢复方法,下面介绍的的方法是针对每天有备份的数据库和开启 binlog 日志的。

说明:本文中的测试库为 test 数据库,测试表是 test 中 student 表。

一、开启 binlog 日志,并备份数据

1.查看数据库是否开启binlog日志

如果没有开启,需要下面的方法进行开启

(1)在linux系统下,修改/etc/my.cnf文件

#编辑模式进入/etc/my.cnf
vi /etc/my.cnf
# i开始进行编辑
# 在#log bin 后面添加内容
server_id=2
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 30
log_bin_basename= /数据库实例安装目录/log/binlog/端口号/mysql-bin
log_bin_index=/数据库实例安装目录/log/binlog/端口号/mysql-bin.index
# esc 退出编辑,shift+:保存

(2)重启 mysql 服务

systemctl restart mysqld

到这里已经开启 binlog 了,可以用查看命令看一下是否开启

2. 查看一下数据表中的数据

3. 备份数据

备份命令格式:

mysqldump [选项] 数据库名 [表名] > 脚本名
mysqldump [选项] --数据库名 [选项 表名] > 脚本名
mysqldump [选项] --all-databases [选项] > 脚本名

(1)备份所有数据库

mysqldump -h10.186.63.4 -P4149 -uu1 -p1234567890q@ -all-databases > /test1.sql

(2)备份单库(多个库之间以空格间隔)

mysqldump -h10.186.63.4 -P4149 -uu1 -p1234567890q@ database > test2.sql

(3)备份单表(多个表以空格间隔)

mysqldump -h10.186.63.4 -P4149 -uu1 -p1234567890q@ database table  > test3.sql

(4)备份指定数据库排除某些表

mysqldump -h10.186.63.4 -P4149 -uu1 -p1234567890q@ database --ignore-table=db.tb --ignore-table=db.tb2 > /test4.sql

4. 插入数据后删除数据库

插入数据,生成 binlog 日志

mysql> insert into student values('201215130','张三','男',21,'IS');
Query OK, 1 row affected (0.03 sec)
mysql>  insert into student values('201215131','李四','女',20,'MA');
Query OK, 1 row affected (0.02 sec)

删除数据库

mysql> drop database test;
Query OK, 1 row affected (0.10 sec)

切记这个时候不要有任何的操作!!!

二、恢复数据

1. 查看当前的 binlog

mysql>  show master status\G;
************************ 1. row ***************************
File: mysql-bin.000021
Position: 68403303
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 130df5fa-01c1-11ed-916a-02000aba3f04:1-446151
1 row in set (0.00 sec)
ERROR:
No query specified
注:mysql-bin.000021文件将作为恢复删除数据的来源之一

2. 拷贝 binlog 日志

将当前的binlog日志拷贝到其他目录,以免后续操作对 binlog日志产生影响

cp  /test/data/mysql/log/binlog/4149/mysql-bin.000021  /root

3. 将转换 binlog 日志为 sql

命令格式为:mysqlbinlog -d database mysql-bin文件 > xx.sql
如:

/data/mysql/base/5.7.25/bin/mysqlbinlog -d test mysql-bin.000021 > 0021bin.sql
[root@test2 4149]# /data/mysql/base/5.7.25/bin/mysqlbinlog -d test mysql-bin.000022 > 0022.sql
WARNING: The option --database has been used. It may filter parts of transactions, but will include the GTIDs in any case. If you want to exclude or include transactions, you should use the options --exclude-gtids or --include-gtids, respectively, instead.

编辑转化后的sql文件

vi 0021bin.sql

将里面的误操作命令(DROP命令)全部删除

保存后开始进行恢复数据

4. 恢复备份文件

/data/mysql/base/5.7.25/bin/mysql -h10.186.63.4 -P4149 -uu1 -p1234567890q@  < test.sql

查看数据库备份文件是否恢复

mysql> show databases;
mysql> use test;
mysql> show tables;
mysql>select * from table;

5. 恢复备份之后被删除的数据

注释掉 binlog 转化后的 sql 文件中的这一行

SET @@GLOBAL.GTID_PURGED=
/*SET @@GLOBAL.GTID_PURGED=XXXX*/;

指定被删除表所在的数据库,导入数据

/data/mysql/base/5.7.25/bin/mysql -h10.186.63.4 -P4149 -uu1 -p1234567890q@  test  < 0021bin.sql

查看恢复后的数据


mysql> select * from test.student;
+-----------+-----------+------+------+-------+
| Sno       | Sname     | Ssex | Sage | Sdept |
+-----------+-----------+------+------+-------+
| 201215121 | 李勇      | 男   |   20 | CS    |
| 201215122 | 刘晨      | 女   |   19 | CS    |
| 201215123 | 王敏      | 女   |   18 | MA    |
| 201215125 | 张立      | 男   |   19 | IS    |
| 201215126 | 李一平    | 男   |   18 | IS    |
| 201215127 | 张琴      | 女   |   19 | CS    |
| 201215128 | 王方      | 女   |   20 | MA    |
| 201215129 | 黄林林    | 男   |   21 | IS    |
| 201215130 | 李四      | 女   |   20 | MA    |
| 201215131 | 张三      | 男   |   21 | IS    |
+-----------+-----------+------+------+-------+
10 rows in set (0.00 sec)

技术分享 | 误删表以及表中数据,该如何恢复?相关推荐

  1. 技术分享 | 咬文嚼字之驱动表 outer表

    作者:胡呈清 爱可生 DBA 团队成员,擅长故障分析.性能优化,个人博客:https://www.jianshu.com/u/a95ec11f67a8,欢迎讨论. 本文来源:原创投稿 *爱可生开源社区 ...

  2. wps数据匹配怎么做_【VK技术分享】数据安全怎么做—静态数据的识别和治理

    前言 在当前的数据时代,随着云计算.大数据.AI等技术的不断发展,"数据"已经渗透到当今每一个行业和业务职能领域,成为重要的生产要素.数据的计量单位也至少是PB级别计算.这对于国家 ...

  3. mysql数据库恢复数据_【技术分享】使用Innodb存储引擎的mysql数据库恢复

    作者:维一零 预估稿费:400RMB(不服你也来投稿啊!) 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 前言 某天,在测试一张新数据表的字段时,由于在phpmyadmin不断 ...

  4. 【华为云技术分享】直播回顾丨激发数据裂变新动能,HDC.Cloud云数据库前沿技术解读

    3月24日14:00-17:00,HDC.Cloud开发者沙龙系列云数据库专场直播线上开启,此次华为云数据库通过三场直播从NoSQL数据库新技术.数据库迁移.行业解决方案等方面对云端数据库进行深度解读 ...

  5. 【华为云技术分享】使用sqoop导入mysql数据到hive中

    Sqoop 是一个数据转储工具,它能够将 hadoop HDFS 中的数据转储到关系型数据库中,也能将关系型数据库中的数据转储到 HDFS 中. Apache Sqoop,是"SQL to ...

  6. 编程实现基于信息熵进行划分选择的决策树算法,并为表4.3中数据生成一棵决策树

    import numpy as np import pandas as pd from sklearn.utils.multiclass import type_of_target from deci ...

  7. python可以做计量分析吗_技术分享 - python数据分析(2)——数据特征分析(上)...

    1 分布分析 分布分析能揭示数据的分布特征和分布类型.对于定量数据,欲了解其分布形式是对称的还是非对称的,发现某些特大或特小的可疑值,可通过绘制频率分布表.绘制频率分布直方图.绘制茎叶图进行直观地分析 ...

  8. 【华为云技术分享】玩转云上数据湖,解析Serverless 技术落地

    摘要:本文主要介绍Serverless计算相关技术与其在华为云数据湖探索服务(后文简称DLI)中的技术落地. 导读 本文主要介绍Serverless计算相关技术与其在华为云数据湖探索服务(后文简称DL ...

  9. echart 实例显示位置_技术分享:如何在Unity中使用实例化渲染?

    编者按 在日常开发中,通常说到优化.提高帧率时,总是会提到批量渲染.之前简单总结了静态合批(点此查看全文)以及动态合批(点此查看全文),这次作者将和大家聊聊实例化渲染. 作者:枸杞忧天 (本文内容由公 ...

最新文章

  1. 简单扩展shiro 实现NOT、AND、OR权限验证(支持复杂一点的表达式)
  2. 申请补办 CET(纸笔考试)成绩证明的方法
  3. 数组去重(JavaScript)先从网上整理一波,待验证
  4. (转)Asp.net 中 Get和Post 的用法
  5. Java SE 8 docs:Static Methods、Instance Methods、Abstract Methods、Concrete Methods和Fields
  6. 【报错】解决logstash tracking_column not found in dataset. {:tracking_column=>“updated_time“}问题
  7. Android EditText 常用属性总结
  8. C#泛型中的抗变和协变
  9. 《机器人学导论》约翰 第二章
  10. 某宝在售资源合集,整整1218份!
  11. 精简版WIN XP安装日文输入法
  12. 安卓 视频直播二:推流端代码
  13. Python爬虫分析,全国结婚率连续5年下降,这届年轻人,为什么不敢结婚?
  14. Linux查询系统上次启动时间last reboot、上线时间uptime
  15. Eclipse开发环境搭建
  16. Java开发中OnlyOffice、OpenOffice和LibreOffice怎么选?
  17. 是否能够成为真正的编程高手,主要是在于是否有毅力坚持学习和练习。输出名言“贵有恒,何必三更起五更睡:最无益,只怕一日曝十日寒。”主要是想让读者激励自己,坚持学习C语言。
  18. laya龙骨换装_FairyGUI - 骨骼动画
  19. OSPF NBMA网络
  20. 最小费用最大流(详解+模板)

热门文章

  1. 如何领先 90% 的程序员?
  2. 传腾讯计划出售美团全部股权,知情人士辟谣;苹果证实iOS 16要大量推送广告;Linux 6.0-rc1 发布|极客头条
  3. 基于ASP.NET小微企业人力资源管理系统
  4. icoformat.8bi 64位插件_【茶末余香】这款PS真牛完整官方无精简超强插件集成
  5. 京东有多少钱可以重来?
  6. cesium绘制卫星
  7. Android 8.0 recovery 流程分析
  8. 微软发布免费的文件恢复工具Windows File Recovery
  9. 「图文」介绍下微信怎么拉票刷票及微信投票怎样自己拉票方法
  10. Linux下如何查看硬盘是固态硬盘SSD还是机械硬盘HDD