[MySQL]mysql binlog回滚数据[通俗易懂]

[MySQL]mysql binlog回滚数据[通俗易懂]1.先开启binlog log-bin = /var/log/mysql/mysql_bin #binlog日志文件,以mysql_bin开头,六个数字结尾的文件:mysql_bin.000001,并

[MySQL]mysql binlog回滚数据

1.先开启binlog

log-bin = /var/log/mysql/mysql_bin #binlog日志文件,以mysql_bin开头,六个数字结尾的文件:mysql_bin.000001,并且会将文件存储在相应的xxx/xxx路径下,如果只配置mysql_bin的话默认在C:ProgramDataMySQLMySQL Server 5.7Data下;
binlog_format = ROW #binlog日志格式,默认为STATEMENT:每一条SQL语句都会被记录;ROW:仅记录哪条数据被修改并且修改成什么样子,是binlog开启并且能恢复数据的关键;
expire_logs_days= 10 #binlog过期清理时间;
max_binlog_size = 100m #binlog每个日志文件大小;
binlog_cache_size = 4m #binlog缓存大小;
max_binlog_cache_size = 512m #最大binlog缓存大小。
service mysql restart #重启一下

2.安装binlog2sql的python代码
https://github.com/danfengcao/binlog2sql

apt-get install python-pip
git clone https://github.com/danfengcao/binlog2sql.git && cd binlog2sql
cd binlog2sql
pip install -r requirements.txt

3.测试在一张表里删除了数据和更新了数据以后,看看日志目录里binlog的日志生成情况,例如:

[MySQL]mysql binlog回滚数据[通俗易懂]

 

 

4.进入mysql查看一下开始和结束的pos位置,第一个框是删除,下面的是更新,开始位置和结束位置219–498     563—881

[MySQL]mysql binlog回滚数据[通俗易懂]

 

 

 show binlog events in “mysql-bin.000352”

 

5.用binlog2sql打印出sql语句和逆向回滚的sql语句,保存并导入

python binlog2sql.py -h127.0.0.1 -P3306 -uroot -p”xxxx” –start-file mysql-bin.000352  –flashback

两条sql就可以重新执行一下了

UPDATE `my_test`.`user` SET `UPDATETIME`=”2019-04-08 10:57:06″, `level`=1, `UPDATETIME1`=”2019-04-08 10:57:06″, `extend_id`=109999, `path`=”0/1/”, `id`=0 WHERE `UPDATETIME`=”2020-02-10 18:11:09″ AND `level`=1 AND `UPDATETIME1`=”2020-02-10 18:11:09″ AND `extend_id`=109999 AND `path`=”0/1/” AND `id`=2 LIMIT 1; #start 498 end 797 time 2020-02-10 18:11:09
INSERT INTO `my_test`.`user`(`UPDATETIME`, `level`, `UPDATETIME1`, `extend_id`, `path`, `id`) VALUES (“2019-04-08 10:57:06”, 4, “2019-04-08 10:57:06”, 109999, “0/1/2/4/6/”, 0); #start 4 end 422 time 2020-02-10 17:40:14

 

增加开始和结束位置

python binlog2sql.py -h127.0.0.1 -P3306 -uroot -p”XXX” –start-file mysql-bin.000352  –flashback  –start-pos 219 –end-pos 498

[MySQL]mysql binlog回滚数据[通俗易懂]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10029.html

(0)
上一篇 2023-01-27
下一篇 2023-01-27

相关推荐

  • 让用户输入的神奇函数

    让用户输入的神奇函数input()是Python中用于获取用户输入的函数,它会阻塞程序的执行,直到用户输入完毕并回车后才会继续执行程序。最基本的使用方法就是直接调用这个函数,然后等待用户输入:

    2024-02-28
    45
  • flyway升级异常「建议收藏」

    flyway升级异常「建议收藏」部署项目异常 flyway作为数据库版本管理工具,但是最近项目部署时得到如下异常: org.flywaydb.core.internal.license.FlywayEditionUpgradeRe…

    2023-02-04
    110
  • Python中的os.mkdir recursive函数:快速递归创建文件夹

    Python中的os.mkdir recursive函数:快速递归创建文件夹在Python中,os.mkdir()函数可以用来创建单个文件夹,但当我们需要创建多层嵌套的文件夹时,os.mkdir()就无法胜任。这时候,os.mkdir()函数中的recursive参数就派上用场了。接下来,我们将从多个方面详细阐述Python中的os.mkdir recursive函数。

    2024-02-12
    40
  • 迁移Report Server DataBase时遇到的坑

    迁移Report Server DataBase时遇到的坑1.项目背景 由于历史原因,公司部分系统的Report是基于SQL Server Report Service搭建的,且Reporting Services 和Report Server DataBa

    2023-04-17
    103
  • Python的字符串计数方法应用与示例

    Python的字符串计数方法应用与示例在Python中,字符串计数是一个非常常见的操作。Python内置的字符串方法和模块中提供了各种字符串计数的方法,包括计算字符串中某个字符出现的次数、计算一个字符串在另一个字符串中出现的次数、计算字符串中某个子串出现的次数等。

    2024-02-05
    43
  • Python生成文件的实现

    Python生成文件的实现在Python编程中,我们可能需要生成文件,通常这些文件需要包含各种信息,比如文本、图形、数据等。本文将介绍如何使用Python生成文件,包括文本文件、CSV文件、Excel文件以及JSON文件等。

    2024-04-16
    34
  • MySQL8自增主键变化[亲测有效]

    MySQL8自增主键变化[亲测有效]MySQL8自增主键变化 醉后不知天在水,满船清梦压星河。 一、简述 MySQL版本从5直接大跃进到8,相信MySQL8一定会有很多令人意想不到的改进,如果不想只会CRUD可以看看。 比如系统表引擎的

    2023-05-12
    99
  • mysql高级用法_mysql数据库有什么用

    mysql高级用法_mysql数据库有什么用一、事物 二、分库 三、分表

    2023-02-13
    107

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注