关键误操作: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. 【python3 自动化之mysql操作】python3下的mysql入门基础

    1.所需资源:pycharm,python3.6,module:pymysql 2.pycharm配置mysql: 新添加一个mysql数据库 ip:192.168.112.54    端口:3306 ...

  2. hasOne、hasMany、belongsTo

    这里将hasOne.hasMany.belongsTo进行一个详细举例说明. 首先,这3个的大致中文意思: hasOne:有一个,加上主谓语应该是 ,A 有一个 B hasMany:有很多,A 有很多 ...

  3. github密钥

    官网英文资料:https://help.github.com/articles/connecting-to-github-with-ssh/ 1.生成SSH keys文件id_rsa.pub ssh- ...

  4. AI数据分析(一)

    安装Spyder+PyQt5 在python36目录下,使用cmd打开,切换到Scripts文件下 pip install spyder pip install PyQt5 python中的库 Num ...

  5. URL.createObjectURL() 实现本地上传图片 并预览功能

    URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL.这个 URL 的生命周期和创建它的窗口中的 document 绑定.这个新 ...

  6. 方法的覆盖(override)

  7. kvm-virsh管理工具

    virsh  可以进入命令行交互界面 Virsh  list   显示所有虚拟机实例 #virt-manager  &   启动图形界面来创建 Virsh   start  c1  --con ...

  8. C - 树的统计Count - 树链剖分

    思路 :树剖模板,线段树维护即可. #include<bits/stdc++.h> using namespace std; #define MID int m = (l+r)/2 #de ...

  9. Python assert 断言函数

    http://blog.csdn.net/hunyxv/article/details/52737339 使用assert断言是学习python一个非常好的习惯,python assert 断言句语格 ...

  10. 小甲鱼Python第十九讲课后习题

    笔记: 1.内嵌函数:函数内部新创建另一个函数 2.闭包:函数式编程的重要语法,如果在一个内部函数里,对外部作用域(但不是在全局作用域的变量)进行引用,那么内部函数就会被认为是闭包. 3.nonloc ...