`

利用 MySQL bin-log 恢复数据表

 
阅读更多

今天公司一同事使用典型的“UPDATE 不带 WHERE 语句”误操作把数据库中一张极重要数据表 player 给“做掉了”,还算幸运的是该数据库每3个月会完整备份一次,最近一次的备份点为6月30日,再加上 bin-log 保留了30天的数据,可以根据这两份数据还原数据表的内容。方法看上去非常简单清晰,但是具体执行起来还是遇到了很多问题,下面整理了一些关键问题,以备以后灾难再发生时可供参考。

mysql> create table test2 (ids int);
Query OK, 0 rows affected (0.13 sec)

 

mysql> insert into test2 values (3);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test2 values (4);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test2 values (5);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test2 values (1);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test2 values (11);
Query OK, 1 row affected (0.01 sec)

mysql> insert into test2 values (1);

 

mysql> update test2 set ids=5;
Query OK, 6 rows affected (0.01 sec)
Rows matched: 7  Changed: 6  Warnings: 0

 

找到mysql的binlog日志位置

mysql-bin.000020

 

然后根据日志生成可读文件

mysqlbinlog  mysql-bin.000020  >1.sql

 

[root@centos mysql]# cat 1.sql|grep test2;
create table test2 (ids int)
insert into test2 values (1)
insert into test2 values (3)
insert into test2 values (4)
insert into test2 values (5)
insert into test2 values (1)
insert into test2 values (11)
insert into test2 values (1)
update test2 set ids=5

 

可以从日志里筛选出来表被改的过程

最后先创建一张新表,然后将语句插入到新表里,最后插入到正式表里

分享到:
评论

相关推荐

    MySQL bin-log 日志清理方式

    MySQL bin-log 日志是一种重要的数据库日志机制,它可以记录数据库的所有操作,以便在出现问题时进行数据恢复和主从服务器之间的同步数据。然而,随着时间的推移,bin-log 文件会不断增长,占用大量的磁盘空间,影响...

    开启bin-log日志mysql报错的解决方法

    在MySQL中,bin-log(二进制日志)是一个关键特性,用于记录所有改变数据库状态的语句,以便于数据恢复、主从复制等场景。然而,在开启bin-log时,可能会遇到一些问题,比如在创建存储过程时出现的错误:`ERROR 1418...

    mysql将bin-log日志文件转为sql文件的方法

    MySQL的二进制日志(bin-log)是数据库系统用来记录所有更改数据的非查询操作的重要工具,主要用于数据恢复、主从复制等场景。当需要将bin-log日志文件转换为可读的SQL文件时,可以使用`mysqlbinlog`命令来实现这一...

    使用bin-log日志还原数据库的例子

    要实际恢复数据,你需要根据需要回放到某个特定时间点的 bin-log。这通常涉及到创建一个备份,然后使用 `mysqlbinlog` 生成 SQL 脚本,再在新的数据库实例上执行这些脚本来应用更改。如果需要精确恢复,可能还需要...

    导出bin log时间段脚本datarecover.sh

    总的来说,datarecover.sh脚本是一个强大的数据恢复工具,它利用MySQL的bin-log特性,帮助我们在数据出现问题时快速回溯到某一状态。理解并掌握其使用,对于数据库管理员来说,是提高故障处理效率和数据安全的重要...

    MysqlToOracle.zip

    - **配置目标Oracle**:在Oracle服务器上准备接收数据的表结构,确保与MySQL的表结构一致。 - **启动canal**:运行canal实例,开始监听MySQL的bin-log流。 - **解析和同步**:canal解析接收到的bin-log事件,根据...

    MySQL5.0常用命令与数据恢复.pdf

    ### MySQL5.0常用命令与数据恢复知识点解析 #### 一、启动MySQL服务器 - **Windows环境下启动MySQL:** - 使用图形化工具WinMySQLAdmin启动MySQL服务。 - 在命令提示符窗口(CMD)中执行`d:\mysql\bin\mysqld`...

    mysql中mysql-bin.000001是什么文件可以删除吗

    如果只有一台MySQL服务器,且不需要进行数据恢复或主从同步,可以在配置文件`my.cnf`中取消`log-bin`选项的注释,然后重启MySQL服务来停止生成二进制日志。 对于有主从服务器环境的情况,清理二进制日志需要更谨慎...

    mysql-connector-java-8.0.21.rar 数据库连接依赖最新版

    MySQL Connector/J支持JDBC的事务管理特性,如自动提交、显式事务开始和提交、回滚等,确保数据的一致性和完整性。 8. **错误处理与调试**: 当遇到数据库操作失败时,通过捕获和处理`SQLException`,可以获取...

    mysql-connector-java-8.0.24

    MySQL Connector/J 8.0.24 是MySQL数据库与Java应用程序之间的重要桥梁,它是一个用于连接Java应用程序到MySQL服务器的JDBC驱动程序。这个版本的发布旨在提供更高效、更稳定以及更安全的数据访问功能。以下是对这个...

    MySQL利用binlog恢复库表

    1. **启用二进制日志并指定前缀**:在`[mysqld]`段落下加入`log-bin=mysql-bin`。这表示日志文件的前缀被设为`mysql-bin`。 ```ini [mysqld] log-bin=mysql-bin ``` 2. **设置服务器ID**:对于集群环境或...

    基于 mysql-binlog-connector-java 实现增量数据的收集.zip

    binlog的开启和配置是实现增量数据收集的前提,通常在MySQL配置文件(如my.cnf)中设置`log-bin`选项来启用。 `mysql-binlog-connector-java` 库提供了一个简单的方式来连接到MySQL服务器并订阅binlog事件。这个库...

    mysql-connector-java-5.0.0-beta-bin包

    总的来说,`mysql-connector-java-5.0.0-beta-bin`是Java开发者与MySQL数据库交互的重要工具,它使得Java应用程序能够利用JDBC API轻松地连接、查询和管理MySQL数据库。在实际开发中,我们需要根据项目需求选择合适...

    mysql根据日志恢复数据详细步骤

    log-bin=mysql-bin ``` - **其他配置**: - `expire_logs_days`:设置日志的过期天数,超过该天数的日志会被自动删除。 ```ini expire_logs_days=3 ``` - 这意味着系统只会保留最近3天的日志文件。 #### 三...

    mysql-connector-java-8.0.23.rar

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其与Java的连接主要依赖于MySQL Connector/J,也就是我们所说的JDBC驱动程序。"mysql-connector-java-8.0.23.rar"是一个包含MySQL Java连接器的压缩包,适用...

    开启mysql-Binlog

    开启mysql-binlog操作 binlog日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句。语句以“事件”的形式保存,它描述数据更改。当我们因为某种原因导致数据库出现故障时,就可以利用binlog日志来挽回...

    mysql主从复制&分区技术&优化.ppt

    `,然后在my.cnf配置文件中开启`log-bin=mysql-bin`以启用bin-log。 在从服务器上,配置包括设置唯一的`server-id`,并指定主服务器的IP、端口、用户名和密码,以及主服务器的bin-log文件和位置,例如使用`change ...

Global site tag (gtag.js) - Google Analytics