利用mysql-binlog恢复数据

1、数据准备

1、数据如下:共28条记录

在这里插入图片描述

2、模拟删除:DELETE FROM sys_dict_data WHERE dict_type=‘sys_oper_type’

在这里插入图片描述

2、使用binlog恢复数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

binlog内容查看

1、使用show binlog events:不怎么友好,可以参考第二种

在这里插入图片描述

2、使用 mysqlbinlog

1、通过binlog获取内容并输出到文件

-d: 根据数据库的名称筛选日志
-o:跳过前N行日志
-r, --result-fil: 把日志输出到指定文件
–start-datetime: 读取指定时间之后的日志,时间格式:yyyy-MM-dd HH:mm:ss
–stop-datetime: 读取指定时间之前的日志,时间格式:yyyy-MM-dd HH:mm:ss
–start-position: 从指定位置开始读取日志
–stop-position: 读取到指定位置停止
–base64-output:在row格式下,显示伪sql语句
-v, --verbose:显示伪sql语句,-vv可以为sql语句添加备注

在这里插入图片描述

2、通过查看sql,反解析出insert的sql语句进行恢复

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 使用Python my-replication读取MySQL binlog可以使用Python第三方库`pymysqlreplication`。 你需要先安装这个库,可以使用命令`pip install pymysqlreplication`进行安装。 然后,你可以使用以下代码读取MySQL binlog: ``` from pymysqlreplication import BinLogStreamReader # 创建BinLogStreamReader对象 stream = BinLogStreamReader( connection_settings = { "host": "localhost", "port": 3306, "user": "root", "passwd": "password" }, server_id=100, blocking=True, only_events=[DeleteRowsEvent, WriteRowsEvent, UpdateRowsEvent] ) # 循环读取事件 for binlogevent in stream: event_type = binlogevent.event_type if event_type == "write_rows": # 处理insert操作 pass elif event_type == "update_rows": # 处理update操作 pass elif event_type == "delete_rows": # 处理delete操作 pass # 关闭BinLogStreamReader stream.close() ``` 在上面的代码中,我们只读取了`DeleteRowsEvent`、`WriteRowsEvent`和`UpdateRowsEvent`三种事件,你也可以根据需要选择性的读取其他事件。 ### 回答2: 利用Python的my-replication库可以轻松地读取MySQLbinlog文件。my-replication提供了一种方便的方式来解析和处理binlog事件。 首先,我们需要安装my-replication库。可以使用pip来安装,命令为pip install my-replication。 然后,我们需要连接到MySQL数据库。可以使用my-replication中的BinLogStreamReader类来连接并读取binlog文件。你需要提供MySQL服务器的主机地址、用户名、密码等信息来建立连接。 接下来,我们可以使用BinLogStreamReader实例化一个对象,并传入需要读取的binlog文件的路径和文件名。 然后,我们可以使用for循环来逐个读取binlog事件。在循环内部,我们可以根据事件的类型来处理不同类型的事件,例如查询事件、插入事件、更新事件等。my-replication为每种类型的事件提供了相应的处理方法和属性。 最后,我们需要在循环结束后关闭BinLogStreamReader对象,并断开与MySQL数据库的连接。 利用Python的my-replication库读取MySQLbinlog文件可以帮助我们实现一些有趣和实用的功能,例如数据同步、数据备份、数据恢复等。同时,通过解析和处理binlog文件,我们还可以了解数据库的操作历史和变化。 总结来说,利用Python的my-replication库读取MySQLbinlog文件是一种方便的方式。我们只需几行代码就可以连接到MySQL数据库并读取binlog事件。这为我们处理和分析数据库的操作历史提供了很大的便利。 ### 回答3: 使用Python中的my-replication库可以轻松地读取MySQLbinlog。下面是一个简单的步骤来实现这一点: 1. 首先,确保你已经安装了Python和my-replication库。你可以使用pip命令来安装库:`pip install my-replication`。 2. 导入my-replication库:`from mysql import replication` 3. 创建一个BinlogStreamReader对象来读取binlog文件。需要提供MySQL服务器的相关信息,例如主机名、端口号、用户名和密码。下面是一个示例代码: ``` stream = replication.BinlogStreamReader( connection_settings={ "host": "localhost", "port": 3306, "user": "root", "passwd": "password" }, server_id=100, blocking=True ) ``` 在上述代码中,我们使用了本地主机和默认MySQL端口号3306,同时提供了root用户和相应的密码。 4. 接下来,我们可以使用stream对象来读取binlog事件。可以使用for循环迭代stream对象,获取每个事件,并处理它们。下面是一个简单的示例代码,将事件打印出来: ``` for binlog_event in stream: print(binlog_event) ``` 在这个示例中,我们只是简单地将每个binlog事件打印出来。你可以根据你的需求,在这个循环里处理binlog事件。 5. 最后,记得在结束时关闭stream对象,以释放资源:`stream.close()`。 通过以上步骤,你可以使用Python的my-replication库来读取MySQLbinlog,并且可以根据需要对每个binlog事件进行处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小安灬

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

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

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

打赏作者

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

抵扣说明:

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

余额充值