mysql+误操作怎么恢复_MySQL 误操作后如何快速恢复数据

传统解法

用全量备份重搭实例,再利用增量binlog备份,恢复到误操作之前的状态。然后跳过误操作的SQL,再继续应用binlog。此法费时费力,不值得再推荐。

利用binlog2sql快速闪回

首先,确认你的MySQL server开启了binlog,设置了以下参数:

[mysqld]

server-id=1

log_bin=/var/log/mysql/mysql-bin.log

max_binlog_size=1000M

binlog-format=row

如果没有开启binlog,也没有预先生成回滚SQL,那真的无法快速恢复数据了。对存放重要业务数据的MySQL,强烈建议开启binlog。

随后,安装开源工具binlog2sql。binlog2sql是一款简单易用的binlog解析工具,其中一个功能就是利用binlog进行闪回。

gitclonehttps://github.com/danfengcao/binlog2sql.git

pipinstall-rrequirements.txt

然后,我们就可以生成回滚SQL了。

背景:误删了test库tbl表整张表的数据,需要紧急回滚。

test库tbl表原有数据

mysql>select*fromtbl;

+----+--------+---------------------+

|id|name|addtime|

+----+--------+---------------------+

|1|小赵|2016-12-1000:04:33|

|2|小钱|2016-12-1000:04:48|

|3|小孙|2016-12-1000:04:51|

|4|小李|2016-12-1000:04:56|

+----+--------+---------------------+

4rowsinset(0.00sec)

mysql>deletefromtbl;

QueryOK,4rowsaffected(0.00sec)

tbl表被清空

mysql>select*fromtbl;

Emptyset(0.00sec)

恢复数据步骤:

登录mysql,查看目前的binlog文件

mysql>showmaster logs;

+------------------+-----------+

|Log_name|File_size|

+------------------+-----------+

|mysql-bin.000046|12262268|

|mysql-bin.000047|3583|

+------------------+-----------+

最新的binlog文件是mysql-bin.000047,我们再定位误操作SQL的binlog位置

$pythonbinlog2sql/binlog2sql.py-h127.0.0.1-P3306-uadmin-p'admin'-dtest-ttbl--start-file='mysql-bin.000047'

输出:

DELETEFROM`test`.`tbl`WHERE`addtime`='2016-12-10 00:04:33'AND`id`=1AND`name`='小赵'LIMIT1;#start 3346 end 3556

DELETEFROM`test`.`tbl`WHERE`addtime`='2016-12-10 00:04:48'AND`id`=2AND`name`='小钱'LIMIT1;#start 3346 end 3556

DELETEFROM`test`.`tbl`WHERE`addtime`='2016-12-10 00:04:51'AND`id`=3AND`name`='小孙'LIMIT1;#start 3346 end 3556

DELETEFROM`test`.`tbl`WHERE`addtime`='2016-12-10 00:04:56'AND`id`=4AND`name`='小李'LIMIT1;#start 3346 end 3556

生成回滚sql,并检查回滚sql是否正确

$pythonbinlog2sql/binlog2sql.py-h127.0.0.1-P3306-uadmin-p'admin'-dtest-ttbl--start-file='mysql-bin.000047'--start-pos=3346--end-pos=3556-B

输出:

INSERTINTO`test`.`tbl`(`addtime`,`id`,`name`)VALUES('2016-12-10 00:04:56',4,'小李');#start 3346 end 3556

INSERTINTO`test`.`tbl`(`addtime`,`id`,`name`)VALUES('2016-12-10 00:04:51',3,'小孙');#start 3346 end 3556

INSERTINTO`test`.`tbl`(`addtime`,`id`,`name`)VALUES('2016-12-10 00:04:48',2,'小钱');#start 3346 end 3556

INSERTINTO`test`.`tbl`(`addtime`,`id`,`name`)VALUES('2016-12-10 00:04:33',1,'小赵');#start 3346 end 3556

确认回滚sql正确,执行回滚语句。登录mysql确认,数据回滚成功。

$pythonbinlog2sql.py-h127.0.0.1-P3306-uadmin-p'admin'-dtest-ttbl--start-file='mysql-bin.000047'--start-pos=3346--end-pos=3556-B|mysql-h127.0.0.1-P3306-uadmin-p'admin'

mysql>select*fromtbl;

+----+--------+---------------------+

|id|name|addtime|

+----+--------+---------------------+

|1|小赵|2016-12-1000:04:33|

|2|小钱|2016-12-1000:04:48|

|3|小孙|2016-12-1000:04:51|

|4|小李|2016-12-1000:04:56|

+----+--------+---------------------+

软件测试免费视频观看链接:https://ke.qq.com/course/159919#tuin=ba4122

松勤网:www.songqinnet.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RHEL5.1下安装GCC

RHEL5.1下安装GCC 2010年08月17日 星期2 14:00 一、环境说明 由于用的是默认安装,所以说GCC也没有装进去。 GCC在安装源码包时要用到的一个组件, 开始安装:按顺序安装以下包就可以完成GCC的安装了 [roottest tools]# uname -a L…

你见过的“垃圾”项目是这样子么?

大家好,我是Z哥。我相信每一位程序员最怕遇到代码质量堪忧的项目,毕竟增加一个同样的功能,在一个代码整洁、清晰的项目里与在一个代码混乱不堪的项目里,效率和质量上的差距达到一个数量级一点也不奇怪。但是残酷的现实是&#xff…

[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)

