热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发误删数据恢复

数据平台开发误删数据,但是不知道具体时间点,就给了一个模糊时间,同事使用rollback逆向恢复(解析binlog产生反向SQL),我使用备份集恢复applybinlog正向恢复,尽快解决问题【原正向恢复方式】选择数据出问题时间之前最近的备份集恢复在一个新实例(r

数据平台开发误删数据,但是不知道具体时间点,就给了一个模糊时间,同事使用rollback逆向恢复(解析binlog产生反向SQL),我使用备份集恢复apply binlog正向恢复,尽快解决问题 【原正向恢复方式】 选择数据出问题时间之前最近的备份集恢复在一个新实例 (r

数据平台开发误删数据,但是不知道具体时间点,就给了一个模糊时间,同事使用rollback逆向恢复(解析binlog产生反向SQL),我使用备份集恢复apply binlog正向恢复,尽快解决问题

【原正向恢复方式】

  • 选择数据出问题时间之前最近的备份集恢复在一个新实例(restorebak.pl恢复工具支持,操作方便)

  • 将备份集pos与数据出问题pos之间的binlog拷贝到新实例上(拷贝binlog操作繁琐)

  • 使用mysqlbinlog –stop-datetime来apply binlog到新实例,以便恢复到数据出问题前的一致性数据快照(mysqlbinlog每次只支持单个binlog apply ,操作繁琐)

其中关于pos点的查找一般都是通过类似mysqlbinlog –no-defaults –stop-datetime=”2012-11-11 11:11:11″ |grep “具体操作” ?-C 3方式来查找的,先通过大体时间段确定一个范围,然后在范围内的精确查找具体的pos

其实mysql有个函数master_pos_wait?可以指定具体pos并返回期间执行事件,于是改进恢复过程,将新实例直接指向原主库拉binlog

【新正向恢复方式】

  • 选择数据出问题时间之前最近的备份集恢复在一个新实例(恢复工具支持,操作方便)
  • start slave;select MASTER_POS_WAIT(‘mysql-bin.000396′,67698920,0);stop slave;?(relay 到指定pos后 触发stop slave操作)
  • show slave status\G;??(保存复制关系)
  • change master to ?master_host=’ ‘, master_user=’slave’,master_password=’slave’;?(取消复制关系,防止误操作开启复制)

【问题】

这种方式在新实例上会多执行几个事件,所以需要将MASTER_POS_WAIT设置的pos提前一些,只适用于基于时间恢复的粗略场景,但是这种场景占绝大多数情况

?MASTER_POS_WAIT(log_name,log_pos[,timeout])

This function is useful for control of master/slave synchronization. It blocks until the slave has read and applied all updates up to the specified position in the master log. The return value is the number of log events the slave had to wait for to advance to the specified position. The function returns?NULL?if the slave SQL thread is not started, the slave’s master information is not initialized, the arguments are incorrect, or an error occurs. It returns?-1?if the timeout has been exceeded. If the slave SQL thread stops while?MASTER_POS_WAIT()?is waiting, the function returns?NULL. If the slave is past the specified position, the function returns immediately.

If a?timeout?value is specified,?MASTER_POS_WAIT()?stops waiting when?timeout?seconds have elapsed.?timeoutmust be greater than 0; a zero or negative?timeout?means no timeout.

This function is unsafe for statement-based replication. Beginning with MySQL 5.5.1, a warning is logged if you use this function when?binlog_format?is set to?STATEMENT. (Bug #47995)

【分享】

后来同事分享其实start slave直接可以指定停止的pos,汗

START SLAVE [SQL_THREAD] UNTIL MASTER_LOG_FILE = ‘log_name‘, MASTER_LOG_POS =?log_pos

An?UNTIL?clause may be added to specify that the slave should start and run until the SQL thread reaches a given point in the master binary log or in the slave relay log. When the SQL thread reaches that point, it stops. If the?SQL_THREAD?option is specified in the statement, it starts only the SQL thread. Otherwise, it starts both slave threads. If the SQL thread is running, the?UNTIL?clause is ignored and a warning is issued.

For an?UNTIL?clause, you must specify both a log file name and position. Do not mix master and relay log options.

Any?UNTIL?condition is reset by a subsequent?STOP SLAVE?statement, a?START SLAVE?statement that includes noUNTIL?clause, or a server restart.

The?UNTIL?clause can be useful for debugging replication, or to cause replication to proceed until just before the point where you want to avoid having the slave replicate an event. For example, if an unwise?DROP TABLE?statement was executed on the master, you can use?UNTIL?to tell the slave to execute up to that point but no farther. To find what the event is, use?mysqlbinlog?with the master binary log or slave relay log, or by using a?SHOW BINLOG EVENTS?statement.

If you are using?UNTIL?to have the slave process replicated queries in sections, it is recommended that you start the slave with the?–skip-slave-start?option to prevent the SQL thread from running when the slave server starts. It is probably best to use this option in an option file rather than on the command line, so that an unexpected server restart does not cause it to be forgotten.

【最终正向恢复方式】

  • 选择数据出问题时间之前最近的备份集恢复在一个新实例(恢复工具支持,操作方便)
  • start slave until master_log_file=’mysql-bin.000396′,master_log_pos=67698920;
  • show slave status\G;??(保存复制关系)
  • change master to ?master_host=’ ‘, master_user=’slave’,master_password=’slave’;?(取消复制关系,防止误操作开启复制)

【改进】

可以直接把start slave until语句直接做到恢复工具中,很大的收获

感谢印风和智盛的idea,感谢维西的分享

推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Echarts图表重复加载、axis重复多次请求问题解决记录
    文章目录1.需求描述2.问题描述正常状态:问题状态:3.解决方法1.需求描述使用Echats实现了一个中国地图:通过选择查询周期&#x ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
author-avatar
laomeng爱家人_465
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有