展开

关键词

Mysql通过binlog恢复数据

正在记录的额文件 > show master status; image-20210615224824688 正在被记录的文件是mysql3306-bin.000008 刷新binlog日志,保存前面完整的操作 > flush logs; 查看binlog日志,找到需要恢复到的位置 > show binlog events in 'mysql3306-bin.000008'; image-20210615225134682 在3927位置,rumenz表被删除,所以我们找到了恢复数据的结束点 恢复数据 查看前面用到的所有日志文件 > shwo master logs; +----------------------+-- -bin.000007 mysql3306-bin.000007 | mysql -uroot -p123456 如果有多个binlog日志文件,需要全部指定上去 如果只恢复指定数据库,如demo数据库 -bin.000007 mysql3306-bin.000007 | mysql -uroot -p123456 相关文章 Mysql中的binlog入门介绍 Mysqlbinlog三种模式

10610

mysql binlog恢复数据实战

数据库备份 数据库恢复的先决条件是,定时备份数据库,缩小binlog恢复范围.首先我们备份测试数据库数据: mysqldump -uroot -p --database test > testBackSql.sql 刷新后,新的binlog用于做恢复数据时的记录, 因为当执行备份文件恢复数据和binlog恢复时,都会产生新的binlog,不要和原来的数据进行冲突.   (如果涉及多个binlog,需要执行多个binlog恢复日志) 通过查询binlog,获取到最后恢复点:  /www/server/mysql/bin/mysqlbinlog /www/server/data 将原有备份数据恢复:  cat testBackSql.sql |mysql -uroot -p ? 备份数据已经恢复了,开始恢复二进制数据. mysql数据恢复成功. 其他 由于时间限制,关于恢复数据中,需要获取到初始恢复位置(也就是备份数据之后的那个位置,可通过--start-datetime=datetime 参数进行定位)