目的:1.ArcGIS API for Flex实现Toolbar功能,包括ZoomIn、ZoomOut、Pan、PrevExtent、NextExtent、FullExtent功能。准备工作:1.这次地图数据就用Esri提供的http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/Ma…

mysql使用索引下推的好处_mysql的索引下推理解和实践

对于mysql建表稍有点经验的开发人员都会为后续的where查询条件提前考虑创建索引。这里说的是在使用索引查询时有关索引下推的有关知识点。综合前人的经验结果:索引下推是数据库检索数据过程中为减少回表次数而做的优化。判断是否需要回表的是由mysql存储引擎控制&am…

物理学家史蒂夫·霍金逝世,享年76岁(附图文回顾他的一生)

3月14日消息,据英国天空新闻等多家媒体报道,史蒂芬威廉霍金(Stephen William Hawking)去世,享年76岁(1942年1月8日-2018年3月14日)。这一消息已经得到霍金家人确认。霍金的三个孩子露…

mysql数据库熟悉表空间数据文件_Oracle表空间和数据文件

Oracle创建表空间 1.创建普通表空间create tablespace oracle_tablespacedatafileOracle创建表空间1.创建普通表空间create tablespace oracle_tablespacedatafile /home/oracle/oradata/orcl/oracle_tablespace.dbfsize 100mautoextend on next 10M maxsize 200Mextent manage…

CSRobot gen:mysql,pg-c#类型映射

下面的数据库类型和c#类型的映射关系,只是我个人的想法,应该不同的业务场景对应可能不一样,比如json,xml,line,polygon结构化的数据,如果在C#中有对应的实体类,可以很友好的转换&…

HTTP header中的 Cache-control

网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:(1) 打开新窗口如果指定cache-c…

2018年最值得关注的15大技术趋势,区块链将得到更广泛的应用

通常情况下,技术趋势是很难准确预测的,因为预测未来本身就极其困难。但是我们还是可以从过往的一些显著数据指标来推测新的一年里科技行业的发展趋势。2018,有哪些值得关注的技术趋势?01 区块链将得到更广泛的应用

mtu值修改

ping -f -l 1472 192.168.0.1转载于:https://blog.51cto.com/xiaohe027/382282

Visual Studio项目引用出现感叹号怎么办?

原因可能有多种:第一种问题:解决方式1:今天换了台电脑,就把笔记本上的项目拷贝到了台式机上, 但是我没有拷贝解决方案整个文件夹,因为其中项目太多了,我就把其中一个项目的文件夹直接拷贝到电脑…

java打包拆包_[Java] Java 打包成jar包 和 解压jar包

解压jar包jar xf xxx.jar打包成jar包方法一:通过jar命令jar命令的用法:下面是jar命令的帮助说明:用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...选项包括:-c 创建新的归档文…

离职总结:大公司与小公司的个人体验

离职在即,在准备下一个工作环境的这段时间,忽然有一阵感慨,工作近五年,在这段时间中,体验了两种不同的工作环境:一个规模很大,各种开发体系完备的大公司,另一个(也是目前…

NDK/JNI01--NDK下载配置

1、NDK下载我的开发环境是Ubuntu9.04 , 所以下载的NDK为android-ndk-r4-linux-x86.zip 2、NDK解压及配置2-1、解压zip文件unzip android-ndk-r4-linux-x86.zip 2-2、配置NDKROOTvim /etc/profile适当位置添加:export NDKROOT/usr/local/android-sdk-linux_86/androi…

java导入导出excel_Java导入导出Excel工具 easyexcel

Java导入导出Excel工具 easyexcel做Java开发的同学,尤其是做管理后台的同学绝大多数都会接触到报表系统,这时候就少不了Excel的导入和导出了。Java解析生成Excel比较有名的有Apache POI ,但是POI存在缺陷就是所有的数据的解析都是在内存中进…

浅谈.Net Core后端单元测试

1. 前言单元测试一直都是"好处大家都知道很多,但是因为种种原因没有实施起来"的一个老大难问题。具体是否应该落地单元测试,以及落地的程度, 每个项目都有自己的情况。本篇为个人认为"如何更好地写单元测试", 即更加偏向实践向中夹杂一些理论的…

图论的各种基本算法

本篇主要涉及到图论的基本算法,不包含有关最大流的内容。图论的大部分算法都是由性质或推论得出来的,想朴素想出来确实不容易。二分图(Is-Bipartite)一个图的所有顶点可以划分成两个子集,使所有的边的入度和出度顶点分别在这两个子集中。这个…

PowerTip of the Day from powershell.com上周汇总(六)

限制String类型参数的长度 Limiting String Input Length http://powershell.com/cs/blogs/tips/archive/2010/08/23/limiting-string-input-length.aspx function Get-FileName {param([ValidateLength(1,8)][String]$FileName)"Your filename {0} is {1} chars long&quo…

java实现权限_Java实现常用权限控制算法

一种常用的权限控制算法的实现,参考LINUX/UNIX权限编码这里笔者介绍一种很常用,也比较专业的权限控制思路。要换成其他的语言主,自己转一下就可以了。这里用java语言描述,其实都差不多的。为了方便起见,我们这里定义a^b为&#xf…

社区 正式发布了跨平台的 CoreWCF 0.1.0 GA

CoreWCF 项目在2021.2.19 正式发布了0.1.0 GA版本:https://github.com/CoreWCF/CoreWCF/releases/tag/v0.1.0 ,这个版本号虽然是0.1,但是它是可以投入生产的版本,而且是跨平台的,支持LInux部署WCF,当前仅支持http 和 n…