广告
返回顶部
首页 > 资讯 > 数据库 >MySQL如何恢复误操作
  • 243
分享到

MySQL如何恢复误操作

2024-04-02 19:04:59 243人浏览 安东尼
摘要

这篇文章给大家分享的是有关Mysql如何恢复误操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。常用的恢复方式2.1 利用备份恢复  使用这种方式的前提必须有最近的备份

这篇文章给大家分享的是有关Mysql如何恢复误操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

常用的恢复方式
2.1 利用备份恢复
  使用这种方式的前提必须有最近的备份集或者知道出现误操作起始的binlog 位点或者GTID,利用备份集恢复到中间的机器上,然后利用mysql的slave 特性

  1. START SLAVE [sql_THREAD] UNTIL

  2.     MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos;

  3. until_option:

  4.     UNTIL {   {SQL_BEFORE_GTIDS | SQL_AFTER_GTIDS} = gtid_set

  5.           | MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_pos

  6.           | RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos

  7.           | SQL_AFTER_MTS_GAPS  }

恢复出到一个临时的实例,将误删除,更新的数据 dump 出来并恢复到老的实例里面。恢复数据期间的受影响的表最好不可写,否则将难以达到最想要的结果。例如
a=2 ,被误更新为 a=4,恢复的期间有被更新为a=7 ,结果恢复后又恢复为a=2 。
此种恢复方式 不适合恢复大量数据库,且需要临时实例。
2.2 利用开源工具binlog2sql 恢复。
  binlog2sql 是大众点评公司的DBA 开发的一款基于通过解析binlog将delete 恢复为insert,update 的值 set 字段和where条件做对调的原理来恢复数据的。
  使用限制 MySQL的binlog fORMat 必须是row 
安装

  1. git clone https://GitHub.com/danfenGCao/binlog2sql.git && cd binlog2sql

  2. pip install -r requirments.txt

用法

  1. usage: binlog2sql.py [-h HOST] [-u USER] [-p PASSWord] [-P PORT]

  2.                      [--start-file STARTFILE] [--start-position STARTPOS]

  3.                      [--stop-file ENDFILE] [--stop-position ENDPOS]

  4.                      [--start-datetime STARTTIME] [--stop-datetime STOPTIME]

  5.                      [--stop-never] [--help] [-d [DATABASES [DATABASES ...]]]

  6.                      [-t [TABLES [TABLES ...]]] [-K] [-B]

例子

  1. create table flashback(

  2. id int(11) not null auto_increment  primary key ,

  3. stat int(11) not null default 1

  4. ) engine=innodb default charset=utf8;

  5. insert into flashback(stat) values (2),(3),(4),(7),(9),(22),(42),(33),(66),(88)

误操作

  1. update flashback set stat=15

恢复数据的步骤
1 获取误操作的dml所在的binlog,不过一般开发可不知道具体binlog,他们只知道什么时间误操作了,binlog2sql支持按照时间范围恢复。

  1. mysql> show master logs;

  2. +------------------+-----------+

  3. | Log_name | File_size |

  4. +------------------+-----------+

  5. | mysql-bin.000009 | 177 |

  6. | mysql-bin.000010 | 464 |

  7. | mysql-bin.000011 | 8209 |

  8. +------------------+-----------+

  9. 3 rows in set (0.00 sec)

本例子中binlog为mysql-bin.000011

2 利用binlog2sql 恢复数据,先解析binlog获取 update 语句的起始位点,本例中  start 5087 end 5428

  1. python binlog2sql.py -h227.0.0.1 -P3307 -udba -p'dbadmin' -dyang -tflashback --start-file='mysql-bin.000011'

MySQL如何恢复误操作
使用binlog2sql -B 参数得到恢复的sql
MySQL如何恢复误操作
将获取到的sql 执行到数据库,假如生产环境中真的发生了问题,一定要和开发沟通并且确认需要恢复的确切记录。

  1. mysql> select * from flashback;

  2. +----+------+

  3. | id | stat |

  4. +----+------+

  5. | 1 | 2 |

  6. | 2 | 3 |

  7. | 3 | 4 |

  8. | 4 | 7 |

  9. | 5 | 9 |

  10. | 6 | 22 |

  11. | 7 | 42 |

  12. | 8 | 33 |

  13. | 9 | 66 |

  14. | 10 | 88 |

  15. +----+------+

  16. 10 rows in set (0.00 sec)

binlog2sql的限制
   mySQL Server必须开启,离线模式下不能解析
优点(对比mysqlbinlog)
   纯python开发,安装与使用都很简单
   自带flashback、no-primary-key解析模式,无需再装补丁
   flashback模式下,更适合闪回实战
   解析为标准SQL,方便理解、调试
   代码容易改造,可以支持更多个性化解析
其实MySQL 还提供了一个参数 sql_safe_updates,该参数将禁止 不带where 条件的delete和update语句。

感谢各位的阅读!关于“MySQL如何恢复误操作”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL如何恢复误操作

