返回顶部
首页 > 资讯 > 数据库 >利用Mysqlbinlog日志恢复数据库数据的操作指引
  • 838
分享到

利用Mysqlbinlog日志恢复数据库数据的操作指引

2024-04-02 19:04:59 838人浏览 独家记忆
摘要

下文给大家带来关于利用Mysqlbinlog日志恢复数据库数据的操作指引,感兴趣的话就一起来看看这篇文章吧,相信看完利用mysqlbinlog日志恢复数据库数据的操作指引对大家多少有点帮助吧。一、开启mys

下文给大家带来关于利用Mysqlbinlog日志恢复数据库数据的操作指引,感兴趣的话就一起来看看这篇文章吧,相信看完利用mysqlbinlog日志恢复数据库数据的操作指引对大家多少有点帮助吧。

一、开启mysql-binlog日志

在mysql配置文件my.cnf加上如下配置

[mysqld]

log-bin=mysql-bin

binlog_do_db=bin_test


重启mysql

service mysqld restart


二、备份数据库


1)先查看一下当前数据库情况及binlog日志情况:

mysql> show databases;

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

| Database |

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

| infORMation_schema |

| mysql |

| test |

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

3 rows in set (0.00 sec)


mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000001 | 106 | bin_test | |

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

1 row in set (0.00 sec)


2)创建库及数据:bin_test


mysql> create database bin_test;

Query OK, 1 row affected (0.00 sec)


mysql> use bin_test;

Database changed

mysql> create table abc(id int(10) primary key auto_increment,name varchar(255));

Query OK, 0 rows affected (0.00 sec)


mysql> insert into abc(name) value('zhangsan');

Query OK, 1 row affected (0.00 sec)


mysql> insert into abc(name) value('lisi');

Query OK, 1 row affected (0.00 sec)


mysql> insert into abc(name) value('wangwu');

Query OK, 1 row affected (0.00 sec)


mysql> select * from abc;

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

| id | name |

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

| 1 | zhangsan |

| 2 | lisi |

| 3 | wangwu |

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

3 rows in set (0.00 sec)


3)备份数据到/tmp/test.sql


[root@localhost ~]# whereis mysqldump

mysqldump: /usr/bin/mysqldump /usr/share/man/man1/mysqldump.1.gz

[root@localhost ~]# /usr/bin/mysqldump -uroot -p123456 bin_test > /tmp/test.sql


4)查看下binlog日志情况:


mysql> show binlog events in 'mysql-bin.000001';

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

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

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

| mysql-bin.000001 | 4 | Format_desc | 1 | 106 | Server ver: 5.1.73-log, Binlog ver: 4 |

| mysql-bin.000001 | 106 | Query | 1 | 197 | create database bin_test |

| mysql-bin.000001 | 197 | Query | 1 | 337 | use `bin_test`; create table abc(id int(10) primary key auto_increment,name varchar(255)) |

| mysql-bin.000001 | 337 | Intvar | 1 | 365 | INSERT_ID=1 |

| mysql-bin.000001 | 365 | Query | 1 | 471 | use `bin_test`; insert into abc(name) value('zhangsan') |

| mysql-bin.000001 | 471 | Intvar | 1 | 499 | INSERT_ID=2 |

| mysql-bin.000001 | 499 | Query | 1 | 601 | use `bin_test`; insert into abc(name) value('lisi') |

| mysql-bin.000001 | 601 | Intvar | 1 | 629 | INSERT_ID=3 |

| mysql-bin.000001 | 629 | Query | 1 | 733 | use `bin_test`; insert into abc(name) value('wangwu') |

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

9 rows in set (0.00 sec)


三、这时模拟误操作(删除数据库)


此时突然数据库损坏或者人为删除


mysql> drop database bin_test;


Query OK, 1 row affected (0.00 sec)


mysql> show databases;

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

| Database |

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

| information_schema |

| mysql |

| test |

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

