记录一次从日志中恢复mysql数据库数据

薄洪涛5年前数据库1343

前因:有个大佬在update的时候,忘记加where条件,造成线上数据库中的某个状态值全部被修改,需要马上处理

首先面对这种情况,我马上想到的就是从二进制日志文件中恢复,马上查看是否开启了日志,确定开启了日志之后,松了一口气

操作步骤如下:

  1.  需要先锁表,确保数据被污染

lock tables xxx read

    2. 分析日志文件

[root@localhost mysql]# mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS mysql-bin.000024 | grep -B 15 'set money = 501'

TIM截图20200719104649.png

   3. 找到记录之后,将操作转为sql文件

cat delete.txt | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' | sed -r 's/(@4.*),/\1;/g' | sed 's/@[1-9]=//g' > t1.sql

    4. 导入数据

source t1.sql

    5. 解锁

unlock table



标签: linux

相关文章

PHP调用不起来Python脚本

前几天做了个自动处理文件的python脚本,目前python脚本需要手动把文件放到特定文件夹下,自动去读取处理;但是老大觉得不方便,让我写了个文件上传页面,然后调用python的脚本,导出处理后的文件...

mac免密登陆到阿里服务器

生成本地密钥ssh-keygen -t rsa   2. 拷贝 /Users/boht/.ssh/id_rsa.pub 内容到服务器的 /r...

linux免密登陆

linux免密登陆

最近有些累,所以今天的教程就水一篇;所谓免密登陆,就是说我有一台服务器,不想让人家知道具体的ip或者用户名密码,只让使用者从跳板机登陆,通过ssh xxx@ip  这种来登陆;1、 首先跳板...

chmod引出的问题

chmod引出的问题

上传代码后,尝试访问出现如下错误先尝试对文件修改权限[root@host wechat.bohongtao.online]# chmod -R 755 ...

Nginx解决跨域问题

不解释,做个记录location / {     add_header Access-Control-Allow-Origin&n...

阿里云服务器更改默认ssh端口

我们通常服务器默认的ssh端口是22,但是使用默认端口是不安全的,所以我们需要更改ssh端口1.修改ssh配置文件vi /etc/ssh/sshd_config找到 #Port 22 ,然后...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。