最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

update忘加where条件误操作恢复过程演示

来源:动视网 责编:小采 时间:2020-11-09 10:16:07
文档

update忘加where条件误操作恢复过程演示

update忘加where条件误操作恢复过程演示:update、delete没有带where条件,误操作,如何恢复呢?我现在有一张学生表,我要把小于60更新成不及格。mysqlselect*fromstudent;+----+------+-------+-------+ update、delete没有带where条件,误操作,如何恢复呢? 我现在有一张学生表,我要
推荐度:
导读update忘加where条件误操作恢复过程演示:update、delete没有带where条件,误操作,如何恢复呢?我现在有一张学生表,我要把小于60更新成不及格。mysqlselect*fromstudent;+----+------+-------+-------+ update、delete没有带where条件,误操作,如何恢复呢? 我现在有一张学生表,我要


update、delete没有带where条件,误操作,如何恢复呢?我现在有一张学生表,我要把小于60更新成不及格。mysqlselect*fromstudent;+----+------+-------+-------+

update、delete没有带where条件,误操作,如何恢复呢?

我现在有一张学生表,我要把小于60更新成不及格。

结果,忘带where条件了,

把整张表的记录都给更新成不及格了。

传统的方法是:利用最近的全量备份+增量binlog备份,网站空间,恢复到误操作之前的状态,那么随着表的记录增大,binlog的增多,恢复起来很费时费力。

现在通过一个简单的方法,可以恢复到误操作之前的状态。

我的binlog日志设置为binlog_format = ROW,如果是STATEMENT,这个方法是无效的。切记!!!

首先,创建一个普通权限的账号(切记不能是SUPER权限),例如:

  • GRANT ALL PRIVILEGES ON yourDB.* TO 'admin_read_only'@'%' IDENTIFIED BY '123456';
  • flush privileges;
  • 把read_only打开,设置数据库只读,

  • Query OK, 0 rows affected (0.01 sec)
  • 把刚才创建的admin_read_only账号给运维,让运维把前端程序(PHP/JSP/.NET等)的用户名改下,然后重启前端程序(PHP/JSP/.NET等),这样再连接进来的用户对数据库的访问只能读不能写,网站空间,保证恢复的一致性。

    通过binlog先找到那条语句

    然后把那条binlog给导出来

    其中,这些是误操作之前的数据

    这些是误操作之后的数据

    这里,@1/@2/@3/@4对应的表字段是id,name,class,score

    现在,就要进行最后一步的恢复操作了,只需把这些binlog转换成SQL语句,然后将其导入进去。

    再把@1/@2/@3/@4对应的表字段是id,name,class,score,替换掉

  • [root@M1 opt]# sed -i 's/@1/id/g;s/@2/name/g;s/@3/class/g;s/@4/score/g' recover.sql
  • [root@M1 opt]# sed -i -r 's/(score=.*),/\1/g' recover.sql
    [root@M1 opt]#
    [root@M1 opt]# cat recover.sql
    UPDATE test.student
    SET
    id=1 ,
    ,
    class=1 ,
    score='56'
    WHERE
    id=1 ;
    UPDATE test.student
    SET
    id=2 ,
    ,
    class=1 ,
    score='61'
    WHERE
    id=2 ;
    UPDATE test.student
    SET
    id=3 ,
    ,
    class=2 ,
    score='78'
    WHERE
    id=3 ;
    UPDATE test.student
    SET
    id=4 ,
    ,
    class=2 ,
    score='45'
    WHERE
    id=4 ;
    UPDATE test.student
    SET
    id=5 ,
    ,
    class=3 ,
    score='76'
    WHERE
    id=5 ;
    UPDATE test.student
    SET
    id=6 ,
    ,
    class=3 ,
    score=''
    WHERE
    id=6 ;
    UPDATE test.student
    SET
    id=7 ,
    ,
    class=4 ,
    score='43'
    WHERE
    id=7 ;
    UPDATE test.student
    SET
    id=8 ,
    ,
    class=4 ,
    score='90'
    WHERE
    id=8 ;
    [root@M1 opt]#
  • OK。最激动人心的一幕到来了,我们进行恢复:

    大功告成!

    你也快动手试试吧!

    本文出自 “贺春旸的技术专栏” 博客,网站空间,请务必保留此出处

    文档

    update忘加where条件误操作恢复过程演示

    update忘加where条件误操作恢复过程演示:update、delete没有带where条件,误操作,如何恢复呢?我现在有一张学生表,我要把小于60更新成不及格。mysqlselect*fromstudent;+----+------+-------+-------+ update、delete没有带where条件,误操作,如何恢复呢? 我现在有一张学生表,我要
    推荐度:
    标签: 恢复 操作 更新
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top