返回顶部
首页 > 资讯 > 数据库 >MySQL使用binlog日志做数据恢复的实现
  • 613
分享到

MySQL使用binlog日志做数据恢复的实现

MySQLbinlog日志恢复MySQLbinlog恢复 2022-05-13 13:05:36 613人浏览 安东尼
摘要

Mysql的binlog日志是mysql日志中非常重要的一种日志,记录了数据库所有的DML操作。通过binlog日志我们可以进行数据库的读写分离、数据增量备份以及服务器宕机时的数据恢复。 定期备份固然可以在服务器发生

Mysql的binlog日志mysql日志中非常重要的一种日志,记录了数据库所有的DML操作。通过binlog日志我们可以进行数据库的读写分离、数据增量备份以及服务器宕机时的数据恢复。

定期备份固然可以在服务器发生宕机的时候快速的恢复数据,但传统的全量备份不可能做到实时,所以在发生宕机的时候,也会损伤一部分数据,如果这个时候开启了binlog日志,那么可以通过binlog来对没有做备份的这一阶段损失的数据进行恢复。如果了解Redis的朋友,可能想到了,Redis有两种持久化方式,分别是AOF和RDB。RDB就类似于Mysql的全量复制,AOF就类似于MySQL的binlog。

关于数据的恢复这里在说一点,既然binlog这么好,是不是开启了binlog就不需要定期做备份了呢,不要这样做。为什么呢,因为binlog的数据量非常大,另外就是使用binlog做数据的恢复性能会非常低。因为binlog是对操作的记录,比如某一时刻,我先插入了一条数据,然后将这条数据删除了,本身数据是没了,但有两条操作。如果是全量备份,肯定没有这条数据,如果使用binlog需要执行一条插入和一条删除操作,因此性能和文件大小都是比较大的。

??铝艘欢眩?旅嫠倒赜谑?莼指吹奈侍猓?/p>

在正式开始之前,先来说一说mysql完整备份数据库,以及恢复数据库的方法

备份数据库:

首先我们来创建一个数据库,mytest


create database mytest;

接着我们来创建一张表


use mytest;
create table t1(id int ,name varchar(20));

然后我们插入两条数据


insert into t1 values (1,'xiaoming');
insert into t1 values (2,'xiaohong');

下面我们对mytest数据库进行备份,备份到/root/bakup/


mysqldump -uroot -p -B -F -R -x --master-data=2 mytest | gzip > /root/backup/bak_$(date +%F).sql.gz

参数说明:

-B:指定数据库

-F:刷新日志

-R:备份存储过程等

-x:

--master-data:在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点信息

查看备份文件

这样呢,我们就把数据做了一个完整的备份。下面来删除数据库,然后通过备份数据进行恢复数据库。


gzip -d bakup_xxx.gz
mysql -uroot -p < bakup_xxx.sql

这样我们就把数据导入到库里了。

继续上面的操做,我们新增xiaoli和xiaozhao这两条数据,并把xiaozhao这条记录删除掉。

在删除之前,我们先来刷新binlog日志,生成一个新的日志,那么我们之后所要操做的内容都会被记录到新的日志文件中。(通过前面binlog日志的详细说明我们知道,每次刷新和服务重启的时候,都会生成一个binlog日志文件。)


flush logs;
show master status;

我们注意,binlog的文件是0009,位置是在154,这两个信息很重要

下面我们来做插入和删除操作


这个时候我们应该是来查看一下binlog日志的状态,以便与我们一会来进行恢复到此状态,但是,真正的环境中我们并不知道这个状态,因此这里也就不去查看这个状态了,这个状态的值可以通过后面查看binlog日志文件来进行分析。下面我们开始误操作:

我们来把xiaozhao删除掉

这样数据就删除掉了,下面我们再来查看binlog的状态


show master status;

这个时候我们发现我删除操作是个错误的操作,要进行恢复,那么该如何恢复呢?这个时候我们就可以通过binlog的position来进行恢复。
在进行其他的处理之前,我们建议,马上再执行一次flush logs,也就是让出错的部分就集中在这么一个binlog日志文件中。

我们来查看0009的binlog日志。

我们看到delete_rows 结束点是928这个点,起始点是在755这个点,我们可以把操作的这些数据删除到我们上次备份的内容,然后通过执行binlog来进行恢复,当然恢复到755这个点之前。
比如我上次备份的是整个数据库,我就可以把整个数据库删除,然后通过备份文件恢复,然后再通过binlog做增量恢复。这样数据就回来了。这里就不再进行删库了,我们直接演示使用binlog日志恢复数据的方法

语法如下

mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名

比如我们要把所有的操作都恢复(不包括我们的删除,我们知道删除是在755点上):


mysqlbinlog mysql-bin.000009 --start-position 154 --stop-position 755 | mysql -uroot -p mytest

再来查看表

我们发现xiaozhao又回来了,当然了,这里多了一个xiali,是因为我之前并没有删除备份前的数据。当然了,我们在恢复的过程中可以选择只恢复xiaozhao这么一块内容

下面是binlog日志恢复中一些常用的参数 

--start-datetime:从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间

--stop-datetime:从二进制日志中读取指定小于时间戳或者等于本地计算机的时间 取值和上述一样

--start-position:从二进制日志中读取指定position 事件位置作为开始。

--stop-position:从二进制日志中读取指定position 事件位置作为事件截至

到此这篇关于MySQL使用binlog日志做数据恢复的实现的文章就介绍到这了,更多相关MySQL binlog数据恢复内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL使用binlog日志做数据恢复的实现

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

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

