DU MySQL Binlog Restore ,自动解析出已被删除、被破坏的残缺binlog碎片-2020.11.15

使用场景

场景一

binlog文件默认保存7天,因误删数据,需要用7天前的binlog恢复数据

场景二

binlog文件被损坏,mysqlbinlog解析时报错,不能解析出完整的binlog sql

工作原理

  • 文件恢复工具,难以恢复被删除、部分覆盖的binlog文件。原因是binlog是动态增长的,在磁盘上碎片化保存,被删后很容易被覆盖导致不完整。
  • binlog文件较大,就算被删除,磁盘上仍有大量binlog碎片,解析出这些binlog碎片,仍能挽回很多数据。
  • DU MySQL Binlog Restore 支持从磁盘、分区、磁盘镜像文件、残缺的binlog文件中,解析出所有未被覆盖的binlog碎片,并转换为sql语句,同时按sql语句的时间戳,自动排序所有sql,保证用户可以按正确的顺序导入sql。
  • 另外,DU MySQL Binlog Restore对数据源是只读方式打开的,以防止破坏原始数据:
    在这里插入图片描述

以下分别演示windows和linux环境下的恢复步骤

Windows服务器恢复示例

  1. 下载DU_MySQL_BinLog_Restore.exe
    在这里插入图片描述
  2. 运行DU_MySQL_BinLog_Restore.exe
  • 如果binlog源为文件(如binlog文件、磁盘镜像、分区镜像等),则可以普通用户运行。
  • 如果binlog源为裸磁盘、分区,则必须以管理员身份运行工具。
    注意:勿将DU_MySQL_BinLog_Restore放在数据源分区运行,以免输出文件覆盖原始数据!
    在这里插入图片描述
  1. 输入数据源
  • 如果数据源是分区,则可直接输入a-z的盘符
  • 如果数据源是磁盘,则可直接输入0-9的磁盘序号(请参考磁盘管理器中的盘序)
  • 如果数据源是文件,则可直接将文件拖入cmd窗口(注意文件必须保存在英文路径下,且无空格)
    以下示例扫描test文件,显示all binlog event数量后,表示扫描完成:
    在这里插入图片描述
  1. 查看扫描结果
    完成后在运行目录创建RESTORE_FILE目录,RESTORE_FILE下生成4个文件:
  • sql.tmp----临时乱序sql文件
  • sql.map----sql排序缓存
  • binlog.sql----已排序的输出sql文件,可导入mysql数据库
  • search.log----扫描日志

在这里插入图片描述

在这里插入图片描述

  1. 导入sql数据
  • 从完整binlog导出的sql,一般会有建库、建表的语句,可直接导入;
  • 从不完整的磁盘中扫描binlog碎片,不一定有建库、建表的语句,这种情况需要管理员判断是否要手动建库、建表,再导入sql数据。
  • 另外,DU_MySQL_BinLog_Restore导出的sql都带 USE xxxdb 显式指定数据库,如导入报错,可以用EmEditor / Notepadd+ 等工具批量删除之。

Linux服务器恢复示例

  1. 上传 DU_MySQL_BinLog_Restore_Linux 到 Linux 。注意不要上传到mysql data 目录所在的同一分区; 如果 Linux 服务器只有一个分区,且估计 binlog 大小不超过内存容量的50%,则可将工具上传到 /dev/shm 目录。 /dev/shm是内存虚拟目录,写入数据在内存中不落盘,系统重启后/dev/shm 自动清空。
  2. 给执行权限
chmod 777 DU_MySQL_BinLog_Restore_Linux

在这里插入图片描述
3. 运行工具,扫描mysql data 目录所在的分区。以下示例扫描/dev/sda3,请按实际情况指定源路径!

sudo ./DU_MySQL_BinLog_Restore_Linux -s /dev/sda3

在这里插入图片描述

  1. 下载binlogfile到windows上
    在这里插入图片描述
  2. 运行DU_MySQL_BinLog_Restore.exe解析binlog.sql
    config.ini中配置参数:LINUX_BINLOG=1
    在这里插入图片描述运行DU_MySQL_BinLog_Restore.exe,将binlogfile直接拖入cmd窗口开始解析:
    运行DU_MySQL_BinLog_Restore.exeRESTORE_FILE下解析出binlog.sql:
    在这里插入图片描述

版本差异

在这里插入图片描述

下载地址

DU_MySQL_Binlog_Restore_v2.3_2020-11-17.zip

链接:https://pan.baidu.com/s/1AU7c0gsN0uxo1yCaR9NLBQ
提取码:n6sr

最新版本可联系作者QQ 568229095

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很好,这是一个关于使用Kafka和MySQLBinlog实时同步数据到SQL Server的指南。以下是我对此的简要概述: 首先,你需要在MySQL数据库中启用Binlog日志。这可以通过修改MySQL配置文件来完成。确保在MySQL的配置文件(my.cnf)中添加以下行: ``` log-bin=mysql-bin binlog-format=ROW ``` 接下来,你需要编写一个Java程序,它将监听MySQL Binlog,并使用Kafka将数据发送到另一个应用程序,该应用程序将数据写入SQL Server。你可以使用Debezium来监听MySQL Binlog,并将数据发送到Kafka。 在你的Spring Boot项目中添加Debezium依赖: ```xml <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-core</artifactId> <version>1.5.0.Final</version> </dependency> ``` 然后配置Debezium连接到MySQL: ```properties debezium.connector.name=mysql-connector debezium.connector.class=io.debezium.connector.mysql.MySqlConnector debezium.tasks.max=1 debezium.offset.storage=org.apache.kafka.connect.storage.FileOffsetBackingStore debezium.offset.storage.file.filename=/path/to/offset/file.dat debezium.offset.flush.interval.ms=60000 debezium.database.hostname=localhost debezium.database.port=3306 debezium.database.user=mysqluser debezium.database.password=mysqlpassword debezium.database.server.id=1 debezium.database.server.name=mysql1 debezium.database.history.kafka.bootstrap.servers=localhost:9092 debezium.database.history.kafka.topic=schema-changes.mysql debezium.table.whitelist=mydatabase.* ``` 这将使Debezium监听MySQL数据库中的所有表更改,并将更改发送到Kafka主题“mydatabase”。你可以在你的应用程序中消费主题,将数据写入SQL Server。 希望这能帮助到你开始实现这个功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据恢复专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值