一.概述

由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具。
    mysqlbinlog的语法如下:
    mysqlbinlog [options] log-files log-files2...

    其中options有很多选项,常用如下:

选项

说明

-d, --database=name

指定数据库名称,只列出指定的数据库相关操作。

-o, --offset=#

忽略掉日志中的前n行命令

-r, --result-file=name

将输出的文本格式日志输出到指定文件

-s,--short-form

显示简单格式,省略掉一些信息

--set--charset=char-name

在输出为文本格式时,在文件第一行加上set names char-name.

-- start-datetime=name-stop-datetime=name

指定日期间隔内的所有日志

--start-position=# --stop-position=#

指定位置间隔内的所有日志

  1.1 开启binlog日志

    默认情况下是未打开binlog日志,可以通过以下二种方式查看:

mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging
--或者这样查看
mysql> show variables like '%log_bin%    

    

  开启binlog日志,修改my.cnf文件重启mysql服务,如下所示:
    
   再次查询binlog日志状态:
    
    

二. 使用mysqlbinlog查看日志

--先在test表中插入一条数据退出。
mysql> insert into a values('testbinlog');
-- 查看binlog位置
[root@hsr mysql]# cd /var/lib/mysql
[root@hsr mysql]# ls
mysql-bin. mysql-bin.index

  2.1 使用mysqlbinlog查看日志 不加任何options参数

[root@hsr ~]# cd /usr/local/mysql/bin
[root@hsr bin]# ./mysqlbinlog /var/lib/mysql/mysql-bin.

    

        上面的日志文件除了创建表和删除表的sql外,操作数据库的语句都加密了。

  2.2 使用参数"--base64-output=decode-row -v"查看具体的sql语句,如下命令

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.

    
    上图中 at 291是插入语句的开始位置, at 384是插入语句的结束位置。如果后续该表数据丢失,可以根据这两个地方执行恢复。也可以根据开始时间和结束时间来恢复,后面再讲日志时具体介绍。

  2.3  加-d选项,将只显示对test数据库的操作日志

[root@hsr bin]# ./mysqlbinlog   /var/lib/mysql/mysql-bin.000001 -d test

  2.4  加-o选项, 忽略掉日志中的前n个操作。演示下

-- 插入三条数据
INSERT INTO a VALUES('testbinlog2')
INSERT INTO a VALUES('testbinlog3')
INSERT INTO a VALUES('testbinlog4') [root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001 -d test -o 14

    
    上图显示日志生成后,从at 898行开始显示。 14个操作代表:日志显示跳过14个at。
  2.5 加-r选项
    将输出的文本格式日志输出到指定文件,下面将文件结果输出到文件resultfile中。

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin. -r resultfile
[root@hsr bin]# more resultfile

    

  2.6 加-s 将内容进行简单显示

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin. -s

  

    如上图所示,简单显示后,没有了详细的sql语句。
  2.7 加"--start-datetime--stop-datetime"显示9:00 ~12:00之间的日志

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.  
--start-datetime='2018/08/30 09:00:00' --stop-datetime='2018/08/30 12:00:00'

   
    如上图所示:最后显示的时间截是1535600091, 转换后是2018-08-30 11:34:51。 开始和结束日期可以只写一个。
  2.8 加"--start-position=#和--stop-position=#" 和日期范围类似,不过更精确

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.  --start-position=

    
  最后官网文档 mysqlbinlog
  

mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)的更多相关文章

  1. mysqlbinlog(日志管理工具)

    mysqlbinlog用于处理二进制的日志文件,如果想要查看这些日志文件的文本内容,就需要使用mysqlbinlog工具. 1.mysqlbinlog命令的语法 shell > mysqlbin ...

  2. mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)

    一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...

  3. mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)

    一. xtrabackup 选项说明 在操作xtrabackup备份与恢复之前,先看下该工具的选项,下面记录了xtrabackup二进制文件的部分命令行选项,后期把常用的选项在补上.点击查看xtrab ...

  4. mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)

    一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存 ...

  5. mysql 开发进阶篇系列 55 权限与安全(安全事项 )

    一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...

  6. mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)

    1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间 ...

  7. Java程序员须知的七个日志管理工具(转)

    Splunk vs. Sumo Logic vs. LogStash vs. GrayLog vs. Loggly vs. PaperTrails vs. Splunk>Storm 英文原文:T ...

  8. Java程序员须知的七个日志管理工具

    本文由 ImportNew - 赖 信涛 翻译自 takipiblog.欢迎加入翻译小组.转载请见文末要求. Splunk vs. Sumo Logic vs. LogStash vs. GrayLo ...

  9. ABP(现代ASP.NET样板开发框架)系列之8、ABP日志管理

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

随机推荐

  1. python note 02 格式化与判断、字符串转换

    1.格式化输出% %s %d name = input ('请输入姓名:') age = input ('请输入年龄:') height = input ('请输入身高:') msg = " ...

  2. Centos7下安装Docker[z]

    [z]https://www.cnblogs.com/qgc1995/p/9553572.html https://yq.aliyun.com/articles/691610?spm=a2c4e.11 ...

  3. 4412 uboot启动分析

    感谢sea1105, https://blog.csdn.net/sea1105/article/details/52142772 在学习过程中,由于tiny4412资料太过于少,因此参考210的视屏 ...

  4. JavaScript RegExp.$1

    我们不生产代码 我们只是代码的搬运工 JavaScript RegExp.$1 RegExp 是javascript中的一个内置对象.为正则表达式. RegExp.$1是RegExp的一个属性,指的是 ...

  5. 图片利用 new Image()预加载原理 和懒加载的实现原理

    二:预加载和懒加载的区别 预加载与懒加载,我们经常经常用到,这些技术不仅仅限于图片加载,我们今天讨论的是图片加载: 图片预加载:顾名思义,图片预加载就是在网页全部加载之前,提前加载图片.当用户需要查看 ...

  6. 74.CocoaPods安装和使用教程

    CocoaPods安装和使用教程  Code4App 原创文章.转载请注明出处:http://code4app.com/article/cocoapods-install-usage 第一: Coco ...

  7. django的简单原理

    一.自定义客户端和服务端的请求响应 1.客户端打开url,向服务器发出请求 2.服务端用socket写一个py,用于接收请求和做出响应 3.服务端接收请求 4.服务端模拟HTTP协议做出响应,状态行为 ...

  8. C#语言不常用语法笔记

    只看过3天C#语法书,了解个大概,与C++等不同之处,或者看开源遇到一些奇异用法,记录一下,脑子不够用的情况下,还是记笔记靠谱. ==================== 顺便吐槽下,这年头得会各种编 ...

  9. visual studio 2013怎样快速查看代码函数关系--代码图

    可以发现没有调试运行代码时是无法查看代码图的,可以在某行加一个断点,如下图,并开始debug调试: 这时,就会在代码调试工具栏看到代码图按钮,点击它: 右边就会出现代码图了: 这下就方便多了. 不仅适 ...

  10. 支持复制粘贴word图片的文本编辑器

    下载并打开基于PHP环境的工程: 运行: 尝试使用文档复制后粘贴进来:   通过粘贴后,文档以及图片被粘贴进来了,看看html代码: 由此可看出图片全部使用img标签统一. 看看文档图片被放置在哪了: ...