博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql误操作后通过binlog恢复,同时解决tmp目录满的问题
阅读量:6897 次
发布时间:2019-06-27

本文共 1024 字,大约阅读时间需要 3 分钟。

注意:

本文的恢复,并不是基于恢复某个时间点的全量备份后的增量恢复,而是指在现有数据库基础上基于binlog的恢复.适用于较小的数据误操作.

 

提取日志文件为sql语句:

/usr-ext/local/mysql/bin/mysqlbinlog --database=db_name --base64-output=decode-rows -v mysql-bin.000418 > /home/mysqllog.txt

 

报错:

Error writing file '/tmp/tmp.Tt5I62' (Errcode: 28 - No space left on device)

tmp目录过小,被占满了

 

修改my.cnf,更改tmpdir目录,改到另一个目录

重启mysql,发现没用,还是报这个错误

增加一个环境变量

#vi /etc/profile

增加以下内容:

#tmpdir

export TMPDIR=/data/tmp

 

使配置生效:

#source /etc/profile

再次提取,ok

 

提取出的sql语句还是不能用,需要处理

https://github.com/danfengcao/binlog2sql

 

1.安装binlog2sql

2.提取指定日志中的sql:

/usr/local/bin/python2.7 binlog2sql.py -h127.0.0.1 -P3306 -uroot -p'123456pwd' -ddb_name --start-file='mysql-bin.000418'

  

注意以上提取出来的是日志记录的sql语句,还不是恢复.恢复需要将insert转为delete,delete转为insert

3.提取回滚sql语句

/usr/local/bin/python2.7 binlog2sql.py -h127.0.0.1 -P3306 -uroot -p'123456pwd' -ddb_name --start-file='mysql-bin.000418' --start-pos=466 --stop-pos=1037 -B > /data/t.sql

 

ps:mysql服务必须在线,不能离线恢复

另一个perl脚本恢复着实太慢了 binlog-rollback.pl 

转载于:https://www.cnblogs.com/itfenqing/p/7674638.html

你可能感兴趣的文章
PL/SQL developer配置
查看>>
高中的一套学习法则
查看>>
JavaScript中的setTimeout函数
查看>>
ln软链接出现Too many levels of symbolic links
查看>>
Java中排序相关
查看>>
关于Plan的计划
查看>>
提升tomcat服务器性能的七条经验
查看>>
Tomcat 生产服务器性能优化
查看>>
ubuntu下Odoo10开发环境配置
查看>>
Java ServletContext 详解
查看>>
html <area> 的用法,图片热点的使用
查看>>
CheckBox的CheckedChanged事件获取DataGrid选中行的值
查看>>
linux exec 文件重定向
查看>>
jquery mobile——必须引入的文件及头信息
查看>>
Redis安装部署
查看>>
redis-sentinel 做HA
查看>>
图为先C++笔试20131017
查看>>
模仿墨迹天气-demo
查看>>
mysql基于日志点的复制步骤
查看>>
查看centos中的用户和用户组
查看>>