mysql 重启tmp满_mysql误操作后通过binlog恢复,同时解决tmp目录满的问题

注意:

本文的恢复,并不是基于恢复某个时间点的全量备份后的增量恢复,而是指在现有数据库基础上基于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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值