关键误操作:mysql误删除

1、备份+binlog恢复数据

【1.1】场景:不小心误删除某张表

【1.2】解决方法:在另外一台机器,恢复全库+日志,然后导出删除的表,再插入会生产库。

【1.3】案例演示:

案例描述:test1数据库,test1表
  1点全备,3点更新,4点删表。如何恢复? 模拟案例步骤如下: (1)查看全备时的数据

    

(2)1点:进行全备

#切换到linux环境(mysqldump参考)

#备份所有数据库:mysqldump -F -R -uroot -p -A >/tmp/all_db.bak     # -F:刷新binlog日志,-R:存储过程及触发器。 -A:所有数据库

mysqldump -F -R -uroot -p  test1 >/tmp/test1_db.bak

(3)3点:更新表

update test1 set name = '赵更新' where id in (1,2); 

commit;

(4)4点:删除表

drop table test1;

(5)查看恢复时间点/恢复位置

a)查看当前binlog日志

show master status;

    

b)查阅binlog日志  #切换到linux环境下

  找到删除之前的点,就是567(时间点的话就是:2019-03-12 00:00:28)  

    

(6)在新机器上进行还原

【一个错误的假设】还原了test2,基于test1的全备,等下就用这个测试吧

#想利用全备恢复到本实例一个新的数据库名称,发现不行,binlog重做的时候,使用的还是原本的数据库名称。
#如果是上面的全库备份,可以使用-o来指定所需要恢复数据库 mysql -uroot -p -o test2 </tmp/test1_db.bak
mysql -uroot -p test2 </tmp/test1_db.bak
#如果是使用的全备可以用--database=test1,来指定只重做test1库的日志 mysqlbinlog --stop-position=567 --database=test1 binlog.000002 |mysql -uroot -p test2
 mysqlbinlog --stop-position=567 binlog.000002 |mysql -uroot -p test2

  

【实际可行策略】

我这里就没有其他机器,我删掉库重建演示吧,如果有其他实例或者机器,那就不用删除了。

6.1)删除重建

drop database test1;

create database test1 default charset utf8; #一定要和原数据库一样的字符编码

6.2)还原数据

mysql -uroot -p test1 </tmp/test1_db.bak

6.3)重做binlog日志

mysqlbinlog --stop-position=567 binlog.000002 |mysql -uroot -p test1

6.4)核验--成功

   

6.5)备份表

  mysqldump -uroot -p test1 test1 >/tmp/test1_table.bak

6.6)还原表到test2库看看

  mysql -uroot -p test2 </tmp/test1_table.bak

    

  

  


  

    

(4.10)mysql备份还原——利用binlog+全备恢复误删表【不推荐使用】的更多相关文章

  1. Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 一 ...

  2. 解说mysql之binlog日志以及利用binlog日志恢复数据

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...

  3. 【转】Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...

  4. MySQL二进制binlog日志说明以及利用binlog日志恢复数据

    MySQL的binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全量备份+binlog日志恢复增量数据部分). 一.关于 ...

  5. (4.5)mysql备份还原——深入解析二进制日志(1)binlog的3种工作模式与配置

    (4.5)mysql备份还原——深入解析二进制日志(binlog) 关键词:二进制日志,binlog日志 0.建议 (1)不建议随便去修改binlog格式(数据库级别) (2)binlog日志的清理 ...

  6. (4.8)mysql备份还原——binlog查看工具之show binlog的使用

    (4.8)mysql备份还原——binlog查看工具之mysqlbinlog及show binlog的使用 关键词:show binlog,mysql binlog查看,二进制文件查看,binlog查 ...

  7. Mysql利用binlog日志恢复数据操作(转)

    a.开启binlog日志:1)编辑打开mysql配置文件/etc/mys.cnf[root@vm-002 ~]# vim /etc/my.cnf在[mysqld] 区块添加 log-bin=mysql ...

  8. (4.3)mysql备份还原——mysql备份策略

    (4.3)mysql备份还原——mysql备份策略 1.指定备份策略时需要考虑的点 [1.1]备份周期:2次备份间隔时长 [1.2]备份方式:在备份周期中,使用什么备份方式.备份模式 [1.3]实现方 ...

  9. (4.1)mysql备份还原——mysql常见故障

    (4.1)mysql备份还原——mysql常见故障 1.常见故障类型 在数据库环境中,常见故障类型: 语句失败,用户进程失败,用户错误 实例失败,介质故障,网络故障 其中最严重的故障主要是用户错误和介 ...

随机推荐

  1. avalonjs学习笔记之实现一个简单的查询页

    官网地址:http://avalonjs.coding.me/ 因为是为了学习js,所以对样式没什么要求,先放效果图: 步骤为:初始页面-------条件查询-------编辑员工1-------保存 ...

  2. table切换jquery插件 jQuery插件写法模板 流程

    通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget()应用jQuery UI的部件工厂方式创建 通过$.extend()来扩展jQuery $. ...

  3. Redis 可视化工具:Web Redis Manager

    以前用的:RedisDesktopManager (0.9.3以后需要订阅) https://github.com/uglide/RedisDesktopManager/releases 现在需要订阅 ...

  4. c++ typeid

    简单使用 #include<iostream> #include<string> #include<new> #include<typeinfo> us ...

  5. Angular路由——路由基础

    一.路由相关对象 Router和RouterLink作用一样,都是导航.Router是在Controller中用的,RouterLink是在模版中用到. 二.路由对象的位置 1.Routes对象 配置 ...

  6. CTeX入门出坑

    终于出了入门坑.大致风格可以了.赶紧记下来. \documentclass{ctexbook} \usepackage{amsmath} \usepackage{amsfonts} \usepacka ...

  7. gdb解决字符串打印果断措施

    在我们进行gdb动态调试的时候,很多时间可能会遇到无法完全显示的情况 关于这种方法网上已经有解决方法 https://blog.csdn.net/shuizhizhiyin/article/detai ...

  8. 【JavaScrpt】JS之数组去重

    var arr = [] var peoples = [ {id:1,name:'wang'}, {id:2,name:'zhang'}, {id:2,name:'zhang'}, ] for(let ...

  9. 第三篇 request篇

    每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一 ...

  10. Linux和window的区别

    免费与收费 最新正版Windows10官方售价¥888 Linux几乎免费(更多人愿意钻研开源软件,而收费的产品出现更多的盗版) 软件与支持 Windows平台:数量和质量的优势,补过大部分为收费软件 ...