3 rows in set (0.00 sec)


再查看下binlog日志有没有记录删库的操作:


mysql> show binlog events in "mysql-bin.000001";

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

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

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

| mysql-bin.000001 | 4 | Format_desc | 1 | 106 | Server ver: 5.1.73-log, Binlog ver: 4 |

| mysql-bin.000001 | 106 | Query | 1 | 197 | create database bin_test |

| mysql-bin.000001 | 197 | Query | 1 | 337 | use `bin_test`; create table abc(id int(10) primary key auto_increment,name varchar(255)) |

| mysql-bin.000001 | 337 | Intvar | 1 | 365 | INSERT_ID=1 |

| mysql-bin.000001 | 365 | Query | 1 | 471 | use `bin_test`; insert into abc(name) value('zhangsan') |

| mysql-bin.000001 | 471 | Intvar | 1 | 499 | INSERT_ID=2 |

| mysql-bin.000001 | 499 | Query | 1 | 601 | use `bin_test`; insert into abc(name) value('lisi') |

| mysql-bin.000001 | 601 | Intvar | 1 | 629 | INSERT_ID=3 |

| mysql-bin.000001 | 629 | Query | 1 | 733 | use `bin_test`; insert into abc(name) value('wangwu') |

| mysql-bin.000001 | 733 | Query | 1 | 822 | drop database bin_test |

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

10 rows in set (0.00 sec)


可以看到第20条的操作为删除数据库的操作。


四、此时数据库已经被完全破坏


1)使用mysqlbinlog命令进行恢复;首先在恢复前要确认正确的position起始值与终止值:

mysql> show binlog events in "mysql-bin.000001";

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

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

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

| mysql-bin.000001 | 4 | Format_desc | 1 | 106 | Server ver: 5.1.73-log, Binlog ver: 4 |

| mysql-bin.000001 | 106 | Query | 1 | 197 | create database bin_test |

| mysql-bin.000001 | 197 | Query | 1 | 337 | use `bin_test`; create table abc(id int(10) primary key auto_increment,name varchar(255)) |

| mysql-bin.000001 | 337 | Intvar | 1 | 365 | INSERT_ID=1 |

| mysql-bin.000001 | 365 | Query | 1 | 471 | use `bin_test`; insert into abc(name) value('zhangsan') |

| mysql-bin.000001 | 471 | Intvar | 1 | 499 | INSERT_ID=2 |

| mysql-bin.000001 | 499 | Query | 1 | 601 | use `bin_test`; insert into abc(name) value('lisi') |

| mysql-bin.000001 | 601 | Intvar | 1 | 629 | INSERT_ID=3 |

| mysql-bin.000001 | 629 | Query | 1 | 733 | use `bin_test`; insert into abc(name) value('wangwu') |

| mysql-bin.000001 | 733 | Query | 1 | 822 | drop database bin_test |

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

10 rows in set (0.00 sec)


此时我们已经确认“起始值”为创建库时的起始:106;"终止值"为drop库时的前一句的结束:733


2)使用mysqlbinlog进行恢复:

mysqlbinlog --no-defaults --start-position="106" --stop-position="733" /var/lib/mysql/mysql-bin.000001 |mysql -uroot -p

Enter passWord:


3)查看下数据是否恢复成功:


11mysql> show databases;

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

| Database |

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

| information_schema |

| bin_test |

| mysql |

| test |

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

4 rows in set (0.00 sec)


11mysql> select * from bin_test.abc;

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

| id | name |

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

| 1 | zhangsan |

| 2 | lisi |

| 3 | wangwu |

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

3 rows in set (0.00 sec)


3)恢复成功


总结】:mysql备份和bin-log日志


备份数据:

mysqldump -uroot -p123456 bin_test -l -F '/tmp/test.sql'

-l:读(只能读取,不能更新)

-F:即flush logs,可以重新生成新的日志文件,当然包括log-bin日志


查看binlog日志:

