zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    Linux ps 命令获取查询结果中的单列信息
    nowcoder(牛客网)普及组模拟赛第一场 解题报告
    Subway Pursuit (二分)(交互题)
    nowcoder(牛客网)OI测试赛2 解题报告
    NOIP提高组题目归类+题解摘要(2008-2017)
    CYJian的水题大赛2 解题报告
    数独问题
    题解 UVA11300 【Spreading the Wealth】
    实验吧web题:
    简单的sql语句
  • 原文地址:https://www.cnblogs.com/itfenqing/p/7674638.html
Copyright © 2011-2022 走看看