2.1K10
  • 广告
    关闭

    开发者专享福利,1988元优惠券限量发放

    带你体验博客、网盘相册搭建部署、视频渲染、模型训练及语音、文字识别等热门场景。云服务器低至65元/年,GPU15元起

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL基于Binlog的数据恢复实战

    1、环境状态说明 2、恢复流程说明 2.1 正向恢复 2.2 反向恢复 3、数据准备 3.1 查询当前binlog数据状态 3.2 查找恢复position区间 3.3 position点确认 4、操作恢复 4.1 正向恢复 4.1.1 恢复备份数据 4.1.2 恢复binlog日志 4.1.3 检查数据恢复状态 4.2 反向恢复 4.2.1 安装binlog2sql 4.2.2 生成反转 2、恢复流程说明 按照正反两种方式分别进行测试恢复 2.1 正向恢复 主要思路 通过全量备份恢复当日0:00时间点的数据 通过binlog恢复当日0:00-22:00错误语句之前的全部语句 2.2 反向恢复 主要思路 使用binlog2sql从binlog日志中提取错误语句的反向语句 在当前已经执行了错误语句的数据库执行反向语句,将数据恢复至错误语句执行前的状态 3、数据准备 3.1 查询当前binlog 4.2 反向恢复 反向恢复时通过binlog2sql,将错误执行的update语句反转,再update回来 4.2.1 安装binlog2sql 项目地址: https://github.com/danfengcao

    52930

    MySQL】通过SQL_Thread快速恢复binlog

    将数据库回档至指定时间点或位置,常常是使用全量备份+binlog增量实现的。 而数据量很大的情况下,增量恢复binlog一直是一个苦恼的问题。 因为恢复binlog速度十分慢,并且容易出错。 以下所有框可左右滑动 建议横屏阅读 常见binlog增量恢复方式 先解析成sql文件,再导入MySQL mysqlbinlog mysql-bin.000001 --start-position=n > 通过sql_thread恢复 处理思路: 1)重新初始化一个实例,恢复全量备份文件。 2)找到第一个binlog文件的position,和剩下所有的binlogbinlog恢复。 该测试使用的版本为:MySQL 5.7.16 效果: 快速恢复到指定位置点,即通过全备文件+binlog恢复到故障前的最后一个position。

    54651

    Mysqlbinlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的。在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 这可以根据前面提到的mysql-bin.000003的新binlog日志进行恢复。 8) 从binlog日志恢复数据 恢复命令的语法格式: mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名 -------------------- /mysql-bin.000003 | /usr/bin/mysql -uroot -p123456 -v ops c2) 单独恢复 name='小二' 这步操作,可这样: 按照binlog日志区间单独恢复 总结: 所谓恢复,就是让mysql将保存在binlog日志中指定段落区间的sql语句逐个重新执行一次而已。

    1.3K80

    通过MySQL relaylog + SQL_Thread 增量恢复binlog

    而数据量很大的情况下,增量恢复binlog一直是一个苦恼的问题,因为恢复binlog速度十分慢,并且容易出错。 恢复binlog文件一般有两种方法: 〇 先解析成sql文件,再导入MySQL mysqlbinlog mysql-bin.000001 --start-position=n > /data/add.sql 〇 处理思路:     1)重新初始化一个实例,恢复全量备份文件。     2)找到第一个binlog文件的position,和剩下所有的binlog。      5.7.16 效果:恢复全备文件+binlog恢复到故障前的最后一个position。 并且在需要增量的binlog文件越大的情况下,效果越明显。 〇 优点:     可以断点恢复,人为控制进度,比如stop slave或者遇到错误时,可以断点恢复

    76620

    Mysql 通过全量备份和binlog恢复整体数据

    某天工作时间,一个二货犯晕登错生产当测试环境了,直接drop了一个数据库,需要紧急恢复!可利用备份的数据文件以及增量的 binlog 文件进行数据恢复。 具体思路归纳几点: 1、恢复条件为 MySQL 要开启 binlog 日志功能,并且要全备和增量的所有数据。 2、恢复时建议对外停止更新,即禁止更新数据库。 .sql 8.检查并移动binlog文件,并导出为 SQL 文件剔除其中的 drop 语句,查看 MySQL 的数据存放目录, 由下面可知是在/mysql_data下,将 binlog 文件导出SQL文件 /home/mysql/mysql5/bin/mysqlbinlog --no-defaults /tmp/mysql-bin.000004 > /tmp/04.sql 注意:在恢复全备数据之前必须将该 binlog文件移出,否则恢复过程中,会继续写入语句到 binlog,最终导致增量恢复数据部分变得比较混乱。

    2.6K70

    Mysql误删,恢复数据,binlog闪回,宝塔面板

    传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog恢复数据。 此法费时费力,甚至需要停机维护,并不适合快速回滚。 也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。 MySQL闪回(flashback)利用binlog直接进行回滚,能快速恢复且不用停机。 本文将简单进行mysql根据binlog闪回数据的实战测试 基础知识准备 binlog是二进制日志文件,用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复 所以有这种根据binlog得到执行sql语句、闪回sql语句,我们只需要利用根据分析binlog,然后就可以找到准确的数据改动sql,并得到闪回sql,检查无误后执行就可以恢复数据了 准备工作 我们采用 = /var/log/mysql/mysql-bin.log max_binlog_size = 1G binlog_format = row binlog_row_image = full 在宝塔面板中

    1.8K20

    基于binlog二进制日志的MySQL恢复笔记

    基于binlog二进制日志的MySQL恢复笔记 刚好复习到这里,顺手做个小实验,记录下。 step3、执行全备份恢复 mysql -e 'source /root/backup.sql;' step4、用二进制日志恢复今天的修改  mysql -e 'source /root/today.sql ;' step5、登录mysql,验证数据是否回来了。 step3、用全备份backup.sql恢复数据: mysql -e 'source backup.sql;' 恢复完的效果如下: MariaDB [hellodb]> select * from step4、继续用二进制日志恢复mysql -e 'source today.sql;' step5、查看恢复后的结果: 恢复完的效果如下: MariaDB [hellodb]> select *

    26230

    MySQL binlog

    作用主要有: 复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves并回放来达到master-slave数据一致的目的 数据恢复:通过mysqlbinlog 工具恢复数据 增量备份 2、binlog的数据格式 MySQL Replication 复制可以是基于一条语句 (Statement Level) ,也可以是基于一条记录 (Row Level),可以在 .000001 ## 或者,远程读取 binlog 文件 $ mysqlbinlog -R -hIP -uNAME -pPASSWORD mysql-bin.000001 恢复数据 #基于时间点恢复: .000001 | mysql -uroot -p123456 # 基于时间点恢复: $ mysqlbinlog --start-position= 428 --stop-position=671 日志; mysql> flush logs; #重置(清空)所有binlog日志 mysql> reset master; #删除指定日期以前的日志索引中binlog日志文件 mysql> purge

    72050

    MySQL通过binlog快速恢复数据

    1.背景 MySQL一旦误删数据库之后恢复数据很麻烦,这里记录一下艰辛的恢复过程。 2.方法 2.1首先在MySQL中查看是否打开bin目录 mysql> show variables like 'log_%'; 这里可以看到log_bin是ON的状态,恢复有望。 2.2显示当前主分支的状态 mysql> show master status; 可以看到binlog文件已经排到17号了 2.3显示mysql-bin.000001文件 mysql> show binlog events in 'mysql-bin.000001'; 2.4在MySQL的data目录下打开cmd,选择开始节点和结束节点的数据,并且存放到E盘下的update.sql中 mysqlbinlog 2.5在MySQL中导入数据,执行以下命令即可 mysql> source e:update.sql;

    22730

    【删库跑路】使用Binlog日志恢复误删的MySQL数据

    开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你能够了解到: MySQLbinlog日志是什么?通常是用来干什么的? 模拟一次误删数据的操作,并且使用binlog日志恢复误删的数据。 写这篇文章的初衷,是有一次我真的险些把测试数据库的一张表给删除了,当时吓出一身冷汗。 看了上面binlog的定义,大家也应该能大致推理出binlog的三大用途: 恢复数据:今天要说的重点 数据库复制:主从数据库是通过将binlog传给从库,从库有两个线程,一个I/O线程,一个SQL线程, 所以说,想要能够恢复数据,首先,你得打开Mysqlbinlog,在平常你自己安装的单机Mysql中,默认情况下不会开启。下面就一步步地实践下如何开启你服务器上的Binlog日志。 当然,看完binlog日志恢复数据的原理,希望大家以后在定期备份数据库的脚本里,也能够加上刷新binlog日志的命令,这样一旦某天丢失数据,可以将当天binlog数据单独拿出来还原,做到清晰可辨,也加快恢复效率

    1.2K20

    使用binlog2sql针对mysql进行数据恢复

    MySQL闪回原理与实战 DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚。传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog恢复数据。 也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能。 MySQL闪回(flashback)利用binlog直接进行回滚,能快速恢复且不用停机。 闪回原理 binlog概述 MySQL binlog以event的形式,记录了MySQL server从启用binlog以来所有的变更信息,能够帮助重现这之间的所有变化。 MySQL引入binlog主要有两个目的:一是为了主从复制;二是某些备份还原操作后需要重新应用binlog。 Empty set (0.00 sec) 恢复数据步骤: 登录mysql,查看目前的binlog文件 mysql> show master status; +------------------+

    36940

    MySQL利用binlog恢复误操作数据(Python脚本)

    方法一、利用最近的全量备份+增量binlog备份,恢复到误操作之前的状态,但是随着数据量的增大,binlog的增多,恢复起来很费时。 说明: 0、前提是binlog的格式为row 1、要恢复的表操作前后表结构没有发生变更,否则脚本无法解析 2、只生成DML(insert/update/delete)的rollback语句 3、最终生成的 SQL是逆序的,所以最新的DML会生成在输入文件的最前面,并且带上了时间戳和偏移点,方便查找目标 4、需要提供一个连接MySQL的只读用户,主要是为了获取表结构 5、如果binlog过大,建议带上时间范围 ,也可以指定只恢复某个库的SQL 6、SQL生成后,请务必在测试环境上测试恢复后再应用到线上 (备注:获取实验中的Python脚本,请关注公众号(DBA的辛酸事儿)或扫描文末二维码,后台恢复binlog_rollback /mysql_3306/log/mysql3306.000006 /*!

    30330

    ROW 格式binlogMySQL5.6上的数据恢复实验

    ROW 格式的binlogMySQL5.6上的数据恢复实验 5.6和5.7版本的MySQL,有个参数binlog_row_p_w_picpath,默认值为FULL,表示记录的是全部的binlog操作日志  stop step4 导出相关的binlog cd /data/mysql 看下最近的binlog文件,假如我这里看到的是 mysql.0000010 这个文件。 */; step5 准备恢复的数据 mysqlbinlog mysql.000010 --stop-position=662771 > /root/22.sql                                                       # 导出step2中的那个正常的INSERT操作及其后面的全部SQL操作 step6 开始恢复数据 /etc/init.d/mysql start  mysql < /root/all.sql  mysql < /root/22.sql mysql < /root/33.sql mysql < /root/44.sql step7 检查恢复后结果 >

    51640

    MySQL的XtraBackup进行备份和恢复(全备+增备+binlog)

    XtraBackup的全备份+XtraBackup增量备份+binlog日志进行恢复最新数据。也可以恢复误操作。 ,保留原来的binlog二进制文件,用于恢复最新数据。 四个增备份表和全备份的数据都恢复完成! 到目前为止已经把备份数据恢复完成了。但是还没有当天数据库产生的最新数据,要恢复当天的数据,要使用binlog恢复。 7.1恢复当天最新的数据,要利用binlog日志恢复。 可以先flush logs ,然后把最新的binlog文件恢复

    4.6K20

    通过binlog日志恢复表记录

    1 使用binlog日志 1.1 问题 利用binlog恢复库表,要求如下: 启用binlog日志 创建db1库tb1表,插入3条记录 删除tb1表中刚插入的3条记录 使用mysqlbinlog恢复删除的 //在Mysql5.7中,binlog日志格式默认为ROW,但它不记录sql语句上下文相关信息。 [root@dbsvr1 ~]# systemctl  restart mysqld.service 2)确认binlog日志文件 新启用binlog后,每次启动MySQl服务都会新生成一份日志文件: (0.00 sec) 步骤三:通过binlog日志恢复表记录 binlog会记录所有的数据库、表更改操作,所以可在必要的时候重新执行以前做过的一部分数据操作,但对于启用binlog之前已经存在的库、表数据将不适用 /mysql-bin.000002 | mysql -u root -p Enter password:                                    //验证口令 3)确认恢复结果

    8110

    Mysql binlog解析

    mysql binlog解析 5.6为例 1 binlog解析(fmt=row) logbin打开,找到路径 mysql> show global variables like 'log_bin' *********** File: mysql-bin.000238 Position: 12345678 Binlog_Do_DB: Binlog_Ignore_DB --+ | id | info | +----+------+ | 2 | c | +----+------+ 直接查看内容 (注意没有看到原始SQL) mysql> show binlog events 解析带有可执行SQL(需要检索出SQL) mysql> set binlog_rows_query_log_events=1; Query OK, 0 rows affected (0.00 sec) 必要参数 [mysqld] server_id = 1 log_bin = /var/log/mysql/mysql-bin.log max_binlog_size = 1G binlog_format

    13330

    MySQL -- 关闭 binlog

    LNMP一键安装包安装的MySQL默认是开启了日志文件的,如果数据操作比较频繁就会产生大量的日志,在/usr/local/mysql /var/下面产生mysql-bin.0000* 类似的文件,而且一般都在几十 MB到几个GB,更甚会吃掉整个硬盘空间,从来导致mysql无法启动或报错,如vps论坛用户的反馈。 如何关闭MySQL的日志功能: 在cmd下进到mysql下的bin目录下,输入mysql -u root -p然后输入密码,成功进去后输入 reset master。 : 修改/etc/my.cnf 文件,找到 log-bin=mysql-bin binlog_format=mixed 再这两行前面加上#,将其注释掉,再执行/etc/init.d/mysql restart 本文以LNMP一件安装包安装的环境为例 除MySQL重启命令和配置文件路径可能略有不同,其他一样。

    3.9K31

    相关产品

    • 云数据库 MySQL

      云数据库 MySQL

      腾讯云数据库MySQL是一种高性能、高可靠、高安全、可灵活伸缩的数据库托管服务,其不仅经济实惠,而且提供备份回档、监控、快速扩容、数据传输等数据库运维全套解决方案,为您简化 IT 运维工作,让您能更加专注于业务发展。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券