• 使用binlog恢复被删除的数据


    上一篇文章关于MySQL binlog二进制日志中,对binlog是什么,日志结构,如何查看等进行了介绍,本文介绍如何将使用binlog进行数据恢复。

    清空binlog

    清空binlog,便于后续测试:

    reset master
    

    数据写入

    对数据库进行更新操作:

    mysql > create database test;
    mysql > use test;
    
    mysql > create table test001(id int,name varchar(10));
    
    mysql > insert into test001 values(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
    
    

    以上这些操作会记录到mysql-bin.000001文件中。

    接着,执行flush logs,强制重新创建一个binlog文件。

    mysql > flush logs;
    

    模拟误删除操作

    继续执行SQL进行数据变更操作:

    mysql > delete from test001 where id=4;  //模拟误操作,删除数据
    
    mysql > create table test002(id int,name varchar(10));
    
    mysql > insert into test002 values(101,'A'),(102,'B'),(103,'C'),(104,'D'),(105,'E');
    
    

    以上操作会记录到mysql-bin.000002文件中。

    查看日志文件

    >show binary logs;
    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | mysql-bin.000001 |      1088 |
    | mysql-bin.000002 |      899  |
    +------------------+-----------+
    1 row in set (0.01 sec)
    

    数据恢复

    查找delete事件所在位置

    查看binlog文件,从中找到delete语句所在的位置。

    # mysqlbinlog -v mysql-bin.000002
    

    假设delete事件开始position是287,事件结束position是413。

    恢复数据

    提取sql

    从binlog中提取sql操作,需要跳过故障点:

    mysqlbinlog /var/lib/mysql/mysql-bin.000001 > mysql-bin.sql
    
    mysqlbinlog /var/lib/mysql/mysql-bin.000002 --stop-position=287 > 287.sql
    
    mysqlbinlog /var/lib/mysql/mysql-bin.000002 --sart-position=413 > 413.sql
    

    删除test数据库

    mysql > drop database test;
    

    使用binlog恢复数据

    使用日志进行恢复时,需要依次进行,即最早生成的日志文件要最先恢复。

    mysql -uroot -p123456 < mysql-bin.sql
    
    mysql -uroot -p123456 < 287.sql
    
    mysql -uroot -p123456 < 413.sql
    

    到此,数据恢复完成。

  • 相关阅读:
    Codeforces Round #644 (Div. 3)(A~G)
    【】BZOJ3687: 简单题(dp+bitset)
    [LeetCode] 275. H-Index II
    [LeetCode] 1028. Recover a Tree From Preorder Traversal
    [LeetCode] 1014. Best Sightseeing Pair
    [LeetCode] 468. Validate IP Address
    [LeetCode] 701. Insert into a Binary Search Tree
    [LeetCode] 658. Find K Closest Elements
    [LeetCode] 787. Cheapest Flights Within K Stops
    [LeetCode] 1300. Sum of Mutated Array Closest to Target
  • 原文地址:https://www.cnblogs.com/lanyangsh/p/13423861.html
Copyright © 2020-2023  润新知