mysql binlog日志查询不出语句问题及解决

 更新时间:2024年01月18日 14:32:46   作者:DBA界的小学生  
这篇文章主要介绍了mysql binlog日志查询不出语句问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql binlog日志查询不出语句

当bin-log的模式设置为 row时

不仅日志长得快 并且查看执行的sql时 也稍微麻烦一点:

1.干扰语句多

2.生成sql的编码需要解码

binlog_format=row

直接mysqlbinlog出来的 文件

执行sql部分的sql显示为base64编码格式

固生成sql记录的时候 不能用常规的办法去生成 需要加上相应的参数才能显示出sql语句

--base64-output=decode-rows -v

例如:

/opt/MySQL/bin/mysqlbinlog --base64-output=decode-rows -v --start-date='2014-09-16 14:00:00' --stop-date='2014-09-16 14:20:00' /opt/mysql/log/mysql-bin.000017 >/opt/mysql_bak/mysqlbinlogsql_restore_2014091614.sql

mysql的binlog日志

查看和配置binlog

1、log_bin 是否开启binlog,指定日志文件路径

2、log_bin_basename 和 log_bin_index 日志文件基础名和索引名(*好像不能用来设置只是展示作用,我设置时时会报错无法启动服务)

3、binlog_format 日志格式

4、binlog_error_action 设置当binlog日志数据一致性遭到破坏或者复制操作停止时,服务器要做什么操作。有两个选项ABORT_SERVER 服务关闭(默认值), IGNORE_ERROR 忽略错误。

操作binglog日志的常用命令

1、show master logs; 或者 show binary logs; 查看所有binlog日志列表。

2、show master status; 查看master状态。

  • File 最新的一个binlog日志的编号名称
  • Position 最后一个操作事件pos结束点的值

3、flush logs; 刷新log日志文件,从当前时间开始产生一个新编号的binlog日志文件。

******每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;

4、reset master; 清空所有binlog日志

使用mysql自带的mysqlbinlog命令和grep命令 查看binlog

1、mysqlbinlog   【参数 】 【binlog文件】  

  • -d, --database=name        仅显示指定数据库的转储内容。
  • -o, --offset=#            跳过前N行的日志条目。
  • -r, --result-file=name        将输入的文本格式的文件转储到指定的文件。
  • -s, --short-form        使用简单格式。
  • --set-charset=name              在转储文件的开头增加'SET NAMES character_set'语句。
  • --start-datetime=name        日志的起始时间。
  • --stop-datetime=name        日志的截止时间。
  • -j, --start-position=#        日志的起始位置。
  • --stop-position=#        日志的截止位置。
  • --base64-outputbinlog        输出语句的base64解码 

分为三类:

默认是值auto ,仅打印base64编码的需要的信息,如row-based 事件和事件的描述信息。

  • never 仅适用于不是row-based的事件
  • decode-rows 配合--verbose选项一起使用解码行事件到带注释的伪SQL语句
  • -v,--verbose :显示statement模式带来的sql语句

***解析mixed格式binlog需要使用 --base64-output=DECODE-ROWS --verbose或--base64-output=DECODE-ROWS -v 来解析

2、grep '【关键字】'  【参数】

grep是一个强大的文本搜索工具命令,用于查找文件中符合指定格式的字符串,支持正则表达式。

grep命令常用参数说明

  • -A 除了显示符合条件的那一行之外,并显示该列之后的指定行的内容内容。
  • -B 除了显示符合条件的那一行之外,并显示该列之前的指定行的内容内容。
  • -c 计算符合结果的行数。
  • -i 忽略字符大小写
  • -v 反向查找
  • -e 按指定字符串查找
  • -E 按指定字符串指定的正则查找
  • -n 在显示符合条件的那一行前,标识出该行的行数标号。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈mysql的sql_mode可能会限制你的查询

    浅谈mysql的sql_mode可能会限制你的查询

    本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数group by的规则,下面就来介绍一下解决方法,感兴趣的可以了解一下
    2025-03-03
  • MySQL 从一张表update字段到另外一张表中

    MySQL 从一张表update字段到另外一张表中

    使用MySQL 4.0版或更高更新您可以通过加入两个或多个表一起一表;通过加入两个表连同您可以更新一个表的记录在相关领域的总部设在另一个表。
    2015-09-09
  • MySQL进阶SELECT语法篇

    MySQL进阶SELECT语法篇

    从这个基本语法可以看出,最简单的SELECT语句是SELECT select_list,实际上利用这个最简单的SELECT语句,你也可以完成许多你期待的功能,首先你能利用它进行MySQL所支持的任何运算,例如:SELECT 1+1,它将返回2;其次,你也能利用它给变量赋值,而在PHP中,运用SELECT语句的这种功能,你就可以自由地运用MySQL的函数为PHP程序进行各种运算,并赋值给变量。在很多的时候,你会发现MySQL拥有许多比PHP更为功能强大的函数。
    2008-04-04
  • MySQL中配置文件my.cnf因权限问题导致无法启动的解决方法

    MySQL中配置文件my.cnf因权限问题导致无法启动的解决方法

    这篇文章主要给大家介绍了关于MySQL中配置文件my.cnf因权限问题导致无法启动的解决方法,该无法启动的错误提示代码是:World-writable config file '/etc/my.cnf' is ignored,文中给出了详细的解决方法,需要的朋友们下面来一起看看吧。
    2017-06-06
  • mysql使用instr达到in(字符串)的效果

    mysql使用instr达到in(字符串)的效果

    本文主要介绍了mysql使用instr达到in(字符串)的效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 云服务器安装mysql的实现步骤

    云服务器安装mysql的实现步骤

    在当前的互联网时代,云计算已经成为重要的平台支撑,本文就来介绍一下云服务器安装mysql的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • MySQL中int最大值深入讲解

    MySQL中int最大值深入讲解

    这篇文章主要给大家介绍了关于MySQL中int最大值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • MySQL查询表中重复数据的实现

    MySQL查询表中重复数据的实现

    在数据库中,我们经常需要查询重复字段来确保数据的准确性,如果数据中有重复字段,则可能会导致查询结果错误,本文就想详细的介绍了MySQL查询表中重复数据,感兴趣的可以了解一下
    2023-08-08
  • Mysql数据库使用concat函数执行SQL注入查询

    Mysql数据库使用concat函数执行SQL注入查询

    这篇文章主要介绍了Mysql数据库使用concat函数执行SQL注入查询,concat函数在SQL注入查询中会有意想不到的作用,本文就起讲解它的使用,需要的朋友可以参考下
    2015-04-04
  • mysql中datetime字段建立索引并比较大小详解

    mysql中datetime字段建立索引并比较大小详解

    MySQL数据库常用的时间类型有timestamp和datetime,两者主要区别是占用存储空间长度不一致、可存储的时间也有限制,下面这篇文章主要给大家介绍了关于mysql中datetime字段建立索引并比较大小的相关资料,需要的朋友可以参考下
    2022-12-12

最新评论