mysql>show master status

如果数据较多,先导入之前备份数据:


mysql -uroot -p123456 bin_test -v -f </tmp/test.sql

-v查看导入的详细信息

-f是当中间遇到错误时,可以skip过去,继续执行下面的语句


恢复binlog-file二进制日志文件:

mysqlbinlog --no-defaults binlog-file | mysql -uroot -p123456


从某一(567)点开始恢复:

mysqlbinlog --no-defaults --start-position="567" mysql-bin.000001| mysql -uroot -p123456 test


先查好那一点(用more来查看)

[root@localhost mysql]# /usr/bin/mysqlbinlog --no-defaults mysql-bin.000001 --start-position="794" --stop-position="1055" | more


然后恢复:

[root@localhost mysql]# /usr/bin/mysqlbinlog --no-defaults mysql-bin.000001 --start-position="794" --stop-position="1055" | /usr/bin/mysql -uroot -p123456 test


重置binlog日志

mysql> reset master;

Query OK, 0 rows affected (0.01 sec)


mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000001 | 106 | | |

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

mysql> flush logs;#关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。 

看了以上关于利用Mysqlbinlog日志恢复数据库数据的操作指引详细内容,是否有所收获。如果想要了解更多相关,可以继续关注我们的数据库板块。

您可能感兴趣的文档:

--结束END--

本文标题: 利用Mysqlbinlog日志恢复数据库数据的操作指引

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

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

