首页 > 数据库 >MyFlash使用示例——美团点评的开源MySQL闪回工具安装及使用示例

MyFlash使用示例——美团点评的开源MySQL闪回工具安装及使用示例

时间:2024-09-20 13:51:51浏览次数:11  
标签:binlog 闪回 示例 -- 美团 指定 回滚 flashback

下载及安装

我已经将二进制安装包上传至网盘,点击如下链接进行下载——
链接:https://pan.baidu.com/s/1RzuHv6nDiAVMP7yk03bdNg?pwd=jtua
提取码:jtua

  • 将如下两个二进制文件拷贝至Linux系统PATH路径下
  • 将 mysqlbinlong20160408 重命名为 mysqlbinlog
    在这里插入图片描述

1. How to use

cd binary
./flashback --help

Usage:
  flashback [OPTION...]

Help Options:
  -?, --help                  Show help options

Application Options:
  --databaseNames             databaseName to apply. if multiple, seperate by comma(,)
  --tableNames                tableName to apply. if multiple, seperate by comma(,)
  --start-position            start position
  --stop-position             stop position
  --start-datetime            start time (format %Y-%m-%d %H:%M:%S)
  --stop-datetime             stop time (format %Y-%m-%d %H:%M:%S)
  --sqlTypes                  sql type to filter . support INSERT, UPDATE ,DELETE. if multiple, seperate by comma(,)
  --maxSplitSize              max file size after split, the uint is M
  --binlogFileNames           binlog files to process. if multiple, seperate by comma(,)
  --outBinlogFileNameBase     output binlog file name base
  --logLevel                  log level, available option is debug,warning,error
  --include-gtids             gtids to process
  --exclude-gtids             gtids to skip

2. Parameter explantion

下面的这些参数是可以任意组合的。

  • 1.databaseNames

    指定需要回滚的数据库名。多个数据库可以用“,”隔开。如果不指定该参数,相当于指定了所有数据库。

  • 2.tableNames

    指定需要回滚的表名。多个表可以用“,”隔开。如果不指定该参数,相当于指定了所有表。

  • 3.start-position

    指定回滚开始的位置。如不指定,从文件的开始处回滚。请指定正确的有效的位置,否则无法回滚

  • 4.stop-position

    指定回滚结束的位置。如不指定,回滚到文件结尾。请指定正确的有效的位置,否则无法回滚

  • 5.start-datetime

    指定回滚的开始时间。注意格式必须是 %Y-%m-%d %H:%M:%S。 如不指定,则不限定时间

  • 6.stop-datetime

    指定回滚的结束时间。注意格式必须是 %Y-%m-%d %H:%M:%S。 如不指定,则不限定时间

  • 7.sqlTypes

    指定需要回滚的sql类型。目前支持的过滤类型是INSERT, UPDATE ,DELETE。多个类型可以用“,”隔开。

  • 8.maxSplitSize

    一旦指定该参数,对文件进行固定尺寸的分割(单位为M),过滤条件有效,但不进行回滚操作。该参数主要用来将大的binlog文件切割,防止单次应用的binlog尺寸过大,对线上造成压力

  • 9.binlogFileNames

    指定需要回滚的binlog文件,目前只支持单个文件,后续会增加多个文件支持

  • 10.outBinlogFileNameBase

    指定输出的binlog文件前缀,如不指定,则默认为binlog_output_base.flashback

  • 11.logLevel

    仅供开发者使用,默认级别为error级别。在生产环境中不要修改这个级别,否则输出过多

  • 12.include-gtids

    指定需要回滚的gtid,支持gtid的单个和范围两种形式。

  • 13.exclude-gtids

    指定不需要回滚的gtid,用法同include-gtids

3. example

1.回滚整个文件

./flashback --binlogFileNames=haha.000041

./mysqlbinlog binlog_output_base.flashback | mysql -h<host> -u<user> -p

2.回滚该文件中的所有insert语句

./flashback  --sqlTypes='INSERT' --binlogFileNames=haha.000041

./mysqlbinlog binlog_output_base.flashback | mysql -h<host> -u<user> -p

3.回滚大文件

回滚
./flashback --binlogFileNames=haha.000042

