线上处理问题的时候经常遇到业务说写入了但是数据不对,这种情况八成是业务改了之后又改过来了。但是我们需要证据,下面我们就说说简单的binlog分析

工具:mysqlbinlog

#-vvv显示明文sql内容方便查阅
#start-datetime分析开始时间
#stop-datatime分析结束时间
#-d数据库名称
#mysql-bin.000001 二进制文件
$mysqlbinlog -vvv --start-datetime='2018-11-15 18:47:00' --stop-datetime='2018-11-15 18:59:01' -uxxxxx --socket=/export/data/mysql/tmp/mysql.socket --port=3358  -d xxxxx mysql-bin.000001 > 1.txt
 
#通过执行以上命令就可以获取这个时间段里面的binlog信息

以下是部分解析出来的内容,文件里面有时间戳,可以根据时间戳就判断某个操作是否执行

at 590290541
#181115 18:47:00 server id 23083726  end_log_pos 590290606 CRC32 0x644652ac     GTID    last_committed=210987   sequence_number=210988  rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'd2eabe2a-d5cb-11e8-a72a-fa169c5fc76e:191960'/*!*/;
at 590290606
#181115 18:47:00 server id 23083726  end_log_pos 590290695 CRC32 0xcdd93a59     Query   thread_id=95124 exec_time=0 error_code=0
SET TIMESTAMP=1542278820/*!*/;
SET @@session.pseudo_thread_id=95124/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1073741824/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.time_zone='SYSTEM'/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
at 590290695
#181115 18:47:00 server id 23083726  end_log_pos 590291436 CRC32 0xf28f1bd8     Rows_query
insert into xxxxx(do_no, group_key, wave_strategy, auto_able, expect_pick_time, partitions, loc_code_list, priority, wms_sku_list, merge_no, weight, volume, area_id, area_name, latitude, longitude, wh_id, tenant_id, uuid, create_time, wh_name, wh_code, expect_arrive_starttime, expect_arrive_endtime, do_create_date, genera_source, extend_data) values ('65000372273101''sell_default', 0, 1, '2018-11-15 19:18:00'null'[\"36518\",\"40001\"]', 5, '[1007116,1002291,1011345]'null, 4.580, 14178.416, 200030, '褐石园区''40.016893''116.322341', 131231, 1, '65000372273101-1', now(), '五彩城店''WCC''2018-11-15 19:30:00''2018-11-15 20:15:00''2018-11-15 18:47:00''AI''{\"workFood\":\"1\"}')
at 590291436
#181115 18:47:00 server id 23083726  end_log_pos 590291571 CRC32 0x3a2c02ea     Table_map: `xxxxxx`.`wms_ai_do` mapped to number 262
at 590291571
#181115 18:47:00 server id 23083726  end_log_pos 590291874 CRC32 0x8f14b7cb     Write_rows: table id 262 flags: STMT_END_F
 

binlog分析方法的更多相关文章

  1. Android APP性能分析方法及工具

    近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借 ...

  2. Linux下java进程CPU占用率高分析方法

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  3. Mysql 死锁的详细分析方法

    用数据库的时候,偶尔会出现死锁,针对我们的业务系统,出现死锁的直接结果就是系统卡顿.客户找事儿,所以我们也在想尽全力的消除掉数据库的死锁.出现死锁的时候,如果只是想解锁,用show full proc ...

  4. 面向对象分析方法(I)

    找出最关键的一些业务场景:一般通过动词来寻找,比如招聘系统中,一个应聘人投递一个职位就是一次应聘,应聘就是一个业务场景:一个学生参加某门课的考试,那么考试就是一个业务场景:一个学生去图书馆借书,那么借 ...

  5. Linux内核源码分析方法

    一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...

  6. 删除binlog的方法

    不知道你有没有为mysql的binlog占用大量磁盘感到无奈,my.cnf里binlog的size可以设置多大做分割,但没有看到删除的配置,在mysql里show了一下variables, mysql ...

  7. Java内存溢出分析方法(Eclipse Memory Analyzer 使用简单入门)

    转载至:http://outofmemory.cn/java/jvm/OutOfMemoryError-analysis 工具 安装Memory Analyse Tools(MAT) 工具, 可以直接 ...

  8. mysql中删除binlog的方法?mysql中如何删除binlog?

    需求描述: 在mysql中如何删除binlog,因为随着数据库的运行,mysql中产生的binlog会越来越大,有可能把磁盘撑爆了,所以记录下删除 binlog的方法. 操作过程: 1.通过系统参数控 ...

  9. Linux内核源代码分析方法

    Linux内核源代码分析方法   一.内核源代码之我见 Linux内核代码的庞大令不少人"望而生畏",也正由于如此,使得人们对Linux的了解仅处于泛泛的层次.假设想透析Linux ...

随机推荐

  1. Java 关于finally、static

    论坛上看到的两道题目,如下: //为啥运行结果是1 0 不是 0 0呢 谁能解释下啊 public class FinallyDemo { static int value = 0; static i ...

  2. e642. 处理拖放事件

    The drop target in this example only accepts dropped String objects. A drop target must implement Dr ...

  3. e558. 在Applet中多图片交互显示

    This is the simplest applet to animate an array of images. In practice, you should use double-buffer ...

  4. 用X264编码以后的H264数据

    输入的数据准备好了,编码后的数据都在x264_nal_t的数组.我这里设置的参数是Baseline Profile,所以编码后没有B帧,将编码后的数据保存分析后发现,第一次编码的时候会有4个NAl,分 ...

  5. 【Java面试题】35 List, Set, Map是否继承自Collection接口?

    Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法. Set 和List 都继承了Conllection:Set具有与Collection完全一样的接 ...

  6. MathType使用中的四个小技巧

    MathType是一种比较常见的数学公式编辑器,常常与office搭配着使用,我们在使用的时候有一些要注意的小技巧,下面我们就来给大家介绍介绍MathType使用中的四个小技巧? 技巧一:调整工具栏显 ...

  7. java编写的2048程序

    import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util ...

  8. Dubbo(四) -- telnet命令

    一.telnet的作用 当dubbo服务(即生产者)发布之后,我们可以通过telnet命令来来进行调试和管理,以及跟踪服务调用的次数. 注意:2.0.5以上版本服务提供端口支持telnet命令,协议一 ...

  9. Dubbo(一) -- 初体验

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架. 一.Dubbo出现的背景 随着互联网的发展,网站应用的规模不断扩大,常规的 ...

  10. UE4修改自Rama的UDP通信蓝图插件

    UE4.15没有提供蓝图UDP的组件,可以在网上找到一个ID叫Rama写的源代码,我把它封装成插件了(MyUdpPlugin),方便在各个UE4版本工程中使用UDP通信. 使用方式: 1.在自己的工程 ...