猜你喜欢
  • 利用Mysqlbinlog日志恢复数据库数据的操作指引
    下文给大家带来关于利用Mysqlbinlog日志恢复数据库数据的操作指引,感兴趣的话就一起来看看这篇文章吧,相信看完利用Mysqlbinlog日志恢复数据库数据的操作指引对大家多少有点帮助吧。一、开启mys...
    99+
    2024-04-02
  • 使用mysqlbinlog恢复数据具体操作
    下文我给大家简单讲讲关于使用mysqlbinlog恢复数据具体操作,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完使用mysqlbinlog恢复数据具体操作对大家多少有点帮助吧...
    99+
    2024-04-02
  • mysql数据库恢复操作指南
    下文给大家带来有关mysql数据库恢复操作指南内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完mysql数据库恢复操作指南你一定会有所收获。1、系统说明:数据库版...
    99+
    2024-04-02
  • MySQL binlog日志恢复数据详细操作步骤
    场景 遇到后台数据批量误删,需要进行数据恢复。 准备 确定需要恢复数据的时间段 2、查看是否开启了binlog (1)终端执行命令,连接mysql mysql -h地址 -P端口号 -u账号 -p 输入密码后回车即可连接成功 (2)执行如...
    99+
    2023-08-17
    数据库 sql mysql
  • 删除sqlserver数据库日志和没有日志的数据库的恢复办法
    这篇文章将为大家详细讲解有关删除sqlserver数据库日志和没有日志的数据库的恢复办法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、删除数据库日志文件...
    99+
    2024-04-02
  • Oracle数据库备份与恢复操作指南
    Oracle数据库备份与恢复操作指南 一、备份 使用RMAN备份整个数据库 RMAN是Oracle提供的用于备份和恢复数据库的管理工具,使用RMAN可以备份整个数据库,包括数据文件、控...
    99+
    2024-03-02
    oracle 恢复 备份
  • mysql利用mysqlbinlog命令恢复误删除数据的实现
    实验环境: MYSQL 5.7.22  开启二进志日志 日志格式MIXED 实验过程: 执行:FLUSH LOGS; master-bin.000014 文件就是新生成的文件 刷新日志是为了实验内容更直...
    99+
    2022-05-23
    mysql mysqlbinlog恢复误删除 mysql mysqlbinlog 误删除
  • 如何恢复数据库的误操作?
    SQL Server通过备份文件恢复到某个时间点   https://msdn.microsoft.com/zh-cn/library/ms179451.aspx定时快照   https...
    99+
    2024-04-02
  • mysql数据库mysqlbinlog二进制日志文件挖掘
    点击(此处)折叠或打开 ...
    99+
    2024-04-02
  • 阿里云日志恢复数据库怎么弄
    简介 在使用阿里云数据库时,有时候可能会遇到数据库崩溃或者误删除的情况,这时候就需要进行数据库的日志恢复。本文将介绍如何在阿里云上进行日志恢复数据库的操作步骤。步骤一:备份数据库在进行日志恢复之前,首先需要备份数据库。可以通过阿里云提供的备...
    99+
    2024-01-31
    阿里 怎么弄 数据库
  • SQLServer数据库误操作恢复的方法
    目录前言一、恢复数据实例1.创建初始数据2.保证数据恢复的前提条件3.模拟不小心误操作4.开始恢复二、恢复数据原理1.数据库文件类型2.使用bak恢复数据原理总结参考前言 在日常开发...
    99+
    2023-01-30
    SQLServer数据库恢复 SQLServer 恢复
  • 数据库日志的神奇世界:探索数据追溯和恢复
    日志类型的概述 数据库日志有多种类型,每种类型都记录不同类型的操作。最常见的类型包括: 重做日志 (REDO):记录对数据库所做的数据更改,允许在系统崩溃或数据丢失后重新应用这些更改。 回滚日志 (UNDO):记录数据的原始状态,允许在...
    99+
    2024-04-02
  • MySQL怎么使用二进制日志恢复数据库
    本篇内容主要讲解“MySQL怎么使用二进制日志恢复数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL怎么使用二进制日志恢复数据库”吧!一、二进制日志...
    99+
    2024-04-02
  • 使用DPM 2010恢复Exchange 2010数据库数据操作实例
    目录一、新建恢复数据库... 2二、恢复某个用户邮件... 3三、恢复用户邮件... 10一、新建恢复数据库以管理员身份用登录具有邮箱服务器角色的服务器使用Exchange 2010 Powershell用...
    99+
    2024-04-02
  • oracle数据库操作日志在哪里看
    oracle 数据库提供了以下方法进行操作日志查看:redo 日志: 提供对已提交事务的即时视图。归档日志: redo 日志的备份,用于恢复覆盖的日志文件。审计日志: 记录特定用户执行的...
    99+
    2024-05-13
    oracle
  • MySQL恢复:使用从库备份,主库binlog,从库中继日志恢复数据库
    小生博客:http://xsboke.blog.51cto.com -------谢谢您的参考,如有疑问,欢迎交流 环境说明: mysql主从复制,主库A宕机,将从...
    99+
    2024-04-02
  • 利用Python操作MongoDB数据库的详细指南
    目录前言1 连接数据库1.1 安装PyMongo1.2 连接数据库1.3 连接库与集合2 MongoDB命令在python中的对应方法3 插入数据到MongoDB基本语法被插入的数据格式说明举例4 从MongoDB中查询...
    99+
    2022-06-24
    python操作mongodb数据库 python读取数据库数据 python 操作mongodb
  • 怎么通过日志恢复MSSQL数据
    这篇文章将为大家详细讲解有关怎么通过日志恢复MSSQL数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、建立数据库和测试表 create da...
    99+
    2024-04-02
  • sql日志文件如何恢复数据
    要恢复数据,您可以在 SQL Server Management Studio 中执行以下步骤: 打开 SQL Server Ma...
    99+
    2024-04-22
    sql
  • MySQL使用binlog日志做数据恢复的实现
    MySQL的binlog日志是MySQL日志中非常重要的一种日志,记录了数据库所有的DML操作。通过binlog日志我们可以进行数据库的读写分离、数据增量备份以及服务器宕机时的数据恢复。 定期备份固然可以在服务器发生...
    99+
    2022-05-13
    MySQL binlog日志恢复 MySQL binlog 恢复
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作