`
liyinfeng56
  • 浏览: 94047 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MySQL使用二进制日志来恢复数据的方法

    博客分类:
  • SQL
阅读更多

如果你不小心执行了drop table怎么办,先不要冒汗,假如你保留了完整的二进制日志的话,  这是可以恢复的,MySQL服务器启用了二进制日志,你就可以使用Mysqlbinlog工具来恢复从指定的时间点开始直到现在或另一个指定的时间点的数据。
从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(取决于你的系统)中找到路径。如果未包含在选项文件中。Mysqlbinlog工具的使用,大家可以看MySQL的帮助手册。里面有详细的用法。

在这个例子中,重点是体现--start-position、--stop-position和—start-datetime、stop-datetime参数的使用。其含义是从二进制日志中第个位置等于N参量时的事件开始读,从二进制日 志中第个位置等于和大于N参量时的事件起停止读。

案例:
1、操作系统:Linux
2、数据库版本:Mysql5.0
3、问题描述:误对XXXDB数据库的XXX_TABLE等表进行DROP后,并重新创建了被DROP表,且实现了对数据的重新录入。如下脚本:
drop table XXX_TABLE;
create table ts_user(
id int auto_increment not null primary key;
name varchar(50);
pass varchar(50)
)
insert into XXX_TABLE values('tiancom','tiancom');

4、需求分析:要求对XXXDB数据库的XXX_TABLE等表进行还原到误操作DROP之前的状态。
5、操作步骤:
1.1、找到mysql二进制日志文件的存放目录,目录在/usr/local/mysql/date
1.2、通过cd 命令进入到Mysql的安装目录/usr/local/mysql/bin
1.3、进入1.2的目录后可以通过命令mysqlbinlog /usr/local/mysql/date/xx查看日
志文件;因数据库字符集的问题,在此步骤可能出现“default-character-set=utf8”的错误,为了设置字符集的差异问题和方便对日志查看,我们的命令可以修改为:mysqlbinlog --no-
defaults /usr/local/mysql/date/ xxx_db-bin.000001 > /usr/log.txt。最终的日志详细信息可以在usr目录的log.txt查看。
1.4、处理方法:
方法1:position
打开日志我们可以找到执行create table xxx_db之后和drop table xxx_db之前的position, 假如是20, 1000;
#mysqlbinlog --no-defaults--start-position="20" --stop-position="1000" /usr/local/mysql/date/xxx_db-bin.000001 | mysql -u root
方法2:datetime
#mysqlbinlog --no-defaults --start-datetime="2012-08-15 8:20:00" --stop-datetim="2012-08-15 10:25:00" /usr/local/mysql/date/xxx_db-bin.000001 | mysql -u root
如果create table xxx_db和drop table xxx_db之间的时间相距是较长, 或者分别在不同的二进制日志中,这样能行吗?答案告诉你就等着失眠!
方法3:
如在不同的二进制日志文件,或者二进制日志文件已经大于等于3个(第3个是记录你误操作的),那么我们的处理方法是#mysqlbinlog  --no-defaults  /usr/local/mysql/date/xxx_db-
bin.000001(000002….) | mysql -uroot –p,执行到你误操作日志之前的2个日志,因为我们要做的是正确的全部数据,也就是我们不希望去重做误操作这个语句所以不需要执行000003;

不小心执行了drop table xxx_db, 实际方法告诉你恢复是不成问题的,但是与其我们绷紧神经来处理这个意外的问题,不如做好数据备份;

分享到:
评论

相关推荐

    mysql-binlog二进制日志恢复

    本文将详细讲解 MySQL 二进制日志恢复的步骤和方法。 一、查看二进制日志文件 使用以下命令来查看二进制日志文件: ```sql SHOW BINARY LOGS; ``` 这将显示当前 MySQL 服务器上的所有二进制日志文件。 二、查看...

    MySQL二进制日志查看工具

    MySQL二进制日志是数据库管理系统中用于记录所有更改数据的事件序列的一种机制,它对于数据库的备份、恢复以及故障排查至关重要。二进制日志查看工具则为开发者和DBA提供了一种方便的方式来分析、理解和操作这些日志...

    详解如何通过Mysql的二进制日志恢复数据库数据

    然而,依赖二进制日志恢复数据并不是最佳实践,因为这种方法可能会有数据丢失,且操作复杂。理想情况下,应该定期备份数据库,以确保即使发生问题也能快速恢复到完整且一致的状态。许多内容管理系统(CMS)提供了...

    mysql重做2进制日志.doc

    MySQL的二进制日志(Binary Log)是数据库系统中用于记录所有更改数据的SQL语句的一种机制,它对于数据恢复、主从复制等场景至关重要。重做二进制日志,即根据二进制日志中的内容重新执行SQL操作,以达到数据恢复的...

    mysql二进制日志文件恢复数据库

     mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句。如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合...

    从MySQL ROW二进制日志还原更新。Undelete-Mysql.zip

    MySQL的ROW格式二进制...在实际应用中,理解MySQL的ROW格式二进制日志以及如何使用Python解析和恢复数据是一项关键技能。通过掌握这些知识,数据库管理员和开发者能够在面临数据丢失时快速、准确地执行数据恢复操作。

    mysqlbinlog二进制日志资料.pdf

    MySQL的二进制日志(Binary Log)是数据库系统中用于记录所有更改数据的SQL语句的重要工具,它对于数据库的备份、恢复以及故障排查至关重要。`mysqlbinlog`是MySQL提供的一款命令行实用程序,专门用于处理和解析二...

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

    ### MySQL根据日志恢复数据详细步骤 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,因其高效稳定、易于维护等特性而深受开发者喜爱。然而,在实际使用过程中,难免会遇到误删数据的情况,这时就...

    MySQL二进制日志:数据恢复的瑞士军刀

    - **可靠性**:MySQL提供了多种机制来确保数据的完整性和可靠性,包括事务支持、备份和恢复功能。 - **易于使用**:MySQL提供了简单直观的界面和丰富的文档,便于用户学习和使用。 - **可扩展性**:MySQL支持从小型...

    MySQL 二进制日志连接器.zip

    MySQL 二进制日志连接器mysql-binlog-连接器-java 注意此存储库不再维护。我建议迁移到osheroff/mysql-binlog-connector-java。MySQL 二进制日志连接器。最初,该项目是作为open-replicator的一个分支启动的,但最终...

    Go-GolangMySql二进制日志复制侦听器

    总结起来,“Go-Golang MySQL二进制日志复制侦听器”是一个强大的工具,它利用Golang的特性实现了对MySQL二进制日志的高效监听和处理。无论你是数据库管理员还是软件开发者,理解并掌握myreplication将有助于提升你...

    基于Python实现用于解析和转换 MySQL 二进制日志(binlog)的工具源码

    MySQL二进制日志(Binary Log,简称binlog)是MySQL数据库系统中记录所有更改数据库数据的事件序列的重要工具,主要用于数据恢复、主从复制等场景。本篇将深入探讨如何利用Python语言来解析和转换MySQL的binlog,...

    mysql binlog二进制日志详解

    二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。 2。二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。 不良影响: 运行服务器时若启用二进制...

    MySQL日志和数据恢复

    二进制日志记录了所有改变数据库状态的非临时性事件,包括数据修改和结构修改,它是实现数据恢复和复制的基础。二进制日志文件名通常以`binlog.`开头,后跟序列号。启用二进制日志需要在MySQL配置文件中设置`log-...

    MySQL二进制日志(binlog)解析工具

    MySQL二进制日志(binlog)是数据库系统中一种重要的功能,用于记录所有改变数据库状态的事务。这种日志格式是二进制的,它包含了一种持久化数据库更改的方式,这对于数据恢复、主从复制和数据分析具有关键作用。在...

    mysql binlog(二进制日志)查看方法

    总之,了解并掌握MySQL的二进制日志查看和管理方法对于数据库管理员来说至关重要,因为它直接关系到数据的安全性和系统的高可用性。确保正确配置和使用二进制日志,能够有效地保护数据,实现高效的数据复制,并为...

Global site tag (gtag.js) - Google Analytics