本文链接: https://www.lsjlt.com/news/63292.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL如何恢复误操作
    这篇文章给大家分享的是有关MySQL如何恢复误操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。常用的恢复方式2.1 利用备份恢复  使用这种方式的前提必须有最近的备份...
    99+
    2022-10-18
  • Mysql update误操作怎么恢复
    这篇文章主要讲解了“Mysql update误操作怎么恢复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql update误操作怎么恢复”吧...
    99+
    2022-10-18
  • binlog2sql如何实现MySQL误操作的恢复
    小编给大家分享一下binlog2sql如何实现MySQL误操作的恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对于MySQL...
    99+
    2022-10-19
  • MySQL误操作后如何快速恢复数据
    本篇内容主要讲解“MySQL误操作后如何快速恢复数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL误操作后如何快速恢复数据”吧! 传统解法 ...
    99+
    2022-10-18
  • 操作MySQL误删数据库备份该如何恢复
    下文主要给大家带来操作MySQL误删数据库备份该如何恢复,希望这些内容能够带给大家实际用处,这也是我编辑操作MySQL误删数据库备份该如何恢复这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。&nbs...
    99+
    2022-10-18
  • 如何恢复数据库的误操作?
    SQL Server通过备份文件恢复到某个时间点   https://msdn.microsoft.com/zh-cn/library/ms179451.aspx定时快照   https...
    99+
    2022-10-18
  • MySQL 5.6 延迟复制,误操作后的数据库恢复
    MySQL 5.6 支持延迟复制,可以在Slave服务器指定一个延迟的值。默认值为0秒。使用MASTER_DELAY 选项为CHANGE MASTERTO 设置N秒延迟。 1. 下面来实...
    99+
    2022-10-18
  • MySQL -- binlog 操作与恢复
    binlog 开启、查看:> show variables like 'log_bin';   #查看是否开启> set sql_log_bin=1 || set sql_l...
    99+
    2022-10-18
  • MySQL误删数据如何恢复
    如果在 MySQL 中误删了数据,可以通过以下几种方式进行数据恢复: 从备份中恢复数据:如果你有数据库的备份文件,可以将备份中的...
    99+
    2023-10-27
    MySQL
  • mysql数据误删除如何恢复
    如果MySQL数据误删除,可以尝试以下方法恢复:1. 使用备份:如果你有定期备份数据库,可以通过将备份文件还原到误删除之前的状态来恢...
    99+
    2023-10-09
    mysql
  • mysql如何恢复误删的数据
    如果在MySQL数据库中误删了数据,可以通过以下几种方法来尝试恢复数据:1. 使用备份文件:如果你有数据库的备份文件,可以将备份文件...
    99+
    2023-08-11
    mysql
  • MySQL 恢复误删数据
    文章目录 1、查看是否启用 binlog 日志2、查看所有 binlog 日志3、查看正在使用的日志4、查找日志所在文件夹5、log 日志转 sql6、delete 转 insert 恢复误删...
    99+
    2023-09-05
    mysql 数据库
  • SQLServer数据库误操作恢复的方法
    目录前言一、恢复数据实例1.创建初始数据2.保证数据恢复的前提条件3.模拟不小心误操作4.开始恢复二、恢复数据原理1.数据库文件类型2.使用bak恢复数据原理总结参考前言 在日常开发...
    99+
    2023-01-30
    SQLServer数据库恢复 SQLServer 恢复
  • mysql数据库恢复操作指南
    下文给大家带来有关mysql数据库恢复操作指南内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完mysql数据库恢复操作指南你一定会有所收获。1、系统说明:数据库版...
    99+
    2022-10-18
  • Mysql结合备份+binlog恢复误删除操作数据的方法
    小编给大家分享一下Mysql结合备份+binlog恢复误删除操作数据的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!结合备份...
    99+
    2022-10-18
  • MySQL数据库误删恢复
    前言        经常听说删库跑路这真的不只是一句玩笑话,若不小心删除了数据库,事情很严重。你一个不小心可能会给公司删没。建议研发不要直连生成环境,一般的话都会分配账号权限,生产环境的账号尽量是只读,以防你一个不经意给库或表删除。一定...
    99+
    2023-09-02
    数据库 sql
  • MySQL误删库恢复实战
    创建测试库、表 create database test; use test; create table leo (id int,name varchar(10)); 插入数据 insert i...
    99+
    2022-10-18
  • Oracle怎么恢复误操作删除掉的表
    本篇内容主要讲解“Oracle怎么恢复误操作删除掉的表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle怎么恢复误操作删除掉的表”吧! ...
    99+
    2022-10-18
  • mysql误删root后如何恢复root账户
    系统:CentOS release 6.5 (Final)内核:2.6.32-431.el6.x86_64MySQL版本:5.5.28-log Source distribution操作步骤:1.停止mys...
    99+
    2022-10-18
  • MySQL数据库误删除后如何恢复
    这篇文章将为大家详细讲解有关MySQL数据库误删除后如何恢复,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先,要确保mysql开启了binlog日志功能。...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作