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

薄洪涛5年前数据库1428

前因:有个大佬在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

相关文章

Cannot establish FTP connection to an SFTP server.

Cannot establish FTP connection to an SFTP server.

今天想上传个JDK,惊奇的发现,FileZilla连接不上,出现如下错误;很明显,我用FTP协议与一台使用了SFTP的服务器建立连接肯定是不行的,所以要改变协议;解决方法如下:打开File-Site...

centos8 新增服务

我在centos8上部署了一个java服务,使用java -jar xx.jar来启动服务,但是对于停掉服务,就得使用kill命令,所以想着把它做成个服务原始命令如下:/www/server/java...

搭建SSH反向隧道

搭建SSH反向隧道

公司的数据库是通过端口转发来连接的,即需要ssh登录跳板机,然后通过隧道-端口转发,将数据库映射到跳板机(或者电脑本地)的某个端口,程序连接本地的端口就可以实现连接远程对的数据库;这种连接方式相比VP...

PHP调用不起来Python脚本

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

php脚本以守护进程的方式运行

写了一个聊天室,需要手动执行php start.php start命令去启动workerman的握手程序,但是退出xshell后,进程会被杀掉,因为之前用过node的forever,感觉php应该也有...

mac免密登陆到阿里服务器

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

发表评论    

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