猜你喜欢
  • MySQL使用binlog日志做数据恢复的实现
    MySQL的binlog日志是MySQL日志中非常重要的一种日志,记录了数据库所有的DML操作。通过binlog日志我们可以进行数据库的读写分离、数据增量备份以及服务器宕机时的数据恢复。 定期备份固然可以在服务器发生...
    99+
    2022-05-13
    MySQL binlog日志恢复 MySQL binlog 恢复
  • MySQL使用binlog日志做数据恢复的案例
    这篇文章主要介绍了MySQL使用binlog日志做数据恢复的案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySQL的binlog日志是MySQL日志中非常重要的一种日志...
    99+
    2023-06-14
  • mysql通过binlog日志恢复误删数据
    1、先查看binlog功能是否开启 show variables like '%log_bin%'; log_bin为ON说明可以使用binlog恢复,如果为OFF说明没有开启binlog。 2、删...
    99+
    2023-09-06
    mysql 数据库
  • MySQL中怎么通过binlog日志恢复数据
    本篇文章为大家展示了MySQL中怎么通过binlog日志恢复数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、数据备份操作的前一天晚上进行了日常逻辑备份mysq...
    99+
    2024-04-02
  • Mysql如何通过binlog日志恢复数据详解
    目录前言方法如下总结前言 MySQL的binlog日志是MySQL日志中非常重要的一种日志,记录了数据库所有的DML操作。通过binlog日志我们可以进行数据库的读写分离、数据增量备...
    99+
    2024-04-02
  • MySQL binlog日志恢复数据详细操作步骤
    场景 遇到后台数据批量误删,需要进行数据恢复。 准备 确定需要恢复数据的时间段 2、查看是否开启了binlog (1)终端执行命令,连接mysql mysql -h地址 -P端口号 -u账号 -p 输入密码后回车即可连接成功 (2)执行如...
    99+
    2023-08-17
    数据库 sql mysql
  • windows下mysql中binlog日志分析和数据恢复
    1.首先查看是否开启了binlog show variables like '%log_bin%'; 看到了是没有开启的。 2.开启binlog日志,并重启mysql服务 不能通过命令的方式去打开,因为会提示说这个参数是只读的。如下图: ...
    99+
    2023-08-17
    mysql windows 数据库 binlog 数据恢复
  • MySQL恢复:使用从库备份,主库binlog,从库中继日志恢复数据库
    小生博客:http://xsboke.blog.51cto.com -------谢谢您的参考,如有疑问,欢迎交流 环境说明: mysql主从复制,主库A宕机,将从...
    99+
    2024-04-02
  • 怎么使用mysql binlog恢复数据
    这篇文章主要介绍“怎么使用mysql binlog恢复数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用mysql binlog恢复数据”文章能帮助大家解决问题。如果想通...
    99+
    2023-07-05
  • 结合binlog日志实现对mysqldump备份恢复
    本篇文章给大家主要讲的是关于结合binlog日志实现对mysqldump备份恢复的内容,感兴趣的话就一起来看看这篇文章吧,相信看完结合binlog日志实现对mysqldump备份恢复对大家多少有点参考价值吧...
    99+
    2024-04-02
  • MySQL的binlog如何恢复数据
    小编给大家分享一下MySQL的binlog如何恢复数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. binlogbinlo...
    99+
    2024-04-02
  • MySQL的binlog日志使用详解
    binlog 就是binary log,二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日志我们可以做数据恢复,增量备份,主主复制和主从复制等等。对于开发者可能对binlog并不怎么关注,但...
    99+
    2022-05-25
    MySQL binlog日志使用 MySQL binlog日志
  • MySQL怎么使用二进制日志恢复数据库
    本篇内容主要讲解“MySQL怎么使用二进制日志恢复数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL怎么使用二进制日志恢复数据库”吧!一、二进制日志...
    99+
    2024-04-02
  • mysql5.7使用binlog 恢复数据的方法
    第一步:保证mysql已经开启binlog show variables like '%log_bin%'; log_bin 为 on是开启。 第二步:进入binlog文件目录,找到二进制日志文件 ...
    99+
    2022-05-15
    mysql binlog 恢复数据 mysql 恢复数据
  • MySQL中binlog日志的使用方法
    这篇文章主要介绍MySQL中binlog日志的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!binlog 就是binary log,二进制日志文件,这个文件记录了MySQL所有的DML操作。通过binlog日...
    99+
    2023-06-14
  • 利用MySQL的binlog恢复误删的数据库
    1 查看当前数据库内容并备份数据库 查看数据库信息: 备份数据库: [root@localhost ~]# mysqldump -u root -p t > /mnt/t.sqlEnter pass...
    99+
    2023-09-23
    数据库 mysql sql
  • mysql关闭binlog日志,删除binlog数据(win和linux通用)
    Mysql 关闭 binlog日志进程 打开 mysql 命令窗口,查询 binlog 是否开启   (ON)为开启状态 (OFF)为关闭状态 若开启状态则需要修改配置文件,反之不需要任何操作 show variables like...
    99+
    2023-09-14
    mysql 数据库
  • mysql日志恢复数据的方法是什么
    MySQL的日志恢复数据方法主要有两种:基于二进制日志的恢复和基于事务日志的恢复。1. 基于二进制日志的恢复:- 首先,通过`mys...
    99+
    2023-09-22
    mysql
  • mysql数据库binlog日志的异地备份
        MySQL数据库的二进制日志binlog记录了对数据库的全量DDL和DML操作,对数据库的point to point灾难恢复起着无法替代的关键作用。因此,基...
    99+
    2024-04-02
  • MySQL中如何使用binlog恢复或闪回数据库数据
    不知道大家之前对类似MySQL中如何使用binlog恢复或闪回数据库数据的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL中如何使用binlog恢复或闪回数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作