切割大文件
./flashback --maxSplitSize=1 --binlogFileNames=binlog_output_base.flashback

应用
mysqlbinlog binlog_output_base.flashback.000001 | mysql -h<host> -u<user> -p

mysqlbinlog binlog_output_base.flashback.<N> | mysql -h<host> -u<user> -p

4. 总结

1.如果binlog日志存在,那么可以使用MyFlash将数据库闪回到任意时刻。

2.可以对整个实例进行闪回、也可以对某个database,或者是某张表进行闪回,还可以指定某种DML操作进行闪回。

3.MyFlash闪回也有一定的局限性。在闪回时,指定出闪回的开始和结束时间/位置依然是最为重要的,但使用flashback是无法查看二进制日志的,意味着在使用MyFlash时,要么预估开始结束时间,进行不精确的闪回,要么使用mysqlbinlog或binlog2sql来分析日志,得到精确的开始结束时间再闪回。

4.从测试来看,binlog2sql似乎比MyFlash更好用,但是为什么在已经有binlog2sql的基础上,还要开发MyFlash呢?最主要还是MyFlash性能非常好,闪回速度非常快,美团测试报告中,使用各个工具对约100万条数据进行闪回的测试如下(原文点这):
在这里插入图片描述


links:

标签:binlog,闪回,示例,--,美团,指定,回滚,flashback
From: https://blog.csdn.net/a772304419/article/details/142377970

相关文章

  • 《华为三台交换机堆叠的详细命令行配置示例》
    华为三台交换机堆叠的详细命令行配置示例目录目录华为三台交换机堆叠的详细命令行配置示例 在Switch1(作为主交换机)上的配置: 1. 进入系统视图2. 开启堆叠功能并设置堆叠域编号(假设为10)3. 设置堆叠优先级(假设为200,数值越大越优先成为主交换机)4. 配置堆叠端口 ......
  • 华为AC+AP/AP有线口配置有线无线用户统一接入示例
    华为AC+AP/AP有线口配置有线无线用户统一接入示例文章目录华为AC+AP/AP有线口配置有线无线用户统一接入示例前言一、网络拓扑和网段划分二、实验配置1.SW1配置:2.SW2配置:3.AC配置:验证前言在实际的使用场景中,有线网络和无线网络环境通常是共同存在的。例如在办公区......
  • 示例 25: 动态表单生成
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>DynamicForm</title>......
  • JavaScript 的引入方式【示例】
    JavaScript的引入方式主要有以下几种:1.内联JavaScript直接在HTML标签中使用事件属性编写JavaScript代码。例如:<buttontype="button"onclick="alert('内联JavaScript')">Clickme</button>2.内嵌JavaScript将JavaScript代码写在HTML文件的 <script>......
  • 基于SpringBoot的旅游信息管理系统+LW示例参考
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 基于SpringBoot+Vue的医疗服务管理系统+原生微信小程序+LW示例参考
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 示例 26: 用户反馈表单
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>UserFeedbackForm</tit......
  • 使用 PowerShell 管理 DNS 服务器,你可以执行多种操作,如添加、删除和修改 DNS 记录,以及
    使用PowerShell管理DNS服务器,你可以执行多种操作,如添加、删除和修改DNS记录,以及管理DNS区域。以下是一些常用的cmdlet示例:查看所有DNS区域powershellCopyCodeGet-DnsServerZone添加新的DNS区域powershellCopyCodeAdd-DnsServerPrimaryZone-Name"yourdomai......
  • go上下文操作的简单示例
    在Gin框架中,ctx是一个上下文对象,它包含了处理HTTP请求的所有信息和方法。以下是使用ctx的一个简单代码示例,展示了一个HTTP服务器的基本处理流程:packagemainimport( "github.com/gin-gonic/gin" "net/http")//loginHandler处理登录请求的控制器函数funclogi......
  • c#中使用lock创建一个简单的队列示例
    一.背景:在我威某人的浅薄理解下,队列主要解决的问题,确保某些场景可以按顺寻处理避免混乱和延误并且可以按优先级入队处理,比较常见的场景有以下这五点:1.订单处理和物流管理2.客户服务和支持3.数据处理和分析4.任务调度和执行5.消息传递和通信二.实现:1.首先我们